fix: expose tender detail loading errors and retry

This commit is contained in:
2026-09-06 09:23:13 +03:00
parent a34b758430
commit e07be66e7f
5 changed files with 73 additions and 15 deletions
+17 -8
View File
@@ -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,