Move to Phase 4-5

This commit is contained in:
gpt-engineer-app[bot]
2025-10-21 18:15:22 +00:00
parent ae548aa389
commit 3b82887974
8 changed files with 329 additions and 77 deletions

View File

@@ -13,6 +13,7 @@ import { useDebounce } from '@/hooks/useDebounce';
import { logger } from '@/lib/logger';
import { MODERATION_CONSTANTS } from '@/lib/moderation/constants';
import type { EntityFilter, StatusFilter, QueueTab, SortConfig, SortField } from '@/types/moderation';
import * as storage from '@/lib/localStorage';
export interface ModerationFiltersConfig {
/** Initial entity filter */
@@ -184,29 +185,18 @@ export function useModerationFilters(
// Persist filters to localStorage
useEffect(() => {
if (persist) {
try {
localStorage.setItem(
storageKey,
JSON.stringify({
entityFilter,
statusFilter,
activeTab,
})
);
} catch (error: unknown) {
console.error('Failed to persist filters:', error);
}
storage.setJSON(storageKey, {
entityFilter,
statusFilter,
activeTab,
});
}
}, [entityFilter, statusFilter, activeTab, persist, storageKey]);
// Persist sort to localStorage
useEffect(() => {
if (persist) {
try {
localStorage.setItem(`${storageKey}_sort`, JSON.stringify(sortConfig));
} catch (error: unknown) {
console.error('Failed to persist sort:', error);
}
storage.setJSON(`${storageKey}_sort`, sortConfig);
}
}, [sortConfig, persist, storageKey]);

View File

@@ -6,6 +6,7 @@
import { useState, useCallback, useEffect, useMemo } from 'react';
import { MODERATION_CONSTANTS } from '@/lib/moderation/constants';
import * as storage from '@/lib/localStorage';
export interface PaginationConfig {
/** Initial page number (1-indexed) */
@@ -149,17 +150,10 @@ export function usePagination(config: PaginationConfig = {}): PaginationState {
// Persist state
useEffect(() => {
if (persist) {
try {
localStorage.setItem(
storageKey,
JSON.stringify({
currentPage,
pageSize,
})
);
} catch (error: unknown) {
console.error('Failed to persist pagination state:', error);
}
storage.setJSON(storageKey, {
currentPage,
pageSize,
});
}
}, [currentPage, pageSize, persist, storageKey]);