import React,{useEffect,useRef,useState} from 'react'; import {useApp} from '../../context/AppContext'; import {getToken} from '../../services/auth'; import {accountRequest,requireArray} from '../../services/accountRequest'; export function DeliveryQueue({weekly=false}){ const {isAdmin,authUser}=useApp(); return isAdmin?:null; } function Queue({weekly}){ const endpoint=weekly?'/api/admin/brief/outbox':'/api/admin/notify/outbox'; const [rows,setRows]=useState(null),[error,setError]=useState(null),[busy,setBusy]=useState(false); const alive=useRef(true),locked=useRef(false); const load=async()=>{const data=await accountRequest(endpoint);const rows=requireArray(data,'deliveries');if(alive.current)setRows(rows);}; const act=async fn=>{if(locked.current)return;locked.current=true;setBusy(true);setError(null);try{await fn();}catch(e){if(alive.current)setError(e.message);}finally{locked.current=false;if(alive.current)setBusy(false);}}; useEffect(()=>{alive.current=true;void act(load);return()=>{alive.current=false;};},[]); return

{weekly?'Haftalık özet gönderim incelemesi':'E-posta gönderim incelemesi'} · Yönetici

{weekly?'Haftalık özetin bekleyen mesajları ve inceleme kararları gösterilir.':'Bekleyen işler ve son inceleme kararları gösterilir (en fazla 50).'} Belirsiz gönderimi sağlayıcı kaydıyla karşılaştırın. Bu işlemler yeni mesaj göndermez.

{busy&&

Gönderim kayıtları işleniyor…

} {error&&

{error}

} {rows?.length===0&&

İncelenecek veya bekleyen gönderim yok.

} {rows?.map(row=>act(async()=>{await accountRequest(endpoint,{method:'POST',body:JSON.stringify({id:row.id,...input})});await load();})}/>)}
; } function Review({row,weekly,busy,resolve}){ const [note,setNote]=useState(''),[providerId,setProviderId]=useState(''),[confirmed,setConfirmed]=useState(false); const labels={pending:'Bekliyor',sending:'Gönderiliyor',uncertain:'Sonuç belirsiz',sent_manual:'Gönderildiği yönetici tarafından doğrulandı',skipped:'Yeniden gönderilmeden kapatıldı'}; return

{row.subject}

{String(row.to)} · {labels[row.state]}

Kayıt: {row.id}

{row.error&&

{row.error}

} {row.providerId&&

Sağlayıcı kaydı: {row.providerId}

} {row.review&&

{row.review.actor} · {new Date(row.review.at).toLocaleString('tr-TR')} · {row.review.note}

} {row.state==='uncertain'&&