import {FlatList, StyleSheet} from "react-native"; import React, {useEffect, useState} from "react"; import {Button, Text, View} from "react-native-ui-lib"; import GroceryItem from "./GroceryItem"; import {GroceryCategory, GroceryFrequency, useGroceryContext,} from "@/contexts/GroceryContext"; import HeaderTemplate from "@/components/shared/HeaderTemplate"; import {AntDesign, MaterialIcons} from "@expo/vector-icons"; import EditGroceryItem from "./EditGroceryItem"; import {ProfileType, useAuthContext} from "@/contexts/AuthContext"; import {IGrocery} from "@/hooks/firebase/types/groceryData"; const GroceryList = () => { const { groceries, updateGroceryItem, isAddingGrocery, setIsAddingGrocery, addGrocery, } = useGroceryContext(); const { profileData } = useAuthContext(); const [approvedGroceries, setapprovedGroceries] = useState( groceries?.filter((item) => item.approved === true) ); const [pendingGroceries, setPendingGroceries] = useState( groceries?.filter((item) => item.approved !== true) ); const [category, setCategory] = useState( GroceryCategory.Bakery ); const [title, setTitle] = useState(""); const [submit, setSubmitted] = useState(false); const [pendingVisible, setPendingVisible] = useState(true); const [approvedVisible, setApprovedVisible] = useState(true); // Group approved groceries by category const approvedGroceriesByCategory = approvedGroceries?.reduce( (groups: any, item: IGrocery) => { const category = item.category || "Uncategorized"; if (!groups[category]) { groups[category] = []; } groups[category].push(item); return groups; }, {} ); useEffect(() => { if (submit) { if (title?.length > 2 && title?.length <= 25) { addGrocery({ id: "", title: title, category: category, approved: profileData?.userType === ProfileType.PARENT, recurring: false, frequency: GroceryFrequency.Never, bought: false, }); setIsAddingGrocery(false); setSubmitted(false); setTitle(""); } } }, [submit]); useEffect(() => { /**/ }, [category]); useEffect(() => { setapprovedGroceries(groceries?.filter((item) => item.approved === true)); setPendingGroceries(groceries?.filter((item) => item.approved !== true)); }, [groceries]); return ( {approvedGroceries?.length} list{" "} {approvedGroceries?.length === 1 ? ( item ) : ( items )} {pendingGroceries?.length} pending