diff --git a/src/admin/hooks/useTableSort.ts b/src/admin/hooks/useTableSort.ts index 9dbbac3..b3ee6b5 100644 --- a/src/admin/hooks/useTableSort.ts +++ b/src/admin/hooks/useTableSort.ts @@ -1,23 +1,25 @@ import { useState, useCallback, useRef } from 'react' +interface SortState { + sort: string + order: 'asc' | 'desc' +} + export default function useTableSort(defaultSort = 'id', defaultOrder: 'asc' | 'desc' = 'desc') { - const [sort, setSort] = useState(defaultSort) - const [order, setOrder] = useState<'asc' | 'desc'>(defaultOrder) + const [state, setState] = useState({ sort: defaultSort, order: defaultOrder }) const userClicked = useRef(false) const handleSort = useCallback((column: string) => { userClicked.current = true - setSort(prev => { - if (prev === column) { - setOrder(o => (o === 'asc' ? 'desc' : 'asc')) - return prev + setState(prev => { + if (prev.sort === column) { + return { sort: column, order: prev.order === 'asc' ? 'desc' : 'asc' } } - setOrder('desc') - return column + return { sort: column, order: 'desc' } }) }, []) - const activeSort = userClicked.current ? sort : null + const activeSort = userClicked.current ? state.sort : null - return { sort, order, handleSort, activeSort } + return { sort: state.sort, order: state.order, handleSort, activeSort } }