fix: normalize Turkish search and isolate query item matches
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { normalizeTenderSearch, matchingItemResults } from '../services/tenderSearch';
|
||||
import React, {createContext, useContext, useState, useEffect, useMemo, useRef } from 'react';
|
||||
import { parseWebsiteCapabilitiesDynamically } from '../services/webScraperService';
|
||||
import { havuzuPuanla, profilMetni, profilTerimleri } from '../services/uyum';
|
||||
@@ -54,19 +55,20 @@ export const AppProvider = ({ children }) => {
|
||||
// Kalem havuzunda arama: firmanın kendi ürününü ("eldiven", "ortopedik vida")
|
||||
// hangi ihalelerin teklif cetvelinde geçtiğini bulması için. Kartta yalnızca
|
||||
// ilk birkaç kalem taşınıyor, tam arama sunucuda yapılıyor.
|
||||
const [kalemEslesen, setKalemEslesen] = useState(null); // Map(ikn → eşleşen kalemler)
|
||||
const [kalemSonucu, setKalemSonucu] = useState(null);
|
||||
const kalemEslesen = matchingItemResults(kalemSonucu, searchQuery);
|
||||
useEffect(() => {
|
||||
const q = searchQuery.trim();
|
||||
if (q.length < 2) { setKalemEslesen(null); return; }
|
||||
if (q.length < 2) { setKalemSonucu(null); return; }
|
||||
let iptal = false;
|
||||
const zaman = setTimeout(() => {
|
||||
import('../services/kalem')
|
||||
.then(({ kalemAra }) => kalemAra(q))
|
||||
.then((sonuclar) => {
|
||||
if (iptal) return;
|
||||
setKalemEslesen(sonuclar.length ? new Map(sonuclar.map((s) => [s.ikn, s.eslesen])) : null);
|
||||
setKalemSonucu({query:normalizeTenderSearch(q),matches:sonuclar.length ? new Map(sonuclar.map((s) => [s.ikn, s.eslesen])) : null});
|
||||
})
|
||||
.catch(() => { if (!iptal) setKalemEslesen(null); });
|
||||
.catch(() => { if (!iptal) setKalemSonucu(null); });
|
||||
}, 350);
|
||||
return () => { iptal = true; clearTimeout(zaman); };
|
||||
}, [searchQuery]);
|
||||
|
||||
Reference in New Issue
Block a user