From cd5905d40fd05065f4d9c0169f47bd5697b50863 Mon Sep 17 00:00:00 2001 From: shafi54 <108669266+shafi-aviz@users.noreply.github.com> Date: Wed, 28 Jan 2026 10:09:40 +0530 Subject: [PATCH] enh --- apps/user-ui/components/BannerCarousel.tsx | 1 - apps/user-ui/components/floating-cart-bar.tsx | 40 ++++++++++++------- apps/user-ui/hooks/cart-query-hooks.tsx | 2 - 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/apps/user-ui/components/BannerCarousel.tsx b/apps/user-ui/components/BannerCarousel.tsx index 9446fe7..289b1ff 100644 --- a/apps/user-ui/components/BannerCarousel.tsx +++ b/apps/user-ui/components/BannerCarousel.tsx @@ -26,7 +26,6 @@ export default function BannerCarousel() { // Fetch banners data const { data: bannersData, isLoading, error } = trpc.user.banner.getBanners.useQuery(); - console.log({bannersData}) const banners = bannersData?.banners || []; diff --git a/apps/user-ui/components/floating-cart-bar.tsx b/apps/user-ui/components/floating-cart-bar.tsx index de43c03..db5b60c 100644 --- a/apps/user-ui/components/floating-cart-bar.tsx +++ b/apps/user-ui/components/floating-cart-bar.tsx @@ -83,11 +83,11 @@ const FloatingCartBar: React.FC = ({ showErrorAlert: false, refetchCart: true, }, cartType); - const { addToCart = () => { } } = useAddToCart({ + const addToCartHook = useAddToCart({ showSuccessAlert: false, showErrorAlert: false, refetchCart: true, - }, cartType) || {}; + }, cartType); useEffect(() => { const initial: Record = {}; @@ -97,22 +97,23 @@ const FloatingCartBar: React.FC = ({ setQuantities(initial); }, [cartData]); - useEffect(() => { +useEffect(() => { if (!cartItems.length || !slotsData?.slots || !productSlotsMap) return; const itemsToUpdate = cartItems.filter(item => { - if (!item.slotId) return true; // No slotId - const slotExists = slotsData.slots.some(slot => slot.id === item.slotId); - return !slotExists; // Slot doesn't exist + if (isFlashDelivery || !item.slotId) return false; + + const availableSlots = productSlotsMap.get(item.productId) || []; + const isSlotAvailable = availableSlots.includes(item.slotId); + return !isSlotAvailable; }); itemsToUpdate.forEach((item) => { - const availableSlots = productSlotsMap.get(item.productId) || []; - if (availableSlots.length > 0 && !isFlashDelivery) { // don't bother updating slot for flash delivery + if (availableSlots.length > 0 && !isFlashDelivery) { const nearestSlotId = availableSlots[0]; removeFromCart.mutate({ itemId: item.id }); - addToCart(item.productId, item.quantity, nearestSlotId); + addToCartHook.addToCart(item.productId, item.quantity, nearestSlotId); } }); }, []); @@ -274,17 +275,28 @@ const FloatingCartBar: React.FC = ({ { + options={(productSlotsMap.get(item.productId) || []).map(slotId => { const slot = slotsData.slots.find(s => s.id === slotId); return { label: slot ? formatTimeRange(slot.deliveryTime) : "N/A", value: slotId, }; })} - onValueChange={(val) => { - const newSlot = slotsData.slots.find(s => s.id === val); - Alert.alert("Delivery Updated", `Scheduled for ${formatTimeRange(newSlot?.deliveryTime || '')}`); - }} + onValueChange={async (val) => { + const newSlot = slotsData.slots.find(s => s.id === val); + if (!newSlot) return; + + const productId = item.productId; + const quantity = item.quantity; + const itemId = item.id; + const slotId = typeof val === 'number' ? val : Number(val); + + // await removeFromCart.mutateAsync(itemId); + addToCartHook.addToCart(productId, 0, slotId, () => { + refetchCart(); + Alert.alert("Delivery Updated", `Scheduled for ${formatTimeRange(newSlot?.deliveryTime || '')}`); + }); + }} triggerComponent={({ onPress, displayText }) => (