import { Checkbox, Text, TouchableOpacity, View } from "react-native-ui-lib"; import React, { useEffect, useState } from "react"; import { AntDesign } from "@expo/vector-icons"; import { GroceryCategory, useGroceryContext } from "@/contexts/GroceryContext"; import EditGroceryFrequency from "./EditGroceryFrequency"; import EditGroceryItem from "./EditGroceryItem"; import { ImageBackground, StyleSheet } from "react-native"; import { IGrocery } from "@/hooks/firebase/types/groceryData"; import { UserProfile } from "@/hooks/firebase/types/profileTypes"; import { ProfileType, useAuthContext } from "@/contexts/AuthContext"; import { useGetUserById } from "@/hooks/firebase/useGetUserById"; import { useDeleteGrocery } from "@/hooks/firebase/useDeleteGrocery"; const GroceryItem = ({ item, handleItemApproved, onInputFocus, }: { item: IGrocery; handleItemApproved: (id: string, changes: Partial) => void; onInputFocus: (y: number) => void; }) => { const { updateGroceryItem } = useGroceryContext(); const { mutateAsync: deleteGrocery } = useDeleteGrocery(); const { profileData } = useAuthContext(); const { data: creator } = useGetUserById(item.creatorId); const isParent = profileData?.userType === ProfileType.PARENT; const isCaregiver = profileData?.userType === ProfileType.CAREGIVER; const [openFreqEdit, setOpenFreqEdit] = useState(false); const [isEditingTitle, setIsEditingTitle] = useState(false); const [newTitle, setNewTitle] = useState(item.title ?? ""); const [category, setCategory] = useState( item.category ?? GroceryCategory.None ); const closeEdit = () => setIsEditingTitle(false); const getInitials = (firstName: string, lastName: string) => { return `${firstName.charAt(0).toUpperCase()}${lastName.charAt(0).toUpperCase()}`; }; return ( setOpenFreqEdit(false)} /> {isEditingTitle ? ( ) : ( {(isParent || isCaregiver) && !item.bought ? ( setIsEditingTitle(true)}> {item.title} ) : ( {item.title} )} )} {!item.approved ? ( {isParent || isCaregiver && ( <> handleItemApproved(item.id, { approved: true }) } /> { handleItemApproved(item.id, { approved: false }); deleteGrocery(item.id); }} /> )} ) : ( !isEditingTitle && (isParent || isCaregiver) && ( {item.bought && { handleItemApproved(item.id, { approved: false }); deleteGrocery(item.id); }}/> } updateGroceryItem({ id: item.id, bought: !item.bought }) } /> ) )} {!item.approved && ( <> {creator?.pfp ? ( ) : ( {creator ? getInitials(creator.firstName, creator.lastName) : ""} )} Requested by {creator?.firstName} )} ); }; const styles = StyleSheet.create({ authorTxt: { fontFamily: "Manrope_500Medium", fontSize: 12, }, checkbox: { borderRadius: 50, borderWidth: 0.7, color: "#bfbfbf", borderColor: "#bfbfbf", width: 24.64, aspectRatio: 1, }, title: { fontFamily: "Manrope_500Medium", fontSize: 15, }, checked: { borderRadius: 50, }, }); export default GroceryItem;