From 39bb9afa0ea386b342a2980e1bee5142b2f51e70 Mon Sep 17 00:00:00 2001 From: Ammar Ahmed Date: Mon, 25 May 2026 13:21:00 +0500 Subject: [PATCH] core: add getGroupOptionsById/setGroupOptionsById --- packages/core/src/collections/settings.ts | 45 +++++++++++++---------- packages/core/src/types.ts | 5 ++- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/packages/core/src/collections/settings.ts b/packages/core/src/collections/settings.ts index ac90cb7ba..6cd736d4d 100644 --- a/packages/core/src/collections/settings.ts +++ b/packages/core/src/collections/settings.ts @@ -32,7 +32,8 @@ import { TrashCleanupInterval, TimeFormat, DayFormat, - WeekFormat + WeekFormat, + GroupingByIdKey } from "../types.js"; import { ICollection } from "./collection.js"; import { SQLCachedCollection } from "../database/sql-cached-collection.js"; @@ -66,6 +67,7 @@ const defaultSettings: SettingItemMap = { "groupOptions:notes:notebooks": {}, "groupOptions:notes:tags": {}, + "groupOptions:notes:colors": {}, "groupOptions:trash": DEFAULT_GROUP_OPTIONS("trash"), "groupOptions:tags": DEFAULT_GROUP_OPTIONS("tags"), "groupOptions:notes": DEFAULT_GROUP_OPTIONS("notes"), @@ -152,29 +154,32 @@ export class Settings implements ICollection { return this.set(`groupOptions:${key}`, groupOptions); } - getNotebookGroupOptions(notebookId: string) { - const notebookOptions = this.get("groupOptions:notes:notebooks"); - return notebookOptions[notebookId] || this.get("groupOptions:notes"); - } - - async setNotebookGroupOptions( - notebookId: string, + async setGroupOptionsById( + id: string, + type: GroupingByIdKey, groupOptions: GroupOptions ) { - const notebookOptions = this.get("groupOptions:notes:notebooks"); - notebookOptions[notebookId] = groupOptions; - return this.set("groupOptions:notes:notebooks", notebookOptions); + const groupOptionsKey = + type === "notebook" + ? "groupOptions:notes:notebooks" + : type === "tag" + ? "groupOptions:notes:tags" + : "groupOptions:notes:colors"; + + const groupOptionsMap = this.get(groupOptionsKey); + groupOptionsMap[id] = groupOptions; + return this.set(groupOptionsKey, groupOptionsMap); } - getTagGroupOptions(tagId: string) { - const tagOptions = this.get("groupOptions:notes:tags"); - return tagOptions[tagId] || this.get("groupOptions:notes"); - } - - async setTagGroupOptions(tagId: string, groupOptions: GroupOptions) { - const tagOptions = this.get("groupOptions:notes:tags"); - tagOptions[tagId] = groupOptions; - return this.set("groupOptions:notes:tags", tagOptions); + getGroupOptionsById(id: string, type: GroupingByIdKey) { + const groupOptions = this.get( + type === "notebook" + ? "groupOptions:notes:notebooks" + : type === "tag" + ? "groupOptions:notes:tags" + : "groupOptions:notes:colors" + ); + return groupOptions[id] || this.get("groupOptions:notes"); } setToolbarConfig(platform: ToolbarConfigPlatforms, config: ToolbarConfig) { diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 3e1e94778..dad2babc7 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -57,6 +57,7 @@ export const GroupingKey = [ "search" ] as const; export type GroupingKey = (typeof GroupingKey)[number]; +export type GroupingByIdKey = "notebook" | "tag" | "color"; export type ValueOf = T[keyof T]; export type Optional = Pick, K> & Omit; @@ -487,7 +488,9 @@ export type SettingItemMap = { profile: Profile | undefined; } & Record<`groupOptions:${GroupingKey}`, GroupOptions> & Record< - `groupOptions:notes:notebooks` | `groupOptions:notes:tags`, + | `groupOptions:notes:notebooks` + | `groupOptions:notes:tags` + | `groupOptions:notes:colors`, Record > & Record<`toolbarConfig:${ToolbarConfigPlatforms}`, ToolbarConfig | undefined> &