diff --git a/src/lib/components/TagDropdownWrapper.js b/src/lib/components/TagDropdownWrapper.js index cef710e..a532a15 100644 --- a/src/lib/components/TagDropdownWrapper.js +++ b/src/lib/components/TagDropdownWrapper.js @@ -150,7 +150,8 @@ export class TagDropdownWrapper extends BaseComponent { async #onAddToNewClicked() { const profile = new MaintenanceProfile(crypto.randomUUID(), { name: 'Temporary Profile (' + (new Date().toISOString()) + ')', - tags: [this.tagName] + tags: [this.tagName], + temporary: true, }); await profile.save(); diff --git a/src/lib/extension/entities/MaintenanceProfile.ts b/src/lib/extension/entities/MaintenanceProfile.ts index ac14352..f4b68c9 100644 --- a/src/lib/extension/entities/MaintenanceProfile.ts +++ b/src/lib/extension/entities/MaintenanceProfile.ts @@ -4,6 +4,7 @@ import EntitiesController from "$lib/extension/EntitiesController.ts"; export interface MaintenanceProfileSettings { name: string; tags: string[]; + temporary: boolean; } /** @@ -17,9 +18,18 @@ export default class MaintenanceProfile extends StorageEntity) { super(id, { name: settings.name || '', - tags: settings.tags || [] + tags: settings.tags || [], + temporary: settings.temporary ?? false }); } + async save(): Promise { + if (this.settings.temporary && !this.settings.tags?.length) { + return this.delete(); + } + + return super.save(); + } + public static readonly _entityName = "profiles"; } diff --git a/src/routes/features/maintenance/[id]/edit/+page.svelte b/src/routes/features/maintenance/[id]/edit/+page.svelte index f87e2cb..3718aea 100644 --- a/src/routes/features/maintenance/[id]/edit/+page.svelte +++ b/src/routes/features/maintenance/[id]/edit/+page.svelte @@ -42,6 +42,7 @@ targetProfile.settings.name = profileName; targetProfile.settings.tags = [...tagsList]; + targetProfile.settings.temporary = false; await targetProfile.save(); await goto('/features/maintenance/' + targetProfile.id);