diff --git a/app/(marketing)/layout.tsx b/app/(marketing)/layout.tsx
index c9dcae3..d285e1c 100644
--- a/app/(marketing)/layout.tsx
+++ b/app/(marketing)/layout.tsx
@@ -1,25 +1,16 @@
import { use } from 'react';
-import { getSupabaseServerClient } from '@/packages/supabase/src/clients/server-client';
-
import { SiteFooter } from '~/(marketing)/_components/site-footer';
import { SiteHeader } from '~/(marketing)/_components/site-header';
import { withI18n } from '~/lib/i18n/with-i18n';
-import { loadUserWorkspace } from '../home/(user)/_lib/server/load-user-workspace';
-
-async function SiteLayout(props: React.PropsWithChildren) {
- const client = getSupabaseServerClient();
-
- const {
- data: { user },
- } = await client.auth.getUser();
-
- const workspace = user ? use(loadUserWorkspace()) : { accounts: [] };
+import { loadCurrentUserAccounts } from '../home/(user)/_lib/server/load-accounts';
+function SiteLayout(props: React.PropsWithChildren) {
+ const accounts = use(loadCurrentUserAccounts());
return (
-
+
{props.children}
diff --git a/app/home/(user)/_lib/server/load-accounts.ts b/app/home/(user)/_lib/server/load-accounts.ts
new file mode 100644
index 0000000..d4d4ec6
--- /dev/null
+++ b/app/home/(user)/_lib/server/load-accounts.ts
@@ -0,0 +1,31 @@
+import { cache } from 'react';
+
+import { requireUserInServerComponent } from '@/lib/server/require-user-in-server-component';
+
+import { createAccountsApi } from '@kit/accounts/api';
+import { getSupabaseServerClient } from '@kit/supabase/server-client';
+
+export type Accounts = 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 loadAccounts = cache(accountsLoader);
+
+export async function loadCurrentUserAccounts() {
+ const client = getSupabaseServerClient();
+ const {
+ data: { user },
+ } = await client.auth.getUser();
+ return user?.identities?.[0]?.id ? await loadAccounts() : [];
+}
+
+async function accountsLoader() {
+ const client = getSupabaseServerClient();
+ const api = createAccountsApi(client);
+
+ return api.loadUserAccounts();
+}