From dca7af433ca57e976b29620c58de98e94388e2b9 Mon Sep 17 00:00:00 2001
From: it-fixcomart <it@fixcomart.co.id>
Date: Tue, 22 Oct 2024 14:24:31 +0700
Subject: <iman> CR variant beli langsung

---
 .../components/Product/ProductDesktopVariant.jsx   | 34 +++++++++++++++++++---
 1 file changed, 30 insertions(+), 4 deletions(-)

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

diff --git a/src/lib/product/components/Product/ProductDesktopVariant.jsx b/src/lib/product/components/Product/ProductDesktopVariant.jsx
index 09b30a44..4dd2ce3e 100644
--- a/src/lib/product/components/Product/ProductDesktopVariant.jsx
+++ b/src/lib/product/components/Product/ProductDesktopVariant.jsx
@@ -1,4 +1,3 @@
-
 import { Box, Skeleton, Tooltip } from '@chakra-ui/react';
 import { HeartIcon } from '@heroicons/react/24/outline';
 import { Info } from 'lucide-react';
@@ -18,6 +17,7 @@ import { updateItemCart } from '@/core/utils/cart';
 import currencyFormat from '@/core/utils/currencyFormat';
 import { createSlug } from '@/core/utils/slug';
 import whatsappUrl from '@/core/utils/whatsappUrl';
+import { getAuth } from '~/libs/auth';
 
 import productSimilarApi from '../../api/productSimilarApi';
 import ProductCard from '../ProductCard';
@@ -30,7 +30,7 @@ const ProductDesktopVariant = ({
   isVariant,
 }) => {
   const router = useRouter();
-  const auth = useAuth();
+  let auth = useAuth();
   const { slug } = router.query;
 
   const [lowestPrice, setLowestPrice] = useState(null);
@@ -91,8 +91,34 @@ const ProductDesktopVariant = ({
     setAddCartAlert(true);
   };
 
-  const handleBuy = (variant) => {
-    const quantity = variantQuantityRefs.current[product.id].value;
+  const handleBuy = async (variant) => {
+    const quantity = variantQuantityRefs?.current[product.id]?.value;
+    let isLoggedIn = typeof auth === 'object';
+
+    if (!isLoggedIn) {
+      const currentUrl = encodeURIComponent(router.asPath);
+      await router.push(`/login?next=${currentUrl}`);
+
+      // Tunggu login berhasil, misalnya dengan memantau perubahan status auth.
+      const authCheckInterval = setInterval(() => {
+        const newAuth = getAuth();
+        if (typeof newAuth === 'object') {
+          isLoggedIn = true;
+          auth = newAuth; // Update nilai auth setelah login
+          clearInterval(authCheckInterval);
+        }
+      }, 500); // Periksa status login setiap 500ms
+
+      await new Promise((resolve) => {
+        const checkLogin = setInterval(() => {
+          if (isLoggedIn) {
+            clearInterval(checkLogin);
+            resolve(null);
+          }
+        }, 500);
+      });
+    }
+
     if (!validQuantity(quantity)) return;
 
     updateItemCart({
-- 
cgit v1.2.3

