summaryrefslogtreecommitdiff
path: root/src-migrate/modules
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2025-06-16 02:05:40 +0000
committerIT Fixcomart <it@fixcomart.co.id>2025-06-16 02:05:40 +0000
commit755163a9f803e6959afb4568baa55538b9628cab (patch)
tree4469b0d7c6e8b2a7185b271d9589e8de4724d4f2 /src-migrate/modules
parent5669295b8cff1a9c9e559dd263599123a2ad6e92 (diff)
parent8ca6c0aa1b2a578332ff1c3706f58530f549352e (diff)
Merged in biteship-merge (pull request #420)
Biteship merge
Diffstat (limited to 'src-migrate/modules')
-rw-r--r--src-migrate/modules/product-detail/components/Information.tsx29
-rw-r--r--src-migrate/modules/product-detail/components/ProductDetail.tsx1
-rw-r--r--src-migrate/modules/product-detail/hook/useVariant.ts18
3 files changed, 40 insertions, 8 deletions
diff --git a/src-migrate/modules/product-detail/components/Information.tsx b/src-migrate/modules/product-detail/components/Information.tsx
index 5e1ea186..a7a58cbc 100644
--- a/src-migrate/modules/product-detail/components/Information.tsx
+++ b/src-migrate/modules/product-detail/components/Information.tsx
@@ -11,7 +11,7 @@ import Link from 'next/link';
import { useEffect, useRef, useState } from 'react';
import currencyFormat from '@/core/utils/currencyFormat';
-import { InputGroup, InputRightElement } from '@chakra-ui/react';
+import { InputGroup, InputRightElement, Spinner } from '@chakra-ui/react';
import { ChevronDownIcon } from '@heroicons/react/24/outline';
import Image from 'next/image';
import { formatToShortText } from '~/libs/formatNumber';
@@ -19,6 +19,7 @@ import { createSlug } from '~/libs/slug';
import { getVariantSLA } from '~/services/productVariant';
import { IProductDetail } from '~/types/product';
import { useProductDetail } from '../stores/useProductDetail';
+import useVariant from '../hook/useVariant';
const Skeleton = dynamic(() =>
import('@chakra-ui/react').then((mod) => mod.Skeleton)
@@ -41,6 +42,9 @@ const Information = ({ product }: Props) => {
const [variantOptions, setVariantOptions] = useState<any[]>(
product?.variants
);
+ const variantId = selectedVariant?.id;
+ const { slaVariant, isLoading } = useVariant({ variantId });
+
// let variantOptions = product?.variants;
// const querySLA = useQuery<IProductVariantSLA>({
@@ -50,14 +54,8 @@ const Information = ({ product }: Props) => {
// });
// const sla = querySLA?.data;
- const getsla = async () => {
- const querySLA = await getVariantSLA(selectedVariant?.id);
- setSla(querySLA);
- };
-
useEffect(() => {
if (selectedVariant) {
- getsla();
setInputValue(
selectedVariant?.code +
(selectedVariant?.attributes[0]
@@ -67,6 +65,16 @@ const Information = ({ product }: Props) => {
}
}, [selectedVariant]);
+ useEffect(() => {
+ if (isLoading){
+ setSla(null);
+ }
+ if (slaVariant) {
+ setSla(slaVariant);
+ }
+ }, [slaVariant, isLoading]);
+
+
const handleOnChange = (vals: any) => {
setDisableFilter(true);
let code = vals.replace(/\s-\s.*$/, '').trim();
@@ -223,7 +231,12 @@ const Information = ({ product }: Props) => {
</div>
<div className={style['row']}>
<div className={style['label']}>Persiapan Barang</div>
- <div className={style['value']}>{sla?.sla_date}</div>
+ {isLoading && (
+ <div className={style['value']}>
+ <Skeleton height={5} width={100} />
+ </div>
+ )}
+ {!isLoading && <div className={style['value']}>{sla?.sla_date}</div>}
</div>
</div>
);
diff --git a/src-migrate/modules/product-detail/components/ProductDetail.tsx b/src-migrate/modules/product-detail/components/ProductDetail.tsx
index 0660b9c0..192e1dc3 100644
--- a/src-migrate/modules/product-detail/components/ProductDetail.tsx
+++ b/src-migrate/modules/product-detail/components/ProductDetail.tsx
@@ -42,6 +42,7 @@ const ProductDetail = ({ product }: Props) => {
setIsApproval,
isApproval,
setSelectedVariant,
+ setSla,
} = useProductDetail();
useEffect(() => {
diff --git a/src-migrate/modules/product-detail/hook/useVariant.ts b/src-migrate/modules/product-detail/hook/useVariant.ts
new file mode 100644
index 00000000..18451f7e
--- /dev/null
+++ b/src-migrate/modules/product-detail/hook/useVariant.ts
@@ -0,0 +1,18 @@
+import { useQuery } from "react-query"
+import { number } from "zod"
+import { getVariantById, getVariantSLA } from "~/services/productVariant"
+
+interface Props {
+ variantId : number
+}
+const useVariant = ({variantId}:Props) => {
+ const fetchVariant = async () => await getVariantSLA(variantId )
+ const {data, isLoading, refetch} = useQuery(variantId ? `variant-${variantId}` : '', fetchVariant,
+ {
+ enabled: !!variantId,
+ })
+
+ return {slaVariant: data, isLoading, refetch}
+}
+
+export default useVariant \ No newline at end of file