mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 16:51:13 -05:00
Fix: Improve Edit and Release Lock button reliability
This commit is contained in:
@@ -165,7 +165,7 @@ export const ModerationQueue = forwardRef<ModerationQueueRef>((props, ref) => {
|
|||||||
item={item}
|
item={item}
|
||||||
isMobile={isMobile}
|
isMobile={isMobile}
|
||||||
actionLoading={queueManager.actionLoading}
|
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)}
|
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 || '')}
|
lockStatus={getLockStatus({ assigned_to: item.assigned_to, locked_until: item.locked_until }, user?.id || '')}
|
||||||
currentLockSubmissionId={queueManager.queue.currentLock?.submissionId}
|
currentLockSubmissionId={queueManager.queue.currentLock?.submissionId}
|
||||||
|
|||||||
@@ -414,9 +414,19 @@ export const useModerationQueue = (config?: UseModerationQueueConfig) => {
|
|||||||
}, [user, currentLock, toast, fetchStats]);
|
}, [user, currentLock, toast, fetchStats]);
|
||||||
|
|
||||||
// Check if submission is locked by current user
|
// Check if submission is locked by current user
|
||||||
const isLockedByMe = useCallback((submissionId: string): boolean => {
|
const isLockedByMe = useCallback((submissionId: string, assignedTo?: string | null, lockedUntil?: string | null): boolean => {
|
||||||
return currentLock?.submissionId === submissionId;
|
// Check local state first (optimistic UI - immediate feedback)
|
||||||
}, [currentLock]);
|
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
|
// Check if submission is locked by another moderator
|
||||||
const isLockedByOther = useCallback((submissionId: string, assignedTo: string | null, lockedUntil: string | null): boolean => {
|
const isLockedByOther = useCallback((submissionId: string, assignedTo: string | null, lockedUntil: string | null): boolean => {
|
||||||
|
|||||||
Reference in New Issue
Block a user