From f62b2345f463695ef0f8f79830cd76b6e0332821 Mon Sep 17 00:00:00 2001
From: Rafi Zadanly <zadanlyr@gmail.com>
Date: Sat, 13 Jan 2024 10:35:22 +0700
Subject: Refactor src migrate folder

---
 .../product-detail/components/AddToCart.tsx        | 79 ++++++++++++++++++++++
 1 file changed, 79 insertions(+)
 create mode 100644 src-migrate/modules/product-detail/components/AddToCart.tsx

(limited to 'src-migrate/modules/product-detail/components/AddToCart.tsx')

diff --git a/src-migrate/modules/product-detail/components/AddToCart.tsx b/src-migrate/modules/product-detail/components/AddToCart.tsx
new file mode 100644
index 00000000..4accab17
--- /dev/null
+++ b/src-migrate/modules/product-detail/components/AddToCart.tsx
@@ -0,0 +1,79 @@
+import React from 'react'
+import { Button, useToast } from '@chakra-ui/react'
+import { getAuth } from '~/libs/auth'
+import { useRouter } from 'next/router'
+import Link from 'next/link'
+import { upsertUserCart } from '~/services/cart'
+
+type Props = {
+  variantId: number | null,
+  quantity?: number;
+  source?: 'buy' | 'add_to_cart';
+}
+
+const AddToCart = ({
+  variantId,
+  quantity = 1,
+  source = 'add_to_cart'
+}: Props) => {
+  const auth = getAuth()
+  const router = useRouter()
+  const toast = useToast({
+    position: 'top',
+    isClosable: true
+  })
+
+  const handleClick = async () => {
+    if (typeof auth !== 'object') {
+      const currentUrl = encodeURIComponent(router.asPath)
+      toast({
+        title: 'Masuk Akun',
+        description: <>
+          Masuk akun untuk dapat menambahkan barang ke keranjang belanja. {' '}
+          <Link className='underline' href={`/login?next=${currentUrl}`}>Klik disini</Link>
+        </>,
+        status: 'error',
+        duration: 4000,
+      })
+      return;
+    }
+
+    if (
+      !variantId ||
+      isNaN(quantity) ||
+      typeof auth !== 'object'
+    ) return;
+
+    toast.promise(
+      upsertUserCart(auth.id, 'product', variantId, quantity, true, source),
+      {
+        loading: { title: 'Menambahkan ke keranjang', description: 'Mohon tunggu...' },
+        success: { title: 'Menambahkan ke keranjang', description: 'Berhasil menambahkan ke keranjang belanja' },
+        error: { title: 'Menambahkan ke keranjang', description: 'Gagal menambahkan ke keranjang belanja' },
+      }
+    )
+
+    if (source === 'buy') {
+      router.push('/shop/checkout?source=buy')
+    }
+  }
+
+  const btnConfig = {
+    'add_to_cart': {
+      colorScheme: 'yellow',
+      text: 'Keranjang'
+    },
+    'buy': {
+      colorScheme: 'red',
+      text: 'Beli'
+    }
+  }
+
+  return (
+    <Button onClick={handleClick} colorScheme={btnConfig[source].colorScheme} className='w-full'>
+      {btnConfig[source].text}
+    </Button>
+  )
+}
+
+export default AddToCart
\ No newline at end of file
-- 
cgit v1.2.3


From 6e396f4a0ebd3d8ed394ae55a6fb55f295fc9a11 Mon Sep 17 00:00:00 2001
From: Rafi Zadanly <zadanlyr@gmail.com>
Date: Tue, 20 Feb 2024 10:31:36 +0700
Subject: Update add to cart button redirect to login page

---
 .../modules/product-detail/components/AddToCart.tsx       | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)

(limited to 'src-migrate/modules/product-detail/components/AddToCart.tsx')

diff --git a/src-migrate/modules/product-detail/components/AddToCart.tsx b/src-migrate/modules/product-detail/components/AddToCart.tsx
index 4accab17..ebd6be7a 100644
--- a/src-migrate/modules/product-detail/components/AddToCart.tsx
+++ b/src-migrate/modules/product-detail/components/AddToCart.tsx
@@ -1,8 +1,7 @@
-import React from 'react'
 import { Button, useToast } from '@chakra-ui/react'
-import { getAuth } from '~/libs/auth'
 import { useRouter } from 'next/router'
-import Link from 'next/link'
+
+import { getAuth } from '~/libs/auth'
 import { upsertUserCart } from '~/services/cart'
 
 type Props = {
@@ -26,15 +25,7 @@ const AddToCart = ({
   const handleClick = async () => {
     if (typeof auth !== 'object') {
       const currentUrl = encodeURIComponent(router.asPath)
-      toast({
-        title: 'Masuk Akun',
-        description: <>
-          Masuk akun untuk dapat menambahkan barang ke keranjang belanja. {' '}
-          <Link className='underline' href={`/login?next=${currentUrl}`}>Klik disini</Link>
-        </>,
-        status: 'error',
-        duration: 4000,
-      })
+      router.push(`/login?next=${currentUrl}`)
       return;
     }
 
-- 
cgit v1.2.3


From a698514b32353d8f6386ce8ba8c20941ab65f569 Mon Sep 17 00:00:00 2001
From: Rafi Zadanly <zadanlyr@gmail.com>
Date: Mon, 26 Feb 2024 15:12:12 +0700
Subject: Add qty append on upsert cart api

---
 src-migrate/modules/product-detail/components/AddToCart.tsx | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

(limited to 'src-migrate/modules/product-detail/components/AddToCart.tsx')

diff --git a/src-migrate/modules/product-detail/components/AddToCart.tsx b/src-migrate/modules/product-detail/components/AddToCart.tsx
index ebd6be7a..097db98a 100644
--- a/src-migrate/modules/product-detail/components/AddToCart.tsx
+++ b/src-migrate/modules/product-detail/components/AddToCart.tsx
@@ -36,7 +36,15 @@ const AddToCart = ({
     ) return;
 
     toast.promise(
-      upsertUserCart(auth.id, 'product', variantId, quantity, true, source),
+      upsertUserCart({
+        userId: auth.id,
+        type: 'product',
+        id: variantId,
+        qty: quantity,
+        selected: true,
+        source: source,
+        qtyAppend: true
+      }),
       {
         loading: { title: 'Menambahkan ke keranjang', description: 'Mohon tunggu...' },
         success: { title: 'Menambahkan ke keranjang', description: 'Berhasil menambahkan ke keranjang belanja' },
-- 
cgit v1.2.3

