// assets/js/pages/manager/ManagerApp.js
const { useState, useEffect } = React;
const ManagerApp = () => {
const state = useManagerState();
const handlers = useManagerHandlers(state);
const {
user,
setUser,
activeTab,
setActiveTab,
stats,
showDetailModal,
setShowDetailModal,
selectedItem,
showVerifyModal,
setShowVerifyModal,
selectedClaim,
toast,
setToast,
showCloseCaseModal,
setShowCloseCaseModal,
closeCaseData,
setCloseCaseData,
loading,
showReportFoundModal,
setShowReportFoundModal,
photoPreview,
setPhotoPreview,
showManualClaimModal,
setShowManualClaimModal,
selectedItemForClaim,
setSelectedItemForClaim,
showApproveModal,
setShowApproveModal,
} = state;
const {
loadData,
handleApproveClaim,
handleRejectClaim,
handleCloseCase,
submitCloseCase,
submitReportFound,
handlePhotoChange,
handleLogout,
submitApproveClaim,
} = handlers;
useEffect(() => {
if (!AuthUtils.checkAuthAndRedirect("manager")) return;
const currentUser = AuthUtils.getCurrentUser();
setUser(currentUser);
loadData();
}, []);
useEffect(() => {
if (activeTab === "claims") {
handlers.loadClaims();
}
}, [activeTab]);
return (
Dashboard Manager
Kelola barang temuan dan verifikasi klaim
{/* Stats */}
{/* Tabs */}
{/* Tab Content */}
{activeTab === "items" && (
)}
{activeTab === "lost-items" && (
)}
{activeTab === "claims" && (
)}
{/* Modals */}
setShowDetailModal(false)}
item={selectedItem}
/>
setShowVerifyModal(false)}
claim={selectedClaim}
onApprove={handleApproveClaim}
onReject={handleRejectClaim}
onCloseCase={handleCloseCase}
/>
setShowCloseCaseModal(false)}
claim={selectedClaim}
closeCaseData={closeCaseData}
setCloseCaseData={setCloseCaseData}
onSubmit={submitCloseCase}
loading={loading}
/>
{
setShowReportFoundModal(false);
setPhotoPreview(null);
}}
categories={state.categories}
onSubmit={submitReportFound}
loading={loading}
photoPreview={photoPreview}
onPhotoChange={(e) => handlePhotoChange(e)}
/>
{
state.setShowMatchLostItemModal(false);
state.setSelectedLostItem(null);
}}
lostItem={state.selectedLostItem}
items={state.items}
onSubmit={handlers.submitMatchLostItem}
loading={loading}
/>
setShowApproveModal(false)}
onSubmit={submitApproveClaim}
loading={loading}
/>
{
setShowManualClaimModal(false);
setSelectedItemForClaim(null);
}}
item={selectedItemForClaim}
onSubmit={handlers.submitManualClaim}
loading={loading}
/>
{/* Toast */}
{toast && (
setToast(null)}
/>
)}
);
};
ReactDOM.render(, document.getElementById("root"));