From 43117985dd742747817bdc85d4bf2be20c8307cf Mon Sep 17 00:00:00 2001 From: Karli Date: Mon, 18 Aug 2025 13:21:56 +0300 Subject: [PATCH 1/2] feat(MED-101): disable timer until TTO products are used --- app/home/(user)/(dashboard)/cart/page.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/home/(user)/(dashboard)/cart/page.tsx b/app/home/(user)/(dashboard)/cart/page.tsx index 4e96c49..8eed4f6 100644 --- a/app/home/(user)/(dashboard)/cart/page.tsx +++ b/app/home/(user)/(dashboard)/cart/page.tsx @@ -32,11 +32,12 @@ export default async function CartPage() { const otherItemsSorted = otherItems.sort((a, b) => (a.updated_at ?? "") > (b.updated_at ?? "") ? -1 : 1); const item = otherItemsSorted[0]; + const hasItemsWithTimer = false as boolean; return ( }> - {item && item.updated_at && } + {hasItemsWithTimer && item && item.updated_at && } From ec866c7f2994011836227494c9a2868fc2e43edd Mon Sep 17 00:00:00 2001 From: Karli Date: Mon, 18 Aug 2025 13:27:13 +0300 Subject: [PATCH 2/2] feat(MED-101): add audit log to cart item delete --- .../_components/cart/cart-item-delete.tsx | 4 +-- lib/services/medusaCart.service.ts | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/app/home/(user)/_components/cart/cart-item-delete.tsx b/app/home/(user)/_components/cart/cart-item-delete.tsx index 4c359cf..be67593 100644 --- a/app/home/(user)/_components/cart/cart-item-delete.tsx +++ b/app/home/(user)/_components/cart/cart-item-delete.tsx @@ -5,8 +5,8 @@ import { useState } from "react"; import { useTranslation } from "react-i18next"; import { toast } from 'sonner'; -import { deleteLineItem } from "@lib/data/cart"; import { Spinner } from "@medusajs/icons"; +import { handleDeleteCartItem } from "~/lib/services/medusaCart.service"; const CartItemDelete = ({ id, @@ -22,7 +22,7 @@ const CartItemDelete = ({ setIsDeleting(true); const promise = async () => { - await deleteLineItem(id); + await handleDeleteCartItem({ lineId: id }); }; toast.promise(promise, { diff --git a/lib/services/medusaCart.service.ts b/lib/services/medusaCart.service.ts index 48446e3..a84c596 100644 --- a/lib/services/medusaCart.service.ts +++ b/lib/services/medusaCart.service.ts @@ -4,6 +4,7 @@ import { z } from 'zod'; import { loadCurrentUserAccount } from '@/app/home/(user)/_lib/server/load-user-account'; import { getSupabaseServerClient } from '@kit/supabase/server-client'; import { addToCart, deleteLineItem, retrieveCart } from '@lib/data/cart'; +import { getCartId } from '@lib/data/cookies'; import { StoreCartLineItem, StoreProductVariant } from '@medusajs/types'; import { MontonioOrderHandlerService } from '@/packages/billing/montonio/src'; import { requireUserInServerComponent } from '../server/require-user-in-server-component'; @@ -64,6 +65,36 @@ export async function handleAddToCart({ return cart; } +export async function handleDeleteCartItem({ + lineId, +}: { + lineId: string; +}) { + await deleteLineItem(lineId); + + const supabase = getSupabaseServerClient(); + const cartId = await getCartId(); + const user = await requireUserInServerComponent(); + const account = await loadCurrentUserAccount() + if (!account) { + throw new Error('Account not found'); + } + + const { error } = await supabase + .schema('audit') + .from('cart_entries') + .insert({ + variant_id: lineId, + operation: 'REMOVE_FROM_CART', + account_id: account.id, + cart_id: cartId!, + changed_by: user.id, + }); + if (error) { + throw new Error('Error logging cart entry: ' + error.message); + } +} + export async function handleNavigateToPayment({ language, paymentSessionId }: { language: string, paymentSessionId: string }) { const supabase = getSupabaseServerClient(); const user = await requireUserInServerComponent();