mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-24 20:51:13 -05:00
Refactor: Implement state machine cleanup and fixes
This commit is contained in:
@@ -45,11 +45,18 @@ export function useLockMonitor(
|
||||
dispatch({ type: 'LOCK_EXPIRED' });
|
||||
|
||||
// Show toast with extension option
|
||||
toast({
|
||||
title: 'Lock Expiring Soon',
|
||||
description: 'Your lock on this submission will expire in less than 2 minutes. Click to extend.',
|
||||
variant: 'default',
|
||||
});
|
||||
toast({
|
||||
title: 'Lock Expiring Soon',
|
||||
description: 'Your lock on this submission will expire in less than 2 minutes. Click below to extend.',
|
||||
duration: Infinity,
|
||||
});
|
||||
|
||||
// Also call extension function automatically after showing toast
|
||||
if (itemId) {
|
||||
setTimeout(() => {
|
||||
handleExtendLock(itemId, dispatch);
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
}, 30000); // Check every 30 seconds
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ export function submissionReducer(
|
||||
}
|
||||
return {
|
||||
status: 'validation_error',
|
||||
data: (state as Extract<SubmissionState, { status: 'validating' }>).data,
|
||||
data: state.data,
|
||||
errors: action.payload
|
||||
};
|
||||
|
||||
@@ -74,7 +74,7 @@ export function submissionReducer(
|
||||
}
|
||||
return {
|
||||
status: 'submitting',
|
||||
data: (state as Extract<SubmissionState, { status: 'validating' }>).data,
|
||||
data: state.data,
|
||||
submissionId: action.payload.submissionId
|
||||
};
|
||||
|
||||
@@ -84,7 +84,7 @@ export function submissionReducer(
|
||||
}
|
||||
return {
|
||||
status: 'pending_moderation',
|
||||
submissionId: (state as Extract<SubmissionState, { status: 'submitting' }>).submissionId
|
||||
submissionId: state.submissionId
|
||||
};
|
||||
|
||||
case 'LOCK':
|
||||
@@ -93,7 +93,7 @@ export function submissionReducer(
|
||||
}
|
||||
return {
|
||||
status: 'locked',
|
||||
submissionId: (state as Extract<SubmissionState, { status: 'pending_moderation' }>).submissionId,
|
||||
submissionId: state.submissionId,
|
||||
lockedBy: action.payload.lockedBy,
|
||||
lockedUntil: action.payload.lockedUntil
|
||||
};
|
||||
@@ -104,7 +104,7 @@ export function submissionReducer(
|
||||
}
|
||||
return {
|
||||
status: 'reviewing',
|
||||
submissionId: (state as Extract<SubmissionState, { status: 'locked' }>).submissionId,
|
||||
submissionId: state.submissionId,
|
||||
reviewerId: action.payload.reviewerId
|
||||
};
|
||||
|
||||
@@ -114,7 +114,7 @@ export function submissionReducer(
|
||||
}
|
||||
return {
|
||||
status: 'approved',
|
||||
submissionId: (state as Extract<SubmissionState, { status: 'reviewing' }>).submissionId,
|
||||
submissionId: state.submissionId,
|
||||
entityId: action.payload.entityId
|
||||
};
|
||||
|
||||
@@ -124,7 +124,7 @@ export function submissionReducer(
|
||||
}
|
||||
return {
|
||||
status: 'rejected',
|
||||
submissionId: (state as Extract<SubmissionState, { status: 'reviewing' }>).submissionId,
|
||||
submissionId: state.submissionId,
|
||||
reason: action.payload.reason
|
||||
};
|
||||
|
||||
@@ -132,13 +132,10 @@ export function submissionReducer(
|
||||
if (state.status !== 'reviewing' && state.status !== 'locked') {
|
||||
throw new Error(`Illegal transition: ${state.status} → escalated`);
|
||||
}
|
||||
const submissionId = state.status === 'reviewing'
|
||||
? (state as Extract<SubmissionState, { status: 'reviewing' }>).submissionId
|
||||
: (state as Extract<SubmissionState, { status: 'locked' }>).submissionId;
|
||||
|
||||
return {
|
||||
status: 'escalated',
|
||||
submissionId,
|
||||
submissionId: state.submissionId,
|
||||
escalatedBy: action.payload.escalatedBy,
|
||||
reason: action.payload.reason
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user