diff --git a/components/pages/calendar/EventCalendar.tsx b/components/pages/calendar/EventCalendar.tsx index 3f39399..efd3ede 100644 --- a/components/pages/calendar/EventCalendar.tsx +++ b/components/pages/calendar/EventCalendar.tsx @@ -42,8 +42,8 @@ export const EventCalendar: React.FC = React.memo( const setSelectedNewEndDate = useSetAtom(selectedNewEventDateAtom); const {isSyncing} = useSyncEvents() - const [offsetMinutes, setOffsetMinutes] = useState(getTotalMinutes()); - useCalSync() + const [offsetMinutes, setOffsetMinutes] = useState(getTotalMinutes()); + useCalSync() const todaysDate = new Date(); @@ -108,7 +108,6 @@ export const EventCalendar: React.FC = React.memo( ); // console.log({memoizedWeekStartsOn, profileData: profileData?.firstDayOfWeek, - }); const isSameDate = useCallback((date1: Date, date2: Date) => { return ( @@ -299,7 +298,8 @@ export const EventCalendar: React.FC = React.memo( overflow:"hidden", } : {}} hourStyle={styles.hourStyle} - onPressDateHeader={handlePressDayHeader} ampm + onPressDateHeader={handlePressDayHeader} + ampm // renderCustomDateForMonth={renderCustomDateForMonth} /> diff --git a/components/pages/todos/ToDosList.tsx b/components/pages/todos/ToDosList.tsx index 431c293..9dcca21 100644 --- a/components/pages/todos/ToDosList.tsx +++ b/components/pages/todos/ToDosList.tsx @@ -1,16 +1,15 @@ -import { View, Text, TouchableOpacity, Icon } from "react-native-ui-lib"; -import React, { useState } from "react"; -import { useToDosContext } from "@/contexts/ToDosContext"; +import {Text, TouchableOpacity, View} from "react-native-ui-lib"; +import React, {useEffect, useState} from "react"; +import {useToDosContext} from "@/contexts/ToDosContext"; import ToDoItem from "./ToDoItem"; -import { - addDays, - format, - isToday, - isTomorrow, - isWithinInterval, -} from "date-fns"; -import { AntDesign } from "@expo/vector-icons"; -import { IToDo } from "@/hooks/firebase/types/todoData"; +import {addDays, format, isToday, isTomorrow, isWithinInterval,} from "date-fns"; +import {AntDesign} from "@expo/vector-icons"; +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 {StyleSheet} from "react-native"; const groupToDosByDate = (toDos: IToDo[]) => { let sortedTodos = toDos.sort((a, b) => a.date - b.date); @@ -74,15 +73,52 @@ const groupToDosByDate = (toDos: IToDo[]) => { ); }; +const resolveFilterOptions = (members, user) => { + + return members?.map((member) => { + let label = member?.firstName; + if (member.uid === user?.uid) { + label = "Me"; + } + return (member.uid !== user?.uid || member.profileType !== ProfileType.PARENT) && {value: member?.uid, label: label}; + }); +} + const ToDosList = ({ isSettings }: { isSettings?: boolean }) => { const { toDos } = useToDosContext(); - const groupedToDos = groupToDosByDate(toDos); + + const [groupedToDos, setGroupedToDos] = useState([]); + const { user } = useAuthContext() + const { data: members } = useGetFamilyMembers(); + const [expandedGroups, setExpandedGroups] = useState<{ [key: string]: boolean; }>({}); const [expandNoDate, setExpandNoDate] = useState(true); + const [selectedFilter, setSelectedFilter] = useState(null); + const [filterOptions, setFilterOptions] = useState([]); + + useEffect(() => { + let options = resolveFilterOptions(members, user); + setFilterOptions(options); + + let selectedOption = options?.find((option) => option.value === user?.uid); + setSelectedFilter(selectedOption); + }, []); + + useEffect(() => { + if (toDos && selectedFilter) { + let filtered = toDos?.filter((todo) => todo.creatorId === selectedFilter.value); + + let filteredGroupedTodos = groupToDosByDate(filtered || []); + setGroupedToDos(filteredGroupedTodos || []); + } + }, [selectedFilter, toDos]); + + console.log("MEMBERS"); + console.log(members); const toggleExpand = (dateKey: string) => { setExpandedGroups((prev) => ({ @@ -226,6 +262,40 @@ const ToDosList = ({ isSettings }: { isSettings?: boolean }) => { return ( + ( + + )} + renderItem={(item) => { + return ( + + {item.label} + + ); + }} + onChange={(item) => { + setSelectedFilter(item); + }} + /> {noDateToDos.length > 0 && ( @@ -260,4 +330,19 @@ const ToDosList = ({ isSettings }: { isSettings?: boolean }) => { ); }; +const styles = StyleSheet.create({ + itemText: { + fontFamily: "Manrope_400Regular", + fontSize: 15.42, + paddingLeft: 15, + }, + selectedText: { + fontFamily: "Manrope_500Medium", + fontSize: 13.2, + color: "#fd1775", + }, + dropdownStyle: { borderRadius: 6.61, width: 187 }, + itemStyle: { padding: 0, margin: 0 }, +}); + export default ToDosList; diff --git a/hooks/firebase/useSignUp.ts b/hooks/firebase/useSignUp.ts index 4326297..53729ae 100644 --- a/hooks/firebase/useSignUp.ts +++ b/hooks/firebase/useSignUp.ts @@ -6,7 +6,6 @@ import {uuidv4} from "@firebase/util"; import * as Localization from "expo-localization"; export const useSignUp = () => { - const {setRedirectOverride} = useAuthContext() const {mutateAsync: setUserData} = useSetUserData(); return useMutation({ @@ -22,8 +21,6 @@ export const useSignUp = () => { firstName: string; lastName: string; }) => { - setRedirectOverride(true) - await auth() .createUserWithEmailAndPassword(email, password) .then(async (res) => {