- Fixed issue with family device not being able to see todos of the family

- Fixed issue with todos not being able to update on family device
This commit is contained in:
Dejan
2024-12-30 20:08:06 +01:00
parent f7dd31cae9
commit 04d865cce9
2 changed files with 25 additions and 8 deletions

View File

@ -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 }) => {
</View>
{sortedItems.map((item) => (
<ToDoItem key={item.id} item={item} is7Days={false} />
<ToDoItem
key={item.id}
item={item}
is7Days={false}
localTodos={localTodos}
setLocalTodos={setLocalTodos}/>
))}
</View>
);
@ -235,6 +250,8 @@ const SingleUserChoreList = ({ user }: { user: UserProfile }) => {
key={item.id}
item={item}
is7Days={dateKey === "Next 7 Days"}
localTodos={localTodos}
setLocalTodos={setLocalTodos}
/>
))}
</View>
@ -278,7 +295,7 @@ const SingleUserChoreList = ({ user }: { user: UserProfile }) => {
{expandNoDate &&
noDateToDos
.sort((a, b) => Number(a.done) - Number(b.done))
.map((item) => <ToDoItem key={item.id} item={item} />)}
.map((item) => <ToDoItem key={item.id} item={item} localTodos={localTodos} setLocalTodos={setLocalTodos} />)}
</View>
)}

View File

@ -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)