const MyLostItemsTab = ({ state, handlers }) => { const { myLostItems, myClaims, loading } = state; const lostItemsWithClaims = myLostItems.filter((item) => { if (!item.direct_claim_id || !item.direct_claim_status) { return false; } const excludedStatuses = ["completed", "resolved", "case_closed"]; if (excludedStatuses.includes(item.status)) { return false; } if (excludedStatuses.includes(item.direct_claim_status)) { return false; } const pendingStatuses = ["waiting_owner", "verified", "claimed", "pending"]; return pendingStatuses.includes(item.direct_claim_status); }); const regularClaims = myClaims || []; // UPDATED: Menambahkan parameter isMyLostItem (default true) const getStatusBadge = (status, isMyLostItem = true) => { const badges = { active: { color: "bg-blue-500", text: "📍 Masih Hilang", emoji: "😢" }, claimed: { color: "bg-yellow-500", text: "⏳ Menunggu Persetujuan Anda", emoji: "🤔", }, found: { color: "bg-green-500", text: "✅ Ditemukan", emoji: "🎉" }, completed: { color: "bg-purple-600", text: "✅ Selesai - Barang Diterima", emoji: "🎉", }, resolved: { color: "bg-purple-600", text: "✅ Selesai - Dikembalikan", emoji: "🎉", }, pending: { color: "bg-yellow-500", text: "⏳ Menunggu Verifikasi", emoji: "⏳", }, approved: { color: "bg-green-500", text: "✅ Disetujui", emoji: "✅" }, rejected: { color: "bg-red-500", text: "❌ Ditolak", emoji: "❌" }, waiting_owner: { color: "bg-orange-500", // LOGIC FIX: Membedakan teks berdasarkan kepemilikan text: isMyLostItem ? "⏳ Menunggu Anda" : "⏳ Menunggu Owner", emoji: "👤", }, verified: { color: "bg-green-600", text: "✅ Terverifikasi", emoji: "✅", }, }; return ( badges[status] || { color: "bg-gray-500", text: status, emoji: "❓", } ); }; if (loading) { return (

Memuat data klaim...

); } return (
{/* Header Section */}

😢 Barang Hilang Saya

Kelola laporan kehilangan barang Anda

{/* SECTION 1: Barang Hilang Saya (Anda sebagai Owner) */} {lostItemsWithClaims.length > 0 && (

😢 Barang Hilang Saya {lostItemsWithClaims.length} item dengan klaim pending

Ada yang menemukan barang Anda! Silakan approve atau reject klaim mereka.

{lostItemsWithClaims.map((lostItem) => { // Context: True (Ini barang saya) const statusBadge = getStatusBadge( lostItem.direct_claim_status || lostItem.status, true ); const isWaitingOwner = lostItem.direct_claim_status === "waiting_owner"; const isVerified = lostItem.direct_claim_status === "verified" || lostItem.status === "found"; return (

{lostItem.name}

{statusBadge.emoji} {statusBadge.text}

📦 Kategori:{" "} {lostItem.category}

{lostItem.color && (

🎨 Warna:{" "} {lostItem.color}

)}

📍 Lokasi Hilang:{" "} {lostItem.location}

📅 Tanggal Hilang: {" "} {new Date(lostItem.date_lost).toLocaleDateString( "id-ID" )}

📝 Deskripsi:{" "} {lostItem.description}

{isWaitingOwner && (

🔔 Ada yang mengaku menemukan barang ini!

Seseorang telah mengajukan klaim untuk barang ini. Silakan putuskan apakah ini benar barang Anda.

)} {isVerified && (

Klaim Disetujui!

Anda telah menyetujui bahwa penemu menemukan barang Anda. Koordinasikan pengambilan barang, lalu konfirmasi setelah menerima barang.

)}
); })}
)} {/* SECTION 2: Klaim Barang yang Saya Ajukan (Anda sebagai Penemu) */} {regularClaims.length > 0 && (

🤝 Klaim Barang yang Saya Ajukan {regularClaims.length} klaim

{regularClaims.map((claim) => { // Context: False (Ini klaim saya ke orang lain/owner) // UPDATED: Pass false agar text menjadi "Menunggu Owner" const statusBadge = getStatusBadge(claim.status, false); return (

{claim.item_name}

{statusBadge.emoji} {statusBadge.text}

📝 Deskripsi:{" "} {claim.description}

📞 Kontak:{" "} {claim.contact}

📅 Tanggal Klaim:{" "} {new Date(claim.created_at).toLocaleDateString("id-ID")}

{claim.notes && (

💬 Catatan:{" "} {claim.notes}

)}
); })}
)} {lostItemsWithClaims.length === 0 && regularClaims.length === 0 && (
🔭

Belum Ada Klaim

Anda belum memiliki klaim atau barang hilang dengan klaim pending.

)}
); }; window.MyLostItemsTab = MyLostItemsTab;