diff --git a/components/pages/(tablet_pages)/chores/SingleUserChoreList.tsx b/components/pages/(tablet_pages)/chores/SingleUserChoreList.tsx index 38f246f..f05bfed 100644 --- a/components/pages/(tablet_pages)/chores/SingleUserChoreList.tsx +++ b/components/pages/(tablet_pages)/chores/SingleUserChoreList.tsx @@ -1,5 +1,5 @@ import { View, Text, TouchableOpacity, Icon } from "react-native-ui-lib"; -import React, { useState } from "react"; +import React, {useEffect, useState} from "react"; import { useToDosContext } from "@/contexts/ToDosContext"; import { addDays, @@ -20,7 +20,7 @@ const groupToDosByDate = (toDos: IToDo[]) => { const dateB = b.date === null ? new Date() : b.date; return dateA - dateB; }); - + return sortedTodos.reduce( (groups, toDo) => { let dateKey; @@ -44,7 +44,7 @@ const groupToDosByDate = (toDos: IToDo[]) => { today.setHours(0, 0, 0, 0); return date < today; }; - + if (isOverdue(toDo.date) && !toDo.done) { dateKey = "Overdue"; } else if (toDo.date === null || isToday(toDo.date)) { @@ -95,8 +95,18 @@ const filterToDosByUser = (toDos: IToDo[], uid: string | undefined) => { const SingleUserChoreList = ({ user }: { user: UserProfile }) => { const { toDos } = useToDosContext(); - const userTodos = filterToDosByUser(toDos, user.uid); - const groupedToDos = groupToDosByDate(userTodos); + const [localTodos, setLocalTodos] = useState([]); + const [groupedToDos, setGroupedToDos] = useState([]); + + useEffect(() => { + const userTodos = filterToDosByUser(toDos, user.uid); + setLocalTodos(userTodos); + }, [toDos, user]); + + useEffect(() => { + const grouped = groupToDosByDate(localTodos); + setGroupedToDos(grouped); + }, [localTodos]); const [expandedGroups, setExpandedGroups] = useState<{ [key: string]: boolean; @@ -186,7 +196,12 @@ const SingleUserChoreList = ({ user }: { user: UserProfile }) => { {sortedItems.map((item) => ( - + ))} ); @@ -235,6 +250,8 @@ const SingleUserChoreList = ({ user }: { user: UserProfile }) => { key={item.id} item={item} is7Days={dateKey === "Next 7 Days"} + localTodos={localTodos} + setLocalTodos={setLocalTodos} /> ))} @@ -278,7 +295,7 @@ const SingleUserChoreList = ({ user }: { user: UserProfile }) => { {expandNoDate && noDateToDos .sort((a, b) => Number(a.done) - Number(b.done)) - .map((item) => )} + .map((item) => )} )} diff --git a/hooks/firebase/useGetTodos.ts b/hooks/firebase/useGetTodos.ts index f2f1ad5..481e846 100644 --- a/hooks/firebase/useGetTodos.ts +++ b/hooks/firebase/useGetTodos.ts @@ -11,7 +11,7 @@ export const useGetTodos = () => { queryFn: async () => { let snapshot; - if (profileData?.userType === ProfileType.PARENT) { + if (profileData?.userType === ProfileType.PARENT || profileData?.userType === ProfileType.FAMILY_DEVICE) { snapshot = await firestore() .collection("Todos") .where("familyId", "==", profileData?.familyId)