From 0a0b1f0dee7791081d328d014a6670f7fde434ff Mon Sep 17 00:00:00 2001 From: k4rli Date: Thu, 10 Jul 2025 13:19:01 +0300 Subject: [PATCH] feat(MED-122): update current user account loader --- app/home/(user)/(dashboard)/page.tsx | 22 ++----------------- .../(user)/_lib/server/load-user-account.ts | 8 +++++++ app/home/layout.tsx | 8 +++---- packages/features/accounts/src/server/api.ts | 1 + 4 files changed, 14 insertions(+), 25 deletions(-) diff --git a/app/home/(user)/(dashboard)/page.tsx b/app/home/(user)/(dashboard)/page.tsx index a7719ba..75b3d20 100644 --- a/app/home/(user)/(dashboard)/page.tsx +++ b/app/home/(user)/(dashboard)/page.tsx @@ -1,14 +1,13 @@ import { redirect } from 'next/navigation'; - import { createI18nServerInstance } from '~/lib/i18n/i18n.server'; import { withI18n } from '~/lib/i18n/with-i18n'; import { PageBody, PageHeader } from '@kit/ui/page'; import { Trans } from '@kit/ui/trans'; -import { getSupabaseServerClient } from '@/packages/supabase/src/clients/server-client'; import { toTitleCase } from '@/lib/utils'; import Dashboard from '../_components/dashboard'; +import { loadCurrentUserAccount } from '../_lib/server/load-user-account'; export const generateMetadata = async () => { const i18n = await createI18nServerInstance(); @@ -20,7 +19,7 @@ export const generateMetadata = async () => { }; async function UserHomePage() { - const account = await getAccount(); + const account = await loadCurrentUserAccount(); if (!account) { redirect('/'); } @@ -44,21 +43,4 @@ async function UserHomePage() { ); } -async function getAccount() { - const client = getSupabaseServerClient(); - - const { - data: { user }, - } = await client.auth.getUser(); - - const accountResponse = await client - .schema('medreport') - .from('accounts') - .select('name') - .eq('primary_owner_user_id', user!.id) - .single(); - - return accountResponse.data; -} - export default withI18n(UserHomePage); diff --git a/app/home/(user)/_lib/server/load-user-account.ts b/app/home/(user)/_lib/server/load-user-account.ts index de88993..471def2 100644 --- a/app/home/(user)/_lib/server/load-user-account.ts +++ b/app/home/(user)/_lib/server/load-user-account.ts @@ -2,6 +2,7 @@ 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>; @@ -13,6 +14,13 @@ export type UserAccount = Awaited>; */ 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); diff --git a/app/home/layout.tsx b/app/home/layout.tsx index 08a2b19..680b15d 100644 --- a/app/home/layout.tsx +++ b/app/home/layout.tsx @@ -1,6 +1,6 @@ -import { requireUserInServerComponent } from '../../lib/server/require-user-in-server-component'; +import { requireUserInServerComponent } from '@/lib/server/require-user-in-server-component'; import ConsentDialog from './(user)/_components/consent-dialog'; -import { loadUserAccount } from './(user)/_lib/server/load-user-account'; +import { loadCurrentUserAccount } from './(user)/_lib/server/load-user-account'; export default async function HomeLayout({ children, @@ -8,9 +8,7 @@ export default async function HomeLayout({ children: React.ReactNode; }) { const user = await requireUserInServerComponent(); - const account = user?.identities?.[0]?.id - ? await loadUserAccount(user?.identities?.[0]?.id) - : null; + const account = await loadCurrentUserAccount() if (account && account?.has_consent_anonymized_company_statistics === null) { return ( diff --git a/packages/features/accounts/src/server/api.ts b/packages/features/accounts/src/server/api.ts index fd0c9d1..7cb680c 100644 --- a/packages/features/accounts/src/server/api.ts +++ b/packages/features/accounts/src/server/api.ts @@ -117,6 +117,7 @@ class AccountsApi { */ async getSubscription(accountId: string) { const response = await this.client + .schema('medreport') .from('subscriptions') .select('*, items: subscription_items !inner (*)') .eq('account_id', accountId)