fix: expose tender detail loading errors and retry
This commit is contained in:
@@ -281,26 +281,33 @@ export const AppProvider = ({ children }) => {
|
||||
}, []);
|
||||
|
||||
const [activeTenderDetail, setActiveTenderDetail] = useState(null);
|
||||
const [detailLoad, setDetailLoad] = useState(null);
|
||||
const [detailRetry, setDetailRetry] = useState(0);
|
||||
const retryTenderDetail = () => setDetailRetry(value => value + 1);
|
||||
|
||||
// Canlı ihalede detay açıldığında ilan metnini API'den tamamla
|
||||
useEffect(() => {
|
||||
const t = activeTenderDetail;
|
||||
if (!t || !t.id?.startsWith('ilan-') || t.aciklama) return;
|
||||
if (!t || !t.id?.startsWith('ilan-') || t.aciklama) { setDetailLoad(null); return; }
|
||||
let cancelled = false;
|
||||
fetchTenderDetail(t.id)
|
||||
const controller = new AbortController();
|
||||
setDetailLoad({id:t.id,status:'loading'});
|
||||
fetchTenderDetail(t.id, {signal:controller.signal})
|
||||
.then(detail => {
|
||||
if (cancelled || !detail.aciklama) return;
|
||||
if (cancelled) return;
|
||||
const source = publicTender(detail);
|
||||
setDetailLoad({id:t.id,status:'loaded'});
|
||||
setActiveTenderDetail(prev =>
|
||||
prev && prev.id === t.id ? { ...prev, ...detail } : prev
|
||||
prev && prev.id === t.id ? { ...prev, ...source } : prev
|
||||
);
|
||||
setTenders(prev =>
|
||||
prev.map(x => (x.id === t.id ? { ...x, ...detail } : x))
|
||||
prev.map(x => (x.id === t.id ? { ...x, ...source } : x))
|
||||
);
|
||||
})
|
||||
.catch(() => {});
|
||||
return () => { cancelled = true; };
|
||||
.catch(error => { if (!cancelled) setDetailLoad({id:t.id,status:'error',error:error.message}); });
|
||||
return () => { cancelled = true; controller.abort(); };
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [activeTenderDetail?.id]);
|
||||
}, [activeTenderDetail?.id, detailRetry]);
|
||||
const [isDetailedSearchOpen, setIsDetailedSearchOpen] = useState(false);
|
||||
const [isCompanyScannerOpen, setIsCompanyScannerOpen] = useState(false);
|
||||
const [isAiSpecAnalyzerOpen, setIsAiSpecAnalyzerOpen] = useState(false);
|
||||
@@ -737,6 +744,8 @@ export const AppProvider = ({ children }) => {
|
||||
addSavedFilter,
|
||||
deleteSavedFilter,
|
||||
activeTenderDetail,
|
||||
detailLoad,
|
||||
retryTenderDetail,
|
||||
setActiveTenderDetail,
|
||||
isDetailedSearchOpen,
|
||||
setIsDetailedSearchOpen,
|
||||
|
||||
Reference in New Issue
Block a user