feat: Implement Phase 4 Streamlined Enhancements

This commit is contained in:
gpt-engineer-app[bot]
2025-10-13 22:46:42 +00:00
parent 787e16753e
commit 68a2572c23
3 changed files with 52 additions and 12 deletions

View File

@@ -8,7 +8,14 @@
import { useQuery, useQueryClient } from '@tanstack/react-query';
import { fetchSubmissions, type QueryConfig } from '@/lib/moderation/queries';
import { supabase } from '@/integrations/supabase/client';
import type { ModerationItem } from '@/types/moderation';
import type {
ModerationItem,
EntityFilter,
StatusFilter,
QueueTab,
SortField,
SortDirection
} from '@/types/moderation';
/**
* Configuration for queue query
@@ -24,13 +31,13 @@ export interface UseQueueQueryConfig {
isSuperuser: boolean;
/** Entity filter */
entityFilter: string;
entityFilter: EntityFilter;
/** Status filter */
statusFilter: string;
statusFilter: StatusFilter;
/** Active tab */
tab: 'mainQueue' | 'archive';
tab: QueueTab;
/** Current page */
currentPage: number;
@@ -40,8 +47,8 @@ export interface UseQueueQueryConfig {
/** Sort configuration */
sortConfig: {
field: string;
direction: 'asc' | 'desc';
field: SortField;
direction: SortDirection;
};
/** Whether query is enabled (defaults to true) */
@@ -85,12 +92,12 @@ export function useQueueQuery(config: UseQueueQueryConfig): UseQueueQueryReturn
userId: config.userId || '',
isAdmin: config.isAdmin,
isSuperuser: config.isSuperuser,
entityFilter: config.entityFilter as any,
statusFilter: config.statusFilter as any,
entityFilter: config.entityFilter,
statusFilter: config.statusFilter,
tab: config.tab,
currentPage: config.currentPage,
pageSize: config.pageSize,
sortConfig: config.sortConfig as any,
sortConfig: config.sortConfig,
};
// Create stable query key (TanStack Query uses this for caching/deduplication)
@@ -113,6 +120,7 @@ export function useQueueQuery(config: UseQueueQueryConfig): UseQueueQueryReturn
const result = await fetchSubmissions(supabase, queryConfig);
if (result.error) {
console.error('❌ [TanStack Query] Error:', result.error);
throw result.error;
}
@@ -122,6 +130,8 @@ export function useQueueQuery(config: UseQueueQueryConfig): UseQueueQueryReturn
enabled: config.enabled !== false && !!config.userId,
staleTime: 30000, // 30 seconds
gcTime: 5 * 60 * 1000, // 5 minutes
retry: 2, // Retry failed requests up to 2 times
retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000), // Exponential backoff
});
// Invalidate helper