Skip to content

Commit 224e122

Browse files
committed
Merge branch 'issue/1'
2 parents d7aa4e3 + 281b4db commit 224e122

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

src/index.jsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const schema = yup.object({
1616
startTime: yup.string().matches(timeRe, {message: '12 or 24 hr time format required'}).required(),
1717
target: yup.string().matches(durationRe, {message: 'duration in hh:mm or hrs and mins required'}).required(),
1818
break: yup.string().matches(durationRe, {message: 'duration in hh:mm or hrs and mins required'}).required(),
19-
breakTaken: yup.bool().required(),
19+
breakTaken: yup.boolean().required(),
2020
recorded: yup.string().matches(durationRe, {message: 'duration in hh:mm or hrs and mins required'}).required()
2121
}).required();
2222

@@ -31,7 +31,9 @@ export function App() {
3131
startTime: '09:00',
3232
target: '7.5h',
3333
break: '1h',
34-
recorded: getStoredRecordedTime(),
34+
breakTaken: false,
35+
recorded: '0',
36+
...getStoredRecordedTime(),
3537
...getStoredDefaults()
3638
},
3739
resolver: yupResolver(schema)
@@ -52,8 +54,8 @@ export function App() {
5254
setRemaining(calculateRemaining(currentData));
5355

5456
// save new values to storage
55-
setStoredDefaults({ startTime: currentData.startTime, target: currentData.target });
56-
setStoredRecordedTime(currentData.recorded);
57+
setStoredDefaults(currentData);
58+
setStoredRecordedTime(currentData.recorded, currentData.breakTaken);
5759

5860
const interval = setInterval(() => {
5961
setRemaining(calculateRemaining(currentData));

src/store.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ const RECORDED_KEY = 'recorded';
66
const defaultsSchema = yup.object({
77
startTime: yup.string().required(),
88
target: yup.string().required(),
9+
break: yup.string().required(),
910
}).required();
1011

1112
const recordedSchema = yup.object({
1213
recorded: yup.string().required(),
14+
breakTaken: yup.boolean().required(),
1315
updated: yup.number().required().nullable()
1416
}).required();
1517

@@ -39,27 +41,34 @@ export function getStoredDefaults() {
3941
}
4042

4143
export function setStoredDefaults(data) {
42-
localStorage.setItem(DEFAULTS_KEY, JSON.stringify(data));
44+
try {
45+
localStorage.setItem(DEFAULTS_KEY, JSON.stringify(defaultsSchema.cast(data, {stripUnknown: true})));
46+
} catch (e) {
47+
console.error(`Error setting stored defaults: ${e.message}`);
48+
}
4349
}
4450

4551
export function getStoredRecordedTime() {
46-
const info = getJsonValue(RECORDED_KEY, { recorded: '', updated: null });
52+
const info = getJsonValue(RECORDED_KEY, { recorded: '', breakTaken: false, updated: null });
4753
try {
4854
const data = recordedSchema.validateSync(info);
4955
if (data.updated != null) {
5056
const startOfDay = new Date();
5157
startOfDay.setHours(0, 0, 0, 0);
5258

5359
if (data.updated < startOfDay.valueOf()) {
54-
return '';
60+
return { recorded: '0', breakTaken: false };
5561
}
5662
}
57-
return data.recorded;
63+
return {
64+
recorded: data.recorded,
65+
breakTaken: data.breakTaken,
66+
};
5867
} catch (e) {
59-
return '';
68+
return { recorded: '0', breakTaken: false };
6069
}
6170
}
6271

63-
export function setStoredRecordedTime(recorded) {
64-
localStorage.setItem(RECORDED_KEY, JSON.stringify({ recorded, updated: new Date().valueOf() }));
72+
export function setStoredRecordedTime(recorded, breakTaken) {
73+
localStorage.setItem(RECORDED_KEY, JSON.stringify({ recorded, breakTaken, updated: new Date().valueOf() }));
6574
}

0 commit comments

Comments
 (0)