Expose partial item search failures and allow query-scoped retries
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user