summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src-migrate/modules/product-detail/components/ProductComparisonModal.tsx6
-rw-r--r--src/pages/api/magento-product.ts4
-rw-r--r--src/pages/api/shop/search.js17
3 files changed, 14 insertions, 13 deletions
diff --git a/src-migrate/modules/product-detail/components/ProductComparisonModal.tsx b/src-migrate/modules/product-detail/components/ProductComparisonModal.tsx
index d9b0a436..b836c892 100644
--- a/src-migrate/modules/product-detail/components/ProductComparisonModal.tsx
+++ b/src-migrate/modules/product-detail/components/ProductComparisonModal.tsx
@@ -223,7 +223,6 @@ const ProductComparisonModal = ({ isOpen, onClose, mainProduct, selectedVariant
// ===========================================================================
useEffect(() => {
const delayDebounceFn = setTimeout(async () => {
- // Validasi panjang karakter (biarkan tetap minimal 3 agar tidak berat)
if (searchQuery.length > 0 && searchQuery.length < 3) {
setSearchResults([]);
return;
@@ -241,12 +240,9 @@ const ProductComparisonModal = ({ isOpen, onClose, mainProduct, selectedVariant
setIsSearching(true);
try {
- // [FIX 1] Gunakan 'let' agar tidak error saat diubah nilainya
let queryParam = '*';
if (searchQuery !== '') {
- // [FITUR] Wildcard Search: Ubah "7 inc" menjadi "*7* *inc*"
- // Ini membantu pencarian parsial (typo tolerance sederhana)
const words = searchQuery.trim().split(/\s+/);
queryParam = words.map(w => `*${w}*`).join(' ');
}
@@ -256,14 +252,12 @@ const ProductComparisonModal = ({ isOpen, onClose, mainProduct, selectedVariant
q: queryParam,
limit: '20',
fq: `attribute_set_id_i:${attrSetId}`,
- // [FIX 2] Matikan Grouping agar varian muncul terpisah
group: 'false'
});
const res = await fetch(`/api/shop/search?${params.toString()}`);
if (res.ok) {
const data = await res.json();
- // Ambil produk dari response
setSearchResults(data.response?.products || []);
} else {
setSearchResults([]);
diff --git a/src/pages/api/magento-product.ts b/src/pages/api/magento-product.ts
index 551a4a5e..28738878 100644
--- a/src/pages/api/magento-product.ts
+++ b/src/pages/api/magento-product.ts
@@ -12,8 +12,8 @@ export default async function handler(
return res.status(400).json({ error: 'SKUs are required' });
}
- const token = 'vxrtcjvztv1icgjzsui45de9kmwlz0lf';
- const baseUrl = 'https://pimdev.1211.my.id/rest/V1';
+ const token = process.env.MAGENTO_API_KEY || '';
+ const baseUrl = process.env.MAGENTO_API_HOST || '';
try {
const skuList = String(skus).split(','); // Contoh: ['221', '222', '223']
diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js
index 37cfa1bd..89d75cd0 100644
--- a/src/pages/api/shop/search.js
+++ b/src/pages/api/shop/search.js
@@ -35,11 +35,14 @@ export default async function handler(req, res) {
try {
let qCompare = q === '*' ? '*:*' : q;
- // Sanitasi Query
if (qCompare !== '*:*') {
- // Kita escape, tapi biarkan stringnya bersih (jangan ditambah wildcard * manual)
- // karena kita serahkan ke 'edismax' parser
qCompare = escapeSolrQuery(qCompare);
+ qCompare = qCompare.split(/\s+/).map(term => {
+ if (term && !term.includes('*')) {
+ return term + '*';
+ }
+ return term;
+ }).join(' ');
}
// [SOLUSI] Gunakan URLSearchParams untuk menyusun URL dengan aman
@@ -59,8 +62,12 @@ export default async function handler(req, res) {
// 3. display_name_s^1 : Cadangan
params.append('qf', 'default_code_s^20 search_keywords_t^10 display_name_s^1');
- // Minimum Match 100% (Semua kata harus ada), ubah jika ingin lebih longgar
- params.append('mm', '100%');
+ const compareWords = qCompare.split(/\s+/).filter(w => w.length > 0);
+ let compareMm = '100%';
+ if (compareWords.length >= 3) {
+ compareMm = '75%';
+ }
+ params.append('mm', compareMm);
if (group === 'false') {
params.append('group', 'false');