Fix: Memoize settings and add defensive checks

This commit is contained in:
gpt-engineer-app[bot]
2025-10-12 23:47:29 +00:00
parent 045419db9a
commit 21c16870ee
2 changed files with 29 additions and 9 deletions

View File

@@ -1,4 +1,4 @@
import { useState, useImperativeHandle, forwardRef } from 'react';
import { useState, useImperativeHandle, forwardRef, useMemo } from 'react';
import { Card, CardContent } from '@/components/ui/card';
import { useToast } from '@/hooks/use-toast';
import { useUserRole } from '@/hooks/useUserRole';
@@ -28,20 +28,30 @@ export const ModerationQueue = forwardRef<ModerationQueueRef>((props, ref) => {
const { isAdmin, isSuperuser } = useUserRole();
const adminSettings = useAdminSettings();
// Memoize settings to prevent unnecessary effect re-runs
const settings = useMemo(() => ({
refreshMode: adminSettings.getAdminPanelRefreshMode(),
pollInterval: adminSettings.getAdminPanelPollInterval(),
refreshStrategy: adminSettings.getAutoRefreshStrategy(),
preserveInteraction: adminSettings.getPreserveInteractionState(),
useRealtimeQueue: adminSettings.getUseRealtimeQueue(),
refreshOnTabVisible: adminSettings.getRefreshOnTabVisible(),
}), [
adminSettings.getAdminPanelRefreshMode(),
adminSettings.getAdminPanelPollInterval(),
adminSettings.getAutoRefreshStrategy(),
adminSettings.getPreserveInteractionState(),
adminSettings.getUseRealtimeQueue(),
adminSettings.getRefreshOnTabVisible(),
]);
// Initialize queue manager (replaces all state management, fetchItems, effects)
const queueManager = useModerationQueueManager({
user,
isAdmin: isAdmin(),
isSuperuser: isSuperuser(),
toast,
settings: {
refreshMode: adminSettings.getAdminPanelRefreshMode(),
pollInterval: adminSettings.getAdminPanelPollInterval(),
refreshStrategy: adminSettings.getAutoRefreshStrategy(),
preserveInteraction: adminSettings.getPreserveInteractionState(),
useRealtimeQueue: adminSettings.getUseRealtimeQueue(),
refreshOnTabVisible: adminSettings.getRefreshOnTabVisible(),
}
settings,
});
// UI-only state