// web/js/pages/user/UserTabsBrowse.js
// ✅ 1. Komponen BrowseTab (Barang Ditemukan)
const BrowseTab = ({ state, handlers }) => {
const {
filteredItems,
loading,
searchTerm,
setSearchTerm,
categoryFilter,
setCategoryFilter,
categories,
user,
} = state;
const { handleViewDetail, handleClaim } = handlers;
return (
{loading ? (
) : (
<>
{filteredItems.map((item) => (
))}
{filteredItems.length === 0 && (
📦
Tidak ada barang ditemukan sesuai pencarian.
)}
>
)}
);
};
// ✅ 2. Komponen PublicLostItemsTab (Barang Hilang Publik)
const PublicLostItemsTab = ({ state, handlers }) => {
const { publicLostItems, loading, user } = state;
const [showContactModal, setShowContactModal] = React.useState(false);
const [selectedLostItem, setSelectedLostItem] = React.useState(null);
const [showDetailModal, setShowDetailModal] = React.useState(false);
const [selectedDetailItem, setSelectedDetailItem] = React.useState(null);
const handleShowContact = (item) => {
setSelectedLostItem(item);
setShowContactModal(true);
};
const handleShowDetail = (item) => {
setSelectedDetailItem(item);
setShowDetailModal(true);
};
return (
Semua Laporan Barang Hilang
{publicLostItems.length} laporan
{loading ? (
) : publicLostItems.length > 0 ? (
{publicLostItems.map((item) => {
const isMine = user && user.id === item.user_id;
return (
{/* Header */}
{item.name}
{/* ✅ Tampilkan Badge jika barang sendiri */}
{isMine ? (
BARANG SAYA
) : (
{item.status}
)}
🏷️
{item.category || item.category_name}
{item.location && (
📍
{item.location}
)}
👤
{item.user_name}
{item.status === "active" && !isMine && (
)}
{isMine && (
Kelola di tab "Barang Hilang Saya"
)}
);
})}
) : (
😢
Belum ada laporan barang hilang
)}
{/* Modal Detail Barang Hilang */}
setShowDetailModal(false)}
title="📋 Detail Barang Hilang"
>
{selectedDetailItem && (
{selectedDetailItem.name}
🏷️{" "}
{selectedDetailItem.category ||
selectedDetailItem.category_name ||
"-"}
•
📅 {Helpers.formatDate(selectedDetailItem.date_lost)}
📍 Lokasi Hilang
{selectedDetailItem.location || "-"}
🎨 Warna/Ciri
{selectedDetailItem.color || "-"}
📝 Deskripsi Lengkap
"{selectedDetailItem.description}"
👤
Dilaporkan Oleh
{selectedDetailItem.user_name}
)}
{/* Modal Kontak (Jika diperlukan) */}
setShowContactModal(false)}
title="👋 Anda Menemukan Barang Ini?"
>
{selectedLostItem && (
👤
Silakan hubungi pemilik:
{selectedLostItem.user_name}
{selectedLostItem.user_contact ? (
📞 Hubungi via WhatsApp
) : (
Kontak tidak ditampilkan secara publik
)}
📝
Laporkan Temuan
Agar lebih aman, Anda bisa melaporkan barang ini sebagai
"Ditemukan" di sistem kami.
)}
);
};
// Export ke window agar bisa diakses oleh UserApp
window.BrowseTab = BrowseTab;
window.PublicLostItemsTab = PublicLostItemsTab;