From ac85938355c9ad307948ac05addffe687ac68c9f Mon Sep 17 00:00:00 2001 From: KoloMl Date: Mon, 23 Dec 2024 21:45:09 +0400 Subject: [PATCH] Added temporary flag, auto-remove profile when tags list is empty --- src/lib/components/TagDropdownWrapper.js | 3 ++- src/lib/extension/entities/MaintenanceProfile.ts | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/lib/components/TagDropdownWrapper.js b/src/lib/components/TagDropdownWrapper.js index 78961a3..2ad3d01 100644 --- a/src/lib/components/TagDropdownWrapper.js +++ b/src/lib/components/TagDropdownWrapper.js @@ -108,7 +108,8 @@ 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"; }