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
+15 -5
View File
@@ -26,11 +26,21 @@ export async function kalemleriGetir(ikn, {signal, timeoutMs = 30000} = {}) {
}
/** Kalem metninde arama — eşleşen İKN'ler. */
export async function kalemAra(q) {
const r = await fetch(`/api/kalem/ara?q=${encodeURIComponent(q)}`);
const d = await r.json().catch(() => ({}));
if (!d.success) return [];
return d.sonuclar || [];
export async function kalemAra(q,{signal,timeoutMs=30000}={}) {
const controller=new AbortController();
const cancel=()=>controller.abort();
if(signal?.aborted)cancel();else signal?.addEventListener('abort',cancel,{once:true});
let timedOut=false;
const timer=setTimeout(()=>{timedOut=true;controller.abort();},timeoutMs);
try {
const r=await fetch(`/api/kalem/ara?q=${encodeURIComponent(q)}`,{signal:controller.signal});
const d=await r.json().catch(()=>null);
if(!r.ok || d?.success!==true || !Array.isArray(d.sonuclar))throw new Error('Doküman kalemlerinde arama tamamlanamadı.');
return d.sonuclar;
} catch(error) {
if(timedOut)throw new Error('Doküman kalemlerinde arama zaman aşımına uğradı.');
throw error;
} finally {clearTimeout(timer);signal?.removeEventListener('abort',cancel);}
}
/**