From e113d78575a2df8d464e39d7d1a528d1f102b272 Mon Sep 17 00:00:00 2001 From: Dejan Date: Wed, 20 Nov 2024 20:24:37 +0100 Subject: [PATCH] - Added todo filter option for Everyone to show all the family's tasks --- components/pages/todos/ToDosList.tsx | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/components/pages/todos/ToDosList.tsx b/components/pages/todos/ToDosList.tsx index 22a33c4..45bc481 100644 --- a/components/pages/todos/ToDosList.tsx +++ b/components/pages/todos/ToDosList.tsx @@ -8,9 +8,14 @@ import {IToDo} from "@/hooks/firebase/types/todoData"; import DropdownIcon from "@/assets/svgs/DropdownIcon"; import {Dropdown} from "react-native-element-dropdown"; import {useGetFamilyMembers} from "@/hooks/firebase/useGetFamilyMembers"; -import {ProfileType, useAuthContext} from "@/contexts/AuthContext"; +import {useAuthContext} from "@/contexts/AuthContext"; import {StyleSheet} from "react-native"; +const FILTER_OPTIONS = { + ME: "Me", + EVERYONE: "Everyone" +}; + const groupToDosByDate = (toDos: IToDo[]) => { let sortedTodos = toDos.sort((a, b) => a.date - b.date); return sortedTodos.reduce( @@ -75,13 +80,16 @@ const groupToDosByDate = (toDos: IToDo[]) => { const resolveFilterOptions = (members, user) => { - return members?.map((member) => { + let options = members?.map((member) => { let label = member?.firstName; if (member.uid === user?.uid) { - label = "Me"; + label = FILTER_OPTIONS.ME; } - return (member.uid !== user?.uid || member.profileType !== ProfileType.PARENT) && {value: member?.uid, label: label}; + return {value: member?.uid, label: label}; }); + options.push({value: FILTER_OPTIONS.EVERYONE, label: FILTER_OPTIONS.EVERYONE}) + + return options; } const ToDosList = ({ isSettings }: { isSettings?: boolean }) => { @@ -110,10 +118,15 @@ const ToDosList = ({ isSettings }: { isSettings?: boolean }) => { useEffect(() => { if (toDos && selectedFilter) { - let filtered = toDos?.filter((todo) => todo.assignees?.includes(selectedFilter.value) || todo.creatorId === selectedFilter.value) || []; + let resolvedGroupedTodos; + if (selectedFilter?.value === FILTER_OPTIONS.EVERYONE) { + resolvedGroupedTodos = groupToDosByDate(toDos ?? []); + } else { + let filtered = toDos?.filter((todo) => todo.assignees?.includes(selectedFilter.value)) || []; - let filteredGroupedTodos = groupToDosByDate(filtered || []); - setGroupedToDos(filteredGroupedTodos || []); + resolvedGroupedTodos = groupToDosByDate(filtered || []); + } + setGroupedToDos(resolvedGroupedTodos || []); } }, [selectedFilter, JSON.stringify(toDos)]);