feat(MED-97): update cart flow for using benefits

This commit is contained in:
2025-09-26 13:24:09 +03:00
parent 56f84a003c
commit db38e602aa
15 changed files with 419 additions and 81 deletions

View File

@@ -1,5 +1,3 @@
import { notFound } from 'next/navigation';
import { createI18nServerInstance } from '@/lib/i18n/i18n.server';
import { PageBody, PageHeader } from '@/packages/ui/src/makerkit/page';
import { retrieveCart } from '@lib/data/cart';
@@ -11,6 +9,8 @@ import { withI18n } from '~/lib/i18n/with-i18n';
import Cart from '../../_components/cart';
import CartTimer from '../../_components/cart/cart-timer';
import { loadCurrentUserAccount } from '../../_lib/server/load-user-account';
import { AccountBalanceService } from '~/lib/services/accountBalance.service';
export async function generateMetadata() {
const { t } = await createI18nServerInstance();
@@ -21,12 +21,22 @@ export async function generateMetadata() {
}
async function CartPage() {
const cart = await retrieveCart().catch((error) => {
console.error('Failed to retrieve cart', error);
return notFound();
});
const [
cart,
{ productTypes },
{ account },
] = await Promise.all([
retrieveCart(),
listProductTypes(),
loadCurrentUserAccount(),
]);
if (!account) {
return null;
}
const balanceSummary = await new AccountBalanceService().getBalanceSummary(account.id);
const { productTypes } = await listProductTypes();
const analysisPackagesType = productTypes.find(
({ metadata }) => metadata?.handle === 'analysis-packages',
);
@@ -63,9 +73,11 @@ async function CartPage() {
{isTimerShown && <CartTimer cartItem={item} />}
</PageHeader>
<Cart
accountId={account.id}
cart={cart}
synlabAnalyses={synlabAnalyses}
ttoServiceItems={ttoServiceItems}
balanceSummary={balanceSummary}
/>
</PageBody>
);