From 6aa5fa70cf5ccd2825e5657ec1a90e370dea3bcf Mon Sep 17 00:00:00 2001
From: Rafi Zadanly <zadanlyr@gmail.com>
Date: Mon, 16 Oct 2023 11:16:33 +0700
Subject: Fix buy action before and after login

---
 .../product/components/Product/ProductDesktop.jsx  | 44 ++++++++++++----------
 1 file changed, 24 insertions(+), 20 deletions(-)

(limited to 'src/lib/product/components/Product/ProductDesktop.jsx')

diff --git a/src/lib/product/components/Product/ProductDesktop.jsx b/src/lib/product/components/Product/ProductDesktop.jsx
index 855c9f75..701750b2 100644
--- a/src/lib/product/components/Product/ProductDesktop.jsx
+++ b/src/lib/product/components/Product/ProductDesktop.jsx
@@ -90,38 +90,38 @@ const ProductDesktop = ({ products, wishlist, toggleWishlist }) => {
   }
 
   const updateCart = (variantId, quantity, source) => {
-    let dataUpdate
+    let dataUpdate = {
+      productId: variantId,
+      quantity,
+      selected: true,
+      source: source === 'buy' ? 'buy' : null
+    }
+
     if (product.variants.length > 1) {
       let variantIndex = product.variants.findIndex((varian) => varian.id == variantId)
-      dataUpdate = {
-        productId: variantId,
-        quantity,
-        programLineId: product.variants[variantIndex].programActive,
-        selected: true,
-        source: source === 'buy' ? 'buy' : null
-      }
+      dataUpdate['programLineId'] = product.variants[variantIndex].programActive
     } else {
-      dataUpdate = {
-        productId: variantId,
-        quantity,
-        programLineId: promotionActiveId,
-        selected: true,
-        source: source === 'buy' ? 'buy' : null
-      }
+      dataUpdate['programLineId'] = promotionActiveId
     }
+
     updateItemCart(dataUpdate)
   }
 
-  const handleAddToCart = (variantId) => {
-    if (!auth) {
-      router.push(`/login?next=/shop/product/${slug}`)
-      return
-    }
+  const redirectToLogin = (action, variantId, quantity) => {
+    const nextURL = `/shop/product/${slug}?action=${action}&variantId=${variantId}&qty=${quantity}`
+    router.push(`/login?next=${encodeURIComponent(nextURL)}`)
+    return true
+  }
 
+  const handleAddToCart = (variantId) => {
     const quantity = variantQuantityRefs.current[variantId].value
 
     if (!validQuantity(quantity)) return
 
+    if (!auth) {
+      return redirectToLogin('add_to_cart', variantId, quantity)
+    }
+
     let source = 'cart'
     updateCart(variantId, quantity, source)
     setRefreshCart(true)
@@ -141,6 +141,10 @@ const ProductDesktop = ({ products, wishlist, toggleWishlist }) => {
     const quantity = variantQuantityRefs.current[variant].value
     if (!validQuantity(quantity)) return
 
+    if (!auth) {
+      return redirectToLogin('buy', variant, quantity)
+    }
+
     let source = 'buy'
     updateCart(variant, quantity, source)
     router.push(`/shop/checkout?source=buy`)
-- 
cgit v1.2.3

