Expose partial item search failures and allow query-scoped retries

This commit is contained in:
2026-09-06 10:31:58 +03:00
parent 0c16bbd96f
commit 21e80d0dd6
5 changed files with 53 additions and 12 deletions
+11 -6
View File
@@ -58,21 +58,26 @@ export const AppProvider = ({ children }) => {
// ilk birkaç kalem taşınıyor, tam arama sunucuda yapılıyor.
const [kalemSonucu, setKalemSonucu] = useState(null);
const kalemEslesen = matchingItemResults(kalemSonucu, searchQuery);
const [kalemRetry,setKalemRetry] = useState(0);
const retryItemSearch = () => setKalemRetry(n=>n+1);
const itemSearchState = kalemSonucu?.query === normalizeTenderSearch(searchQuery) ? kalemSonucu : null;
useEffect(() => {
const q = searchQuery.trim();
if (q.length < 2) { setKalemSonucu(null); return; }
let iptal = false;
const controller=new AbortController();
setKalemSonucu({query:normalizeTenderSearch(q),status:'loading',matches:null});
const zaman = setTimeout(() => {
import('../services/kalem')
.then(({ kalemAra }) => kalemAra(q))
.then(({ kalemAra }) => kalemAra(q,{signal:controller.signal}))
.then((sonuclar) => {
if (iptal) return;
setKalemSonucu({query:normalizeTenderSearch(q),matches:sonuclar.length ? new Map(sonuclar.map((s) => [s.ikn, s.eslesen])) : null});
setKalemSonucu({query:normalizeTenderSearch(q),status:'loaded',matches:sonuclar.length ? new Map(sonuclar.map((s) => [s.ikn, s.eslesen])) : null});
})
.catch(() => { if (!iptal) setKalemSonucu(null); });
.catch(error => { if (!iptal) setKalemSonucu({query:normalizeTenderSearch(q),status:'error',error:error.message,matches:null}); });
}, 350);
return () => { iptal = true; clearTimeout(zaman); };
}, [searchQuery]);
return () => { iptal = true; controller.abort(); clearTimeout(zaman); };
}, [searchQuery,kalemRetry]);
const [selectedCity, setSelectedCity] = useState('');
const [selectedAlimTuru, setSelectedAlimTuru] = useState('');
const [selectedKurumTipi, setSelectedKurumTipi] = useState('');
@@ -725,7 +730,7 @@ export const AppProvider = ({ children }) => {
handleLogout,
liveStats,
searchQuery,
kalemEslesen,
kalemEslesen, itemSearchState, retryItemSearch,
setSearchQuery,
selectedCity,
setSelectedCity,