feat(FE): Integrate UI store and pathname handling in table components

This commit is contained in:
rstubryan
2026-03-04 11:06:53 +07:00
parent 6e7dfebacc
commit 18ebf75aa7
3 changed files with 44 additions and 2 deletions
@@ -1,6 +1,8 @@
'use client';
import { ChangeEventHandler, useCallback, useMemo, useState } from 'react';
import { ChangeEventHandler, useCallback, useEffect, useMemo, useState } from 'react';
import { usePathname } from 'next/navigation';
import { useUiStore } from '@/stores/ui/ui.store';
import useSWR from 'swr';
import useSWRInfinite from 'swr/infinite';
import { CellContext, ColumnDef, SortingState } from '@tanstack/react-table';
@@ -139,6 +141,9 @@ const RowOptionsMenu = ({
};
const PurchaseTable = () => {
const { searchValue, setSearchValue, setTableState } = useUiStore();
const pathname = usePathname();
// ===== STATE MANAGEMENT =====
const [isDeleteLoading, setIsDeleteLoading] = useState(false);
const [selectedPurchase, setSelectedPurchase] = useState<Purchase | null>(
@@ -385,11 +390,20 @@ const PurchaseTable = () => {
setIsDeleteLoading(false);
}, [selectedPurchase?.id, refreshPurchaseRequests, deleteModal]);
useEffect(() => {
updateFilter('search', searchValue);
}, [searchValue, updateFilter]);
useEffect(() => {
setTableState('purchase-table', pathname);
}, [pathname, setTableState]);
const searchChangeHandler: ChangeEventHandler<HTMLInputElement> = useCallback(
(e) => {
setSearchValue(e.target.value);
updateFilter('search', e.target.value);
},
[updateFilter]
[updateFilter, setSearchValue]
);
const pageSizeChangeHandler = useCallback(