mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 23:51:13 -05:00
Fix silent polling logic
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user