const MyFoundItemsTab = ({ state, handlers }) => { const { myFoundItems, loading, user } = state; const { showToast, loadData } = handlers; const handleApproveItem = async (item) => { if (!item.direct_claim_id) { showToast("⚠️ Tidak ada klaim untuk item ini", "error"); return; } const confirmMsg = `✅ Konfirmasi Penerimaan Barang Apakah Anda yakin barang "${item.name}" ini adalah milik Anda? Jika Ya: - Status akan berubah menjadi "verified" - Anda bisa koordinasi dengan penemu untuk pengambilan - Kasus akan dilanjutkan ⚠️ Pastikan ini benar-benar barang Anda!`; if (!confirm(confirmMsg)) return; try { state.setLoading(true); // ✅ ENDPOINT YANG BENAR - menggunakan claim ID await ApiUtils.post(`/api/user/claims/${item.direct_claim_id}/respond`, { action: "approve", }); showToast( "✅ Berhasil! Silakan koordinasi pengambilan dengan penemu.", "success" ); loadData(); } catch (error) { console.error("Error approving item:", error); showToast("Gagal menerima: " + error.message, "error"); } finally { state.setLoading(false); } }; const handleRejectItem = async (item) => { if (!item.direct_claim_id) { showToast("⚠️ Tidak ada klaim untuk item ini", "error"); return; } const reason = prompt( "❌ Alasan Penolakan (opsional):\n\nContoh: Bukan barang saya, warna berbeda, dll." ); if (reason === null) return; // User cancelled const confirmMsg = `❌ Konfirmasi Penolakan Yakin menolak barang "${item.name}"? ${reason ? `Alasan: ${reason}` : "(Tanpa alasan)"} Barang akan kembali dalam status pencarian.`; if (!confirm(confirmMsg)) return; try { state.setLoading(true); // ✅ ENDPOINT YANG BENAR - menggunakan claim ID await ApiUtils.post(`/api/user/claims/${item.direct_claim_id}/respond`, { action: "reject", }); showToast( "❌ Barang ditolak. Status kembali dalam pencarian.", "success" ); loadData(); } catch (error) { console.error("Error rejecting item:", error); showToast("Gagal menolak: " + error.message, "error"); } finally { state.setLoading(false); } }; return (

📦 Barang yang Dilaporkan Orang Lain Menemukan

Barang hilang Anda yang dilaporkan orang lain menemukan - butuh konfirmasi Anda

{/* Stats Cards */}
{ myFoundItems.filter((i) => i.status === "pending_verification") .length }
Menunggu Konfirmasi
{myFoundItems.filter((i) => i.status === "verified").length}
Diverifikasi
{myFoundItems.length}
Total
{loading ? (

Memuat data...

) : myFoundItems.length > 0 ? (
{myFoundItems.map((item) => { const isPendingVerification = item.status === "pending_verification"; const isVerified = item.status === "verified"; return (
{/* Header */}

{item.name}

{item.category_name && (

🏷️ {item.category_name}

)}
{isPendingVerification ? "⏳ Menunggu" : isVerified ? "✅ Verified" : item.status}
{/* Item Details */}
{item.color && (
🎨 Warna: {item.color}
)} {item.location && (
📍 {item.location}
)} {item.date_found && (
📅 {Helpers.formatDate(item.date_found)}
)} {item.reporter_name && (
👤 Ditemukan oleh: {item.reporter_name}
)}
{/* Description */} {item.description && (
Deskripsi:

{item.description}

)} {/* Pending Verification Alert */} {isPendingVerification && (
⚠️ Konfirmasi Diperlukan

Seseorang menemukan barang yang sesuai dengan laporan Anda. Silakan konfirmasi apakah ini benar barang Anda.

)} {/* Verified Alert */} {isVerified && (
Sudah Diverifikasi

Anda telah mengonfirmasi ini barang Anda. Koordinasikan pengambilan.

)} {/* Action Buttons */}
{isPendingVerification && ( <> {/* Approve Button */} {/* Reject Button */} )} {/* Detail Button */}
); })}
) : (
📭

Belum ada barang yang dilaporkan ditemukan

Ketika seseorang menemukan barang Anda, akan muncul di sini

)}
); }; window.MyFoundItemsTab = MyFoundItemsTab;