61 lines
2.1 KiB
TypeScript
61 lines
2.1 KiB
TypeScript
import { redirect } from 'next/navigation';
|
|
|
|
import { signOutAction } from '@/lib/actions/sign-out';
|
|
|
|
import { BackButton } from '@kit/shared/components/back-button';
|
|
import { MedReportLogo } from '@kit/shared/components/med-report-logo';
|
|
import { pathsConfig } from '@kit/shared/config';
|
|
import { Trans } from '@kit/ui/trans';
|
|
|
|
import { withI18n } from '~/lib/i18n/with-i18n';
|
|
|
|
import { UpdateAccountForm } from './_components/update-account-form';
|
|
import { loadCurrentUserAccount } from '@/app/home/(user)/_lib/server/load-user-account';
|
|
import { toTitleCase } from '~/lib/utils';
|
|
|
|
async function UpdateAccount() {
|
|
const { account, user } = await loadCurrentUserAccount();
|
|
|
|
const isKeycloakUser = user?.app_metadata?.provider === 'keycloak';
|
|
|
|
if (!user) {
|
|
redirect(pathsConfig.auth.signIn);
|
|
}
|
|
|
|
const defaultValues = {
|
|
firstName: account?.name ? toTitleCase(account.name) : '',
|
|
lastName: account?.last_name ? toTitleCase(account.last_name) : '',
|
|
personalCode: account?.personal_code ?? '',
|
|
email: (() => {
|
|
if (isKeycloakUser) {
|
|
return account?.email ?? '';
|
|
}
|
|
return account?.email ?? user?.email ?? '';
|
|
})(),
|
|
phone: account?.phone ?? '+372',
|
|
city: account?.city ?? '',
|
|
weight: account?.accountParams?.weight ?? 0,
|
|
height: account?.accountParams?.height ?? 0,
|
|
userConsent: account?.has_consent_personal_data ?? false,
|
|
};
|
|
|
|
return (
|
|
<div className="border-border flex max-w-5xl flex-row overflow-hidden rounded-3xl border">
|
|
<div className="relative flex min-w-md flex-col px-12 pt-7 pb-22 text-center md:w-1/2">
|
|
<BackButton onBack={signOutAction} />
|
|
<MedReportLogo />
|
|
<h1 className="pt-8">
|
|
<Trans i18nKey={'account:updateAccount:title'} />
|
|
</h1>
|
|
<p className="text-muted-foreground pt-1 text-sm">
|
|
<Trans i18nKey={'account:updateAccount:description'} />
|
|
</p>
|
|
<UpdateAccountForm defaultValues={defaultValues} />
|
|
</div>
|
|
<div className="hidden w-1/2 min-w-[460px] bg-[url(/assets/med-report-logo-big.png)] bg-cover bg-center bg-no-repeat md:block"></div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default withI18n(UpdateAccount);
|