import { Avatar, Button, Card, Colors, Dialog, FloatingButton, PanningProvider, Picker, Text, TextField, TouchableOpacity, View, } from "react-native-ui-lib"; import React, { useState } from "react"; import { ScrollView, StyleSheet } from "react-native"; import { PickerSingleValue } from "react-native-ui-lib/src/components/picker/types"; import { useCreateSubUser } from "@/hooks/firebase/useCreateSubUser"; import { ProfileType } from "@/contexts/AuthContext"; import { useGetFamilyMembers } from "@/hooks/firebase/useGetFamilyMembers"; import UserMenu from "@/components/pages/settings/user_settings_views/UserMenu"; const MyGroup = () => { const [showAddUserDialog, setShowAddUserDialog] = useState(false); const [showNewUserInfoDialog, setShowNewUserInfoDialog] = useState(false); const [selectedStatus, setSelectedStatus] = useState< string | PickerSingleValue >(ProfileType.CHILD); const [firstName, setFirstName] = useState(""); const [lastName, setLastName] = useState(""); const [email, setEmail] = useState(""); const { mutateAsync: createSubUser, isLoading, isError } = useCreateSubUser(); const { data: familyMembers } = useGetFamilyMembers(true); const parents = familyMembers?.filter((x) => x.userType === ProfileType.PARENT) ?? []; const children = familyMembers?.filter((x) => x.userType === ProfileType.CHILD) ?? []; const caregivers = familyMembers?.filter((x) => x.userType === ProfileType.CAREGIVER) ?? []; const handleCreateSubUser = async () => { if (!firstName || !lastName || !email) { console.error("All fields are required"); return; } if (!email.includes("@")) { console.error("Invalid email address"); return; } await createSubUser({ firstName, lastName, email, password: email, userType: selectedStatus as ProfileType, }); if (!isError) { setShowNewUserInfoDialog(false); } }; console.log(familyMembers); return ( {!parents.length && !children.length && !caregivers.length && ( {isLoading ? "Loading...." : "No user devices added"} )} {(!!parents.length || !!children.length) && ( <> Family {[...parents, ...children]?.map((member) => ( {member.firstName} {member.lastName} {member.userType === ProfileType.PARENT ? "Admin (You)" : "Child"} ))} )} {!!caregivers.length && ( <> Caregivers {caregivers?.map((member) => ( {member.firstName} {member.lastName} Caregiver ))} )} setShowAddUserDialog(true), }} /> setShowAddUserDialog(false)} panDirection={PanningProvider.Directions.DOWN} > Add a new user device setShowAddUserDialog(false)} center> Return to user settings setShowNewUserInfoDialog(false)} > New User Information setShowAddUserDialog(false)}> X {}}> Upload User Profile Photo Member Status setSelectedStatus(item)} style={styles.picker} showSearch floatingPlaceholder > First Name Last Name Email Address ); }; const styles = StyleSheet.create({ card: { marginVertical: 15, backgroundColor: "white", width: "100%", borderRadius: 15, padding: 20, }, familyCard: { marginBottom: 10, borderRadius: 10, backgroundColor: Colors.white, width: "100%", }, inputField: { borderRadius: 50, paddingVertical: 12, paddingHorizontal: 16, backgroundColor: Colors.grey80, marginBottom: 16, borderColor: Colors.grey50, borderWidth: 1, height: 40, }, picker: { borderRadius: 50, paddingVertical: 12, paddingHorizontal: 16, backgroundColor: Colors.grey80, marginBottom: 16, borderColor: Colors.grey50, borderWidth: 1, marginTop: -20, height: 40, }, label: { marginBottom: 5, fontSize: 12, color: Colors.grey40, }, dialogCard: { borderRadius: 10, gap: 10, }, }); export default MyGroup;