Merge branch 'main' into deploy

This commit is contained in:
2025-02-15 11:08:53 +00:00
2 changed files with 22 additions and 11 deletions

View File

@@ -16,7 +16,7 @@ const schema = yup.object({
startTime: yup.string().matches(timeRe, {message: '12 or 24 hr time format required'}).required(),
target: yup.string().matches(durationRe, {message: 'duration in hh:mm or hrs and mins required'}).required(),
break: yup.string().matches(durationRe, {message: 'duration in hh:mm or hrs and mins required'}).required(),
breakTaken: yup.bool().required(),
breakTaken: yup.boolean().required(),
recorded: yup.string().matches(durationRe, {message: 'duration in hh:mm or hrs and mins required'}).required()
}).required();
@@ -31,7 +31,9 @@ export function App() {
startTime: '09:00',
target: '7.5h',
break: '1h',
recorded: getStoredRecordedTime(),
breakTaken: false,
recorded: '0',
...getStoredRecordedTime(),
...getStoredDefaults()
},
resolver: yupResolver(schema)
@@ -52,8 +54,8 @@ export function App() {
setRemaining(calculateRemaining(currentData));
// save new values to storage
setStoredDefaults({ startTime: currentData.startTime, target: currentData.target });
setStoredRecordedTime(currentData.recorded);
setStoredDefaults(currentData);
setStoredRecordedTime(currentData.recorded, currentData.breakTaken);
const interval = setInterval(() => {
setRemaining(calculateRemaining(currentData));

View File

@@ -6,10 +6,12 @@ const RECORDED_KEY = 'recorded';
const defaultsSchema = yup.object({
startTime: yup.string().required(),
target: yup.string().required(),
break: yup.string().required(),
}).required();
const recordedSchema = yup.object({
recorded: yup.string().required(),
breakTaken: yup.boolean().required(),
updated: yup.number().required().nullable()
}).required();
@@ -39,11 +41,15 @@ export function getStoredDefaults() {
}
export function setStoredDefaults(data) {
localStorage.setItem(DEFAULTS_KEY, JSON.stringify(data));
try {
localStorage.setItem(DEFAULTS_KEY, JSON.stringify(defaultsSchema.cast(data, {stripUnknown: true})));
} catch (e) {
console.error(`Error setting stored defaults: ${e.message}`);
}
}
export function getStoredRecordedTime() {
const info = getJsonValue(RECORDED_KEY, { recorded: '', updated: null });
const info = getJsonValue(RECORDED_KEY, { recorded: '', breakTaken: false, updated: null });
try {
const data = recordedSchema.validateSync(info);
if (data.updated != null) {
@@ -51,15 +57,18 @@ export function getStoredRecordedTime() {
startOfDay.setHours(0, 0, 0, 0);
if (data.updated < startOfDay.valueOf()) {
return '';
return { recorded: '0', breakTaken: false };
}
}
return data.recorded;
return {
recorded: data.recorded,
breakTaken: data.breakTaken,
};
} catch (e) {
return '';
return { recorded: '0', breakTaken: false };
}
}
export function setStoredRecordedTime(recorded) {
localStorage.setItem(RECORDED_KEY, JSON.stringify({ recorded, updated: new Date().valueOf() }));
export function setStoredRecordedTime(recorded, breakTaken) {
localStorage.setItem(RECORDED_KEY, JSON.stringify({ recorded, breakTaken, updated: new Date().valueOf() }));
}