diff --git a/src/pages/background/events/onUpdate.ts b/src/pages/background/events/onUpdate.ts index 76d6e022..20736a85 100644 --- a/src/pages/background/events/onUpdate.ts +++ b/src/pages/background/events/onUpdate.ts @@ -1,4 +1,7 @@ import { ExtensionStore } from '@shared/storage/ExtensionStore'; +import { UserScheduleStore } from '@shared/storage/UserScheduleStore'; + +import createSchedule from '../lib/createSchedule'; /** * Called when the extension is updated (or when the extension is reloaded in development mode) @@ -8,4 +11,11 @@ export default async function onUpdate() { version: chrome.runtime.getManifest().version, lastUpdate: Date.now(), }); + + const schedules = await UserScheduleStore.get('schedules'); + + // By invariant, there must always be at least one schedule + if (schedules.length === 0) { + createSchedule('Schedule 1'); + } } diff --git a/src/pages/background/lib/createSchedule.ts b/src/pages/background/lib/createSchedule.ts index b2333a4b..2c2af690 100644 --- a/src/pages/background/lib/createSchedule.ts +++ b/src/pages/background/lib/createSchedule.ts @@ -36,5 +36,11 @@ export default async function createSchedule(scheduleName: string) { schedules.push(newSchedule); await UserScheduleStore.set('schedules', schedules); + + // If there is only one schedule, set the active index to the new schedule + if (schedules.length <= 1) { + await UserScheduleStore.set('activeIndex', 0); + } + return newSchedule.id; } diff --git a/src/pages/background/lib/deleteSchedule.ts b/src/pages/background/lib/deleteSchedule.ts index d71b6164..5bbe5095 100644 --- a/src/pages/background/lib/deleteSchedule.ts +++ b/src/pages/background/lib/deleteSchedule.ts @@ -22,6 +22,11 @@ export default async function deleteSchedule(scheduleId: string): Promise