feat(MED-122): update current user account loader

This commit is contained in:
2025-07-10 13:19:01 +03:00
parent bbcf0b6d83
commit 0a0b1f0dee
4 changed files with 14 additions and 25 deletions

View File

@@ -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);

View File

@@ -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<ReturnType<typeof loadUserAccount>>;
@@ -13,6 +14,13 @@ export type UserAccount = Awaited<ReturnType<typeof loadUserAccount>>;
*/
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);

View File

@@ -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 (

View File

@@ -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)