All tests fixed. Deployment on NAS prepared
This commit is contained in:
@@ -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(() => {
|
||||
|
||||
Reference in New Issue
Block a user