Fix: Improve Edit and Release Lock button reliability

This commit is contained in:
gpt-engineer-app[bot]
2025-10-15 13:55:29 +00:00
parent c0d175fc67
commit 6ca6747752
2 changed files with 14 additions and 4 deletions

View File

@@ -165,7 +165,7 @@ export const ModerationQueue = forwardRef<ModerationQueueRef>((props, ref) => {
item={item}
isMobile={isMobile}
actionLoading={queueManager.actionLoading}
isLockedByMe={queueManager.queue.isLockedByMe(item.id)}
isLockedByMe={queueManager.queue.isLockedByMe(item.id, item.assigned_to, item.locked_until)}
isLockedByOther={queueManager.queue.isLockedByOther(item.id, item.assigned_to, item.locked_until)}
lockStatus={getLockStatus({ assigned_to: item.assigned_to, locked_until: item.locked_until }, user?.id || '')}
currentLockSubmissionId={queueManager.queue.currentLock?.submissionId}

View File

@@ -414,9 +414,19 @@ export const useModerationQueue = (config?: UseModerationQueueConfig) => {
}, [user, currentLock, toast, fetchStats]);
// Check if submission is locked by current user
const isLockedByMe = useCallback((submissionId: string): boolean => {
return currentLock?.submissionId === submissionId;
}, [currentLock]);
const isLockedByMe = useCallback((submissionId: string, assignedTo?: string | null, lockedUntil?: string | null): boolean => {
// Check local state first (optimistic UI - immediate feedback)
if (currentLock?.submissionId === submissionId) return true;
// Also check database state (source of truth)
if (assignedTo && lockedUntil && user?.id) {
const isAssignedToMe = assignedTo === user.id;
const isLockActive = new Date(lockedUntil) > new Date();
return isAssignedToMe && isLockActive;
}
return false;
}, [currentLock, user]);
// Check if submission is locked by another moderator
const isLockedByOther = useCallback((submissionId: string, assignedTo: string | null, lockedUntil: string | null): boolean => {