From a7572147d987175ce1f52d32c9dbededdba985ea Mon Sep 17 00:00:00 2001 From: FIN-IT_AndriFP Date: Wed, 14 Jan 2026 10:46:21 +0700 Subject: (andri) fix search jika attribute set tidak ada di comparable --- .../components/ProductComparisonModal.tsx | 77 ++++++++++++++-------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/src-migrate/modules/product-detail/components/ProductComparisonModal.tsx b/src-migrate/modules/product-detail/components/ProductComparisonModal.tsx index 97f1d101..bc4c5415 100644 --- a/src-migrate/modules/product-detail/components/ProductComparisonModal.tsx +++ b/src-migrate/modules/product-detail/components/ProductComparisonModal.tsx @@ -166,7 +166,7 @@ const ProductComparisonModal = ({ isOpen, onClose, mainProduct, selectedVariant }, [products, isOpen]); // =========================================================================== - // 3. SEARCH LOGIC + // 3. SEARCH LOGIC // =========================================================================== useEffect(() => { const delayDebounceFn = setTimeout(async () => { @@ -177,16 +177,24 @@ const ProductComparisonModal = ({ isOpen, onClose, mainProduct, selectedVariant if (activeSearchSlot === null) return; + const attrSetId = selectedVariant?.attribute_set_id || mainProduct?.attribute_set_id; + + if (!attrSetId) { + console.warn("Search dibatalkan: Produk utama tidak memiliki attribute_set_id"); + setSearchResults([]); + setIsSearching(false); + return; + } + setIsSearching(true); try { - const attrSetId = selectedVariant?.attribute_set_id || mainProduct?.attribute_set_id; const queryParam = searchQuery === '' ? '*' : searchQuery; const params = new URLSearchParams({ source: 'compare', q: queryParam, limit: '20', - fq: attrSetId ? `attribute_set_id_i:${attrSetId}` : '' + fq: `attribute_set_id_i:${attrSetId}` }); const res = await fetch(`/api/shop/search?${params.toString()}`); @@ -363,33 +371,44 @@ const ProductComparisonModal = ({ isOpen, onClose, mainProduct, selectedVariant {/* HASIL SEARCH */} {activeSearchSlot === index && ( - {isSearching ? ( - - ) : searchResults.length > 0 ? ( - - {searchResults.map((res) => ( - handleAddProduct(res, index)} - > - - { (e.target as HTMLImageElement).src = '/images/no-image-compare.svg'; }} /> - - {res.displayName || res.name} - - {formatPrice(res.lowestPrice?.price || 0)} - - - - - ))} - - ) : ( - - {searchQuery === '' ? 'Menampilkan rekomendasi...' : 'Tidak ditemukan.'} + + {/* CEK ATTRIBUTE SET ID */} + {!selectedVariant?.attribute_set_id && !mainProduct?.attribute_set_id ? ( + + Perbandingan Tidak Tersedia + Produk utama tidak memiliki data kategori yang valid untuk dibandingkan. + ) : ( + <> + {isSearching ? ( + + ) : searchResults.length > 0 ? ( + + {searchResults.map((res) => ( + handleAddProduct(res, index)} + > + + { (e.target as HTMLImageElement).src = '/images/no-image-compare.svg'; }} /> + + {res.displayName || res.name} + + {formatPrice(res.lowestPrice?.price || 0)} + + + + + ))} + + ) : ( + + {searchQuery === '' ? 'Menampilkan rekomendasi...' : 'Produk tidak ditemukan.'} + + )} + )} )} -- cgit v1.2.3