All tests fixed. Deployment on NAS prepared

This commit is contained in:
aodulov
2025-12-18 07:29:35 +02:00
parent 9cb0d66455
commit 97b4e5de32
37 changed files with 1303 additions and 2083 deletions

View File

@@ -35,18 +35,26 @@ export const useRestTimer = ({ defaultTime, onFinish }: UseRestTimerProps) => {
let initialDuration = defaultTime;
if (savedState) {
initialDuration = savedState.duration || defaultTime;
initialStatus = savedState.status;
initialTimeLeft = savedState.timeLeft;
// Only restore if running OR if the context (defaultTime) matches
// This prevents carrying over timer state between different plan steps or sessions
// where the default time is different.
const contextMatch = savedState.defaultTimeSnapshot === defaultTime;
const isRunning = savedState.status === 'RUNNING';
if (initialStatus === 'RUNNING' && savedState.endTime) {
const now = Date.now();
const remaining = Math.max(0, Math.ceil((savedState.endTime - now) / 1000));
if (remaining > 0) {
initialTimeLeft = remaining;
} else {
initialStatus = 'FINISHED'; // It finished while we were away
initialTimeLeft = 0;
if (isRunning || contextMatch) {
initialDuration = savedState.duration || defaultTime;
initialStatus = savedState.status;
initialTimeLeft = savedState.timeLeft;
if (initialStatus === 'RUNNING' && savedState.endTime) {
const now = Date.now();
const remaining = Math.max(0, Math.ceil((savedState.endTime - now) / 1000));
if (remaining > 0) {
initialTimeLeft = remaining;
} else {
initialStatus = 'FINISHED'; // It finished while we were away
initialTimeLeft = 0;
}
}
}
}
@@ -90,10 +98,11 @@ export const useRestTimer = ({ defaultTime, onFinish }: UseRestTimerProps) => {
status,
timeLeft,
duration,
endTime: endTimeRef.current
endTime: endTimeRef.current,
defaultTimeSnapshot: defaultTime // Save context
};
localStorage.setItem('gymflow_rest_timer', JSON.stringify(stateToSave));
}, [status, timeLeft, duration]);
}, [status, timeLeft, duration, defaultTime]);
// Update internal duration when defaultTime changes
useEffect(() => {