import { useCallback } from 'react'; import { useQuery, useQueryClient } from '@tanstack/react-query'; import { useSupabase } from '@kit/supabase/hooks/use-supabase'; export function usePersonalAccountData( userId: string, partialAccount?: { id: string | null; name: string | null; picture_url: string | null; }, ) { const client = useSupabase(); const queryKey = ['account:data', userId]; const queryFn = async () => { if (!userId) { return null; } const response = await client .schema('medreport') .from('accounts') .select() .eq('primary_owner_user_id', userId) .eq('is_personal_account', true) .single(); if (response.error) { throw response.error; } return response.data; }; return useQuery({ queryKey, queryFn, enabled: !!userId, refetchOnWindowFocus: false, refetchOnMount: false, initialData: partialAccount?.id ? { id: partialAccount.id, name: partialAccount.name, picture_url: partialAccount.picture_url, } : undefined, }); } export function useRevalidatePersonalAccountDataQuery() { const queryClient = useQueryClient(); return useCallback( (userId: string) => queryClient.invalidateQueries({ queryKey: ['account:data', userId], }), [queryClient], ); }