diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-08-29 17:05:44 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-08-29 17:05:44 +0700 |
| commit | 2710d13d4d417bfa17d6eeaa7493f06d8ae06aa8 (patch) | |
| tree | 60bc584e1b4806679776443162b7f8a1e5c85cfd /src/lib | |
| parent | 308563b3f45255450206decc03329dcc64c4bc50 (diff) | |
<Miqdad> No reload on status change
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/transaction/components/Transactions.jsx | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/lib/transaction/components/Transactions.jsx b/src/lib/transaction/components/Transactions.jsx index e22cd490..5466466c 100644 --- a/src/lib/transaction/components/Transactions.jsx +++ b/src/lib/transaction/components/Transactions.jsx @@ -41,6 +41,7 @@ import { DateRangePicker } from 'react-date-range'; import 'react-date-range/dist/styles.css'; import 'react-date-range/dist/theme/default.css'; + const Transactions = ({ context = '' }) => { const auth = useAuth(); const router = useRouter(); @@ -56,6 +57,8 @@ const Transactions = ({ context = '' }) => { } = router.query; const { setRefreshCart } = useProductCartContext(); + const [cachedAllData, setCachedAllData] = useState(null); // Simpan data "All" + const [currentData, setCurrentData] = useState([]); const [inputQuery, setInputQuery] = useState(q); const [toOthers, setToOthers] = useState(null); const [toCancel, setToCancel] = useState(null); @@ -338,17 +341,28 @@ const Transactions = ({ context = '' }) => { } }; - const handleStatusChange = (status) => { + const handleStatusChange = async (status) => { setStatusNew(status); setPageNew(1); - // opsional: sinkronkan ke URL - router.push({ - pathname: router.pathname, - query: { ...router.query, status }, - }); + + if (status === 'all' && cachedAllData) { + setCurrentData(cachedAllData); + return; + } + const data = await fetchSite(status, 1); + + if (status === 'all') { + setCachedAllData(data); + } + + setCurrentData(data); }; useEffect(() => { + setCachedAllData([]); + }, []); + + useEffect(() => { // bersihkan cache lama jika perlu (saat first mount) // (sengaja kosong; tidak pakai cached data di versi ini) }, []); |
