mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 07:31:12 -05:00
feat: Implement Phase 4 Streamlined Enhancements
This commit is contained in:
@@ -47,7 +47,7 @@ export interface RealtimeSubscriptionConfig {
|
||||
/** Pause subscriptions when tab is hidden (default: true) */
|
||||
pauseWhenHidden?: boolean;
|
||||
|
||||
/** Debounce delay for UPDATE events in milliseconds (default: 1000) */
|
||||
/** Debounce delay for UPDATE events in milliseconds (default: 500) */
|
||||
debounceMs?: number;
|
||||
|
||||
/** Entity cache for resolving entity names */
|
||||
@@ -95,7 +95,7 @@ export function useRealtimeSubscriptions(
|
||||
onUpdateItem,
|
||||
onItemRemoved,
|
||||
pauseWhenHidden = true,
|
||||
debounceMs = 1000,
|
||||
debounceMs = 500,
|
||||
entityCache,
|
||||
profileCache,
|
||||
recentlyRemovedIds,
|
||||
@@ -314,6 +314,7 @@ export function useRealtimeSubscriptions(
|
||||
*/
|
||||
const handleUpdate = useCallback(async (payload: any) => {
|
||||
const updatedSubmission = payload.new as any;
|
||||
const oldSubmission = payload.old as any;
|
||||
|
||||
console.log('🔄 Realtime UPDATE:', updatedSubmission.id);
|
||||
|
||||
@@ -335,7 +336,24 @@ export function useRealtimeSubscriptions(
|
||||
return;
|
||||
}
|
||||
|
||||
// Debounce the update
|
||||
// Skip debounce for status changes (critical updates)
|
||||
const isStatusChange = oldSubmission?.status !== updatedSubmission.status;
|
||||
|
||||
if (isStatusChange) {
|
||||
console.log('⚡ Status change detected, invalidating immediately');
|
||||
await queryClient.invalidateQueries({ queryKey: ['moderation-queue'] });
|
||||
|
||||
const matchesEntity = matchesEntityFilter(updatedSubmission, filters.entityFilter);
|
||||
const matchesStatus = matchesStatusFilter(updatedSubmission, filters.statusFilter);
|
||||
const shouldBeInQueue = matchesEntity && matchesStatus;
|
||||
|
||||
if (!shouldBeInQueue) {
|
||||
onItemRemoved(updatedSubmission.id);
|
||||
}
|
||||
return; // Skip debounced update
|
||||
}
|
||||
|
||||
// Use debounce for non-critical updates
|
||||
debouncedUpdate(updatedSubmission.id, async () => {
|
||||
console.log('🔄 Invalidating query due to UPDATE:', updatedSubmission.id);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user