webtools/site/countdown/settings.mjs

27 lines
858 B
JavaScript
Raw Permalink Normal View History

import { integer } from './timer.mjs';
export const SETTINGS_KEY = 'countdown-settings';
export function serializeSettings(minutes, seconds) {
return JSON.stringify({
minutes: String(integer(minutes)),
seconds: String(integer(seconds)),
});
}
export function parseSettings(json) {
try {
const settings = JSON.parse(json);
if (typeof settings?.minutes === 'string' && /^\d+$/.test(settings.minutes) &&
typeof settings?.seconds === 'string' && /^\d+$/.test(settings.seconds)) {
return {
minutes: String(integer(settings.minutes)),
seconds: String(integer(settings.seconds)).padStart(2, '0'),
};
}
} catch {
// Missing or invalid storage is equivalent to a fresh countdown.
}
return { minutes: '0', seconds: '00' };
}