mirror of
https://github.com/urosran/cally.git
synced 2025-11-26 08:24:55 +00:00
- Added todo filter option for Everyone to show all the family's tasks
This commit is contained in:
@ -8,9 +8,14 @@ import {IToDo} from "@/hooks/firebase/types/todoData";
|
|||||||
import DropdownIcon from "@/assets/svgs/DropdownIcon";
|
import DropdownIcon from "@/assets/svgs/DropdownIcon";
|
||||||
import {Dropdown} from "react-native-element-dropdown";
|
import {Dropdown} from "react-native-element-dropdown";
|
||||||
import {useGetFamilyMembers} from "@/hooks/firebase/useGetFamilyMembers";
|
import {useGetFamilyMembers} from "@/hooks/firebase/useGetFamilyMembers";
|
||||||
import {ProfileType, useAuthContext} from "@/contexts/AuthContext";
|
import {useAuthContext} from "@/contexts/AuthContext";
|
||||||
import {StyleSheet} from "react-native";
|
import {StyleSheet} from "react-native";
|
||||||
|
|
||||||
|
const FILTER_OPTIONS = {
|
||||||
|
ME: "Me",
|
||||||
|
EVERYONE: "Everyone"
|
||||||
|
};
|
||||||
|
|
||||||
const groupToDosByDate = (toDos: IToDo[]) => {
|
const groupToDosByDate = (toDos: IToDo[]) => {
|
||||||
let sortedTodos = toDos.sort((a, b) => a.date - b.date);
|
let sortedTodos = toDos.sort((a, b) => a.date - b.date);
|
||||||
return sortedTodos.reduce(
|
return sortedTodos.reduce(
|
||||||
@ -75,13 +80,16 @@ const groupToDosByDate = (toDos: IToDo[]) => {
|
|||||||
|
|
||||||
const resolveFilterOptions = (members, user) => {
|
const resolveFilterOptions = (members, user) => {
|
||||||
|
|
||||||
return members?.map((member) => {
|
let options = members?.map((member) => {
|
||||||
let label = member?.firstName;
|
let label = member?.firstName;
|
||||||
if (member.uid === user?.uid) {
|
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 }) => {
|
const ToDosList = ({ isSettings }: { isSettings?: boolean }) => {
|
||||||
@ -110,10 +118,15 @@ const ToDosList = ({ isSettings }: { isSettings?: boolean }) => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (toDos && selectedFilter) {
|
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 || []);
|
resolvedGroupedTodos = groupToDosByDate(filtered || []);
|
||||||
setGroupedToDos(filteredGroupedTodos || []);
|
}
|
||||||
|
setGroupedToDos(resolvedGroupedTodos || []);
|
||||||
}
|
}
|
||||||
}, [selectedFilter, JSON.stringify(toDos)]);
|
}, [selectedFilter, JSON.stringify(toDos)]);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user