Fix silent polling logic

This commit is contained in:
gpt-engineer-app[bot]
2025-10-09 13:00:53 +00:00
parent b1c62093aa
commit a02442a3cc

View File

@@ -102,6 +102,7 @@ export const ModerationQueue = forwardRef<ModerationQueueRef>((props, ref) => {
const fetchInProgressRef = useRef(false);
const itemsRef = useRef<ModerationItem[]>([]);
const loadedIdsRef = useRef<Set<string>>(new Set());
const lastFetchTimestampRef = useRef<string | null>(null);
// Get admin settings for polling configuration
const {
@@ -206,6 +207,11 @@ export const ModerationQueue = forwardRef<ModerationQueueRef>((props, ref) => {
submissionsQuery = submissionsQuery.neq('submission_type', 'photo');
}
// Silent polling: only fetch submissions created/updated since last poll
if (silent && lastFetchTimestampRef.current) {
submissionsQuery = submissionsQuery.gt('submitted_at', lastFetchTimestampRef.current);
}
// CRM-style claim filtering: moderators only see unclaimed OR self-assigned submissions
// Admins see all submissions
if (!isAdmin && !isSuperuser) {
@@ -427,6 +433,9 @@ export const ModerationQueue = forwardRef<ModerationQueueRef>((props, ref) => {
const currentPreserveInteraction = preserveInteractionRef.current;
if (silent) {
// Update timestamp for next poll
lastFetchTimestampRef.current = new Date().toISOString();
// Background polling: behavior controlled by admin settings
const currentLoadedIds = loadedIdsRef.current;
const newSubmissions = moderationItems.filter(item => !currentLoadedIds.has(item.id));
@@ -484,6 +493,8 @@ export const ModerationQueue = forwardRef<ModerationQueueRef>((props, ref) => {
}
} else {
// Normal fetch: Load all items and reset pending
console.log('🔄 Manual refresh - replacing entire queue');
lastFetchTimestampRef.current = null; // Reset timestamp to fetch everything next time
setItems(moderationItems);
setPendingNewItems([]);
setNewItemsCount(0);