From ac85938355c9ad307948ac05addffe687ac68c9f Mon Sep 17 00:00:00 2001 From: KoloMl Date: Mon, 23 Dec 2024 21:45:09 +0400 Subject: [PATCH 1/2] 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"; } From c241bfb25c0cbdddef30831b85da2de59a27fc20 Mon Sep 17 00:00:00 2001 From: KoloMl Date: Mon, 23 Dec 2024 21:46:36 +0400 Subject: [PATCH 2/2] Mark profile as no longer temporary once it's edited --- src/routes/features/maintenance/[id]/edit/+page.svelte | 1 + 1 file changed, 1 insertion(+) 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);