mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-24 04:51:13 -05:00
Refactor: Implement Phase 2 improvements
This commit is contained in:
@@ -85,6 +85,9 @@ export interface ModerationFilters {
|
||||
|
||||
/** Reset sort to default */
|
||||
resetSort: () => void;
|
||||
|
||||
/** Reset pagination to page 1 (callback) */
|
||||
onFilterChange?: () => void;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -106,7 +109,9 @@ export interface ModerationFilters {
|
||||
* </Select>
|
||||
* ```
|
||||
*/
|
||||
export function useModerationFilters(config: ModerationFiltersConfig = {}): ModerationFilters {
|
||||
export function useModerationFilters(
|
||||
config: ModerationFiltersConfig & { onFilterChange?: () => void } = {}
|
||||
): ModerationFilters {
|
||||
const {
|
||||
initialEntityFilter = 'all',
|
||||
initialStatusFilter = 'pending',
|
||||
@@ -115,6 +120,7 @@ export function useModerationFilters(config: ModerationFiltersConfig = {}): Mode
|
||||
persist = true,
|
||||
storageKey = 'moderationQueue_filters',
|
||||
initialSortConfig = { field: 'created_at', direction: 'asc' },
|
||||
onFilterChange,
|
||||
} = config;
|
||||
|
||||
// Load persisted filters on mount
|
||||
@@ -204,23 +210,26 @@ export function useModerationFilters(config: ModerationFiltersConfig = {}): Mode
|
||||
}
|
||||
}, [sortConfig, persist, storageKey]);
|
||||
|
||||
// Set entity filter with logging
|
||||
// Set entity filter with logging and pagination reset
|
||||
const setEntityFilter = useCallback((filter: EntityFilter) => {
|
||||
logger.log('🔍 Entity filter changed:', filter);
|
||||
setEntityFilterState(filter);
|
||||
}, []);
|
||||
onFilterChange?.();
|
||||
}, [onFilterChange]);
|
||||
|
||||
// Set status filter with logging
|
||||
// Set status filter with logging and pagination reset
|
||||
const setStatusFilter = useCallback((filter: StatusFilter) => {
|
||||
logger.log('🔍 Status filter changed:', filter);
|
||||
setStatusFilterState(filter);
|
||||
}, []);
|
||||
onFilterChange?.();
|
||||
}, [onFilterChange]);
|
||||
|
||||
// Set active tab with logging
|
||||
// Set active tab with logging and pagination reset
|
||||
const setActiveTab = useCallback((tab: QueueTab) => {
|
||||
logger.log('🔍 Tab changed:', tab);
|
||||
setActiveTabState(tab);
|
||||
}, []);
|
||||
onFilterChange?.();
|
||||
}, [onFilterChange]);
|
||||
|
||||
// Sort callbacks
|
||||
const setSortConfig = useCallback((config: SortConfig) => {
|
||||
@@ -283,5 +292,6 @@ export function useModerationFilters(config: ModerationFiltersConfig = {}): Mode
|
||||
sortBy,
|
||||
toggleSortDirection,
|
||||
resetSort,
|
||||
onFilterChange,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user