import {useMutation, useQueryClient} from "react-query";
import {UserProfile} from "@/hooks/firebase/types/profileTypes";
import functions from '@react-native-firebase/functions';
import {ProfileType, useAuthContext} from "@/contexts/AuthContext";
import {HttpsCallableResult} from "@firebase/functions";

export const useCreateSubUser = () => {
    const queryClient = useQueryClient()
    const {profileType, profileData} = useAuthContext()

    return useMutation({
        mutationKey: ["createSubUser"],
        mutationFn: async ({email, ...userProfile}: { email?: string } & UserProfile) => {
            if (profileType === ProfileType.PARENT) {
                return await functions().httpsCallable("createSubUser")({
                    ...userProfile,
                    email,
                    familyId: profileData?.familyId!
                }) as HttpsCallableResult<{ userId: string }>
            } else {
                throw Error("Can't create sub-users as a non-parent.")
            }
        },
        onSuccess: () => {
            queryClient.invalidateQueries({queryKey: ["getChildrenByParentId"]})
            queryClient.invalidateQueries({queryKey: ["familyMembers"]})
        }
    });
}