// assets/js/pages/user/UserTabsMy.js const MyLostItemsTab = ({ state, handlers, myClaims }) => { const { myLostItems, loading } = state; const { handleUserRespondClaim, handleUserCompleteCase, loadData } = handlers; // ✅ PERBAIKAN: Gunakan lost_item_id yang dikirim backend, jangan pakai Regex deskripsi const findMatchingClaim = (lostItemId) => { if (!myClaims || myClaims.length === 0) return null; // Cari claim yang memiliki lost_item_id sama dengan item ini // DAN statusnya relevan (menunggu owner, approved/verified) return myClaims.find((c) => c.lost_item_id === lostItemId); }; return (

Barang Hilang Saya

{loading ? (
Memuat data...
) : myLostItems.length > 0 ? (
{myLostItems.map((item) => { // ✅ PERBAIKAN UTAMA: Ambil klaim langsung dari objek item (dikirim backend) // Bukan mencari dari list myClaims const matchingClaim = item.direct_claim; return (

{item.name}

{/* Tampilkan Badge Status Item */} {item.status.replace("_", " ").toUpperCase()}
{/* --- LOGIKA TOMBOL APPROVE/REJECT --- */} {matchingClaim && (
{/* KASUS 1: STATUS WAITING_OWNER (Munculkan Tombol) */} {matchingClaim.status === "waiting_owner" && ( <>

🔔 DITEMUKAN OLEH:{" "} {matchingClaim.reporter_name || "Seseorang"}

"{matchingClaim.description}"

)} {/* KASUS 2: STATUS VERIFIED (Munculkan Tombol Selesai) */} {(matchingClaim.status === "verified" || matchingClaim.status === "approved") && ( <>

✅ SUDAH ANDA SETUJUI

Hubungi: {matchingClaim.contact}

)} {/* KASUS 3: STATUS REJECTED */} {matchingClaim.status === "rejected" && (

❌ KLAIM DITOLAK

)}
)}
); })}
) : (
Belum ada laporan kehilangan.
)}
); }; const MyFoundItemsTab = ({ state, handlers }) => { const { myFoundItems, loading, user } = state; const { handleViewDetail } = handlers; return (

Barang yang Saya Temukan

{loading ? (

Memuat data...

) : myFoundItems.length > 0 ? (
{myFoundItems.map((item) => (
{/* --- TAMBAHAN VISUAL UNTUK STATUS --- */} {/* Jika status Pending Claim (Menunggu Pemilik/Admin) */} {item.status === "pending_claim" && (

⏳ Menunggu Konfirmasi

Menunggu pemilik asli atau admin memverifikasi.

)} {/* Jika status Verified (Sudah Diapprove) */} {item.status === "verified" && (

✅ Terverifikasi

Pemilik telah mengonfirmasi. Silakan serahkan barang.

)} {/* Jika status Case Closed (Selesai) */} {item.status === "case_closed" && (

🏁 Kasus Selesai

Barang telah dikembalikan. Terima kasih!

)}
))}
) : (
🎉

Anda belum melaporkan barang temuan

)}
); }; const MyClaimsTab = ({ state, handlers }) => { const { myClaims, loading } = state; const { handleUserRespondClaim } = handlers; return (

Klaim Saya & Konfirmasi

{loading ? (

Memuat data...

) : myClaims.length > 0 ? (
{myClaims.map((claim) => ( ))}
) : (
🤝

Anda belum memiliki riwayat klaim

)}
); }; window.MyLostItemsTab = MyLostItemsTab; window.MyFoundItemsTab = MyFoundItemsTab; window.MyClaimsTab = MyClaimsTab;