summaryrefslogtreecommitdiff
path: root/src/lib/cart
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-02-17 17:07:50 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-02-17 17:07:50 +0700
commitf99e0aba70efad0deb907d8e27f09fc9f527c8a4 (patch)
treef0ac96e4e736a1d385e32553f0e641ee27e11fd3 /src/lib/cart
parent90e1edab9b6a8ccc09a49fed3addbec2cbc4e4c3 (diff)
Refactor
Diffstat (limited to 'src/lib/cart')
-rw-r--r--src/lib/cart/api/CartApi.js11
-rw-r--r--src/lib/cart/components/Cart.jsx30
-rw-r--r--src/lib/cart/hooks/useCart.js17
3 files changed, 58 insertions, 0 deletions
diff --git a/src/lib/cart/api/CartApi.js b/src/lib/cart/api/CartApi.js
new file mode 100644
index 00000000..9a5b5053
--- /dev/null
+++ b/src/lib/cart/api/CartApi.js
@@ -0,0 +1,11 @@
+import odooApi from "@/core/api/odooApi"
+
+const CartApi = async ({ variantIds }) => {
+ if (variantIds) {
+ const dataCart = await odooApi('GET', `/api/v1/product_variant/${variantIds}`)
+ return dataCart
+ }
+ return null
+}
+
+export default CartApi \ No newline at end of file
diff --git a/src/lib/cart/components/Cart.jsx b/src/lib/cart/components/Cart.jsx
new file mode 100644
index 00000000..5f9ae1c0
--- /dev/null
+++ b/src/lib/cart/components/Cart.jsx
@@ -0,0 +1,30 @@
+import Link from "@/core/components/elements/Link/Link"
+import useCart from "../hooks/useCart"
+import Image from "@/core/components/elements/Image/Image"
+
+const Cart = () => {
+ const { cart } = useCart()
+
+ return (
+ <div className="p-4">
+ <div className="flex justify-between mb-4">
+ <h1 className="font-semibold">Daftar Produk Belanja</h1>
+ <Link href="/">Cari Produk Lain</Link>
+ </div>
+ <div className="flex flex-col gap-y-4">
+ { cart.data?.map((product) => (
+ <div key={product.id} className="flex">
+ <div className="w-4/12">
+ <Image src={product?.parent?.image} alt={product?.name} className="object-contain object-center border border-gray_r-6 h-32 w-full rounded-md" />
+ </div>
+ <div className="flex-1 px-2">
+ <div>{ product?.parent?.name }</div>
+ </div>
+ </div>
+ )) }
+ </div>
+ </div>
+ )
+}
+
+export default Cart \ No newline at end of file
diff --git a/src/lib/cart/hooks/useCart.js b/src/lib/cart/hooks/useCart.js
new file mode 100644
index 00000000..44931b8a
--- /dev/null
+++ b/src/lib/cart/hooks/useCart.js
@@ -0,0 +1,17 @@
+import { getCart } from "@/core/utils/cart"
+import { useQuery } from "react-query"
+import _ from "lodash"
+import CartApi from "../api/CartApi"
+
+const useCart = () => {
+ const cart = getCart()
+ const variantIds = _.keys(cart).join(',')
+ const fetchCart = async () => CartApi({ variantIds })
+ const { data, isLoading } = useQuery('cart', fetchCart)
+
+ return {
+ cart: { data, isLoading }
+ }
+}
+
+export default useCart \ No newline at end of file