B2B-88: add starter kit structure and elements

This commit is contained in:
devmc-ee
2025-06-08 16:18:30 +03:00
parent 657a36a298
commit e7b25600cb
1280 changed files with 77893 additions and 5688 deletions

View File

@@ -0,0 +1,69 @@
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
.from('accounts')
.select(
`
id,
name,
picture_url
`,
)
.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],
);
}