import { cache } from 'react'; import { createAccountsApi } from '@kit/accounts/api'; import { getSupabaseServerClient } from '@kit/supabase/server-client'; import { requireUserInServerComponent } from '@/lib/server/require-user-in-server-component'; export type UserAccount = Awaited>; /** * @name loadUserAccount * @description * Load the user account. It's a cached per-request function that fetches the user workspace data. * It can be used across the server components to load the user workspace data. */ export const loadUserAccount = cache(accountLoader); export async function loadCurrentUserAccount() { const user = await requireUserInServerComponent(); return user?.identities?.[0]?.id ? await loadUserAccount(user?.identities?.[0]?.id) : null; } async function accountLoader(accountId: string) { const client = getSupabaseServerClient(); const api = createAccountsApi(client); return api.getAccount(accountId); }