diff --git a/packages/settings/src/preferences/definitions.ts b/packages/settings/src/preferences/definitions.ts index 6575cb74f..8e82ec684 100644 --- a/packages/settings/src/preferences/definitions.ts +++ b/packages/settings/src/preferences/definitions.ts @@ -1,22 +1,24 @@ export const userPreferenceDefinitions = [ - { key: "colorScheme", kind: "select", guest: true, aliases: ["theme", "dark", "light", "auto"] }, - { key: "locale", kind: "select", guest: true, aliases: ["language", "translation"] }, - { key: "defaultSearchEngineId", kind: "searchEngine", guest: false, aliases: ["search", "search engine"] }, - { key: "openSearchInNewTab", kind: "boolean", guest: false, aliases: ["search", "new tab", "external"] }, - { key: "ddgBangs", kind: "boolean", guest: false, aliases: ["duckduckgo", "bangs", "search"] }, - { key: "firstDayOfWeek", kind: "select", guest: false, aliases: ["calendar", "week", "weekday"] }, - { key: "homeBoardId", kind: "board", guest: false, aliases: ["home", "board", "dashboard"] }, - { key: "mobileHomeBoardId", kind: "board", guest: false, aliases: ["mobile", "home", "board", "dashboard"] }, - { key: "pingIconsEnabled", kind: "boolean", guest: false, aliases: ["ping", "icon", "status"] }, - { key: "fullPreferencesPage", kind: "link", guest: false, aliases: ["settings", "manage", "profile"] }, + { key: "colorScheme", kind: "select", guest: true, mutationGroup: "colorScheme", aliases: ["theme", "dark", "light", "auto"] }, + { key: "locale", kind: "select", guest: true, mutationGroup: "locale", aliases: ["language", "translation"] }, + { key: "defaultSearchEngineId", kind: "searchEngine", guest: false, mutationGroup: "searchPreferences", aliases: ["search", "search engine"] }, + { key: "openSearchInNewTab", kind: "boolean", guest: false, mutationGroup: "searchPreferences", aliases: ["search", "new tab", "external"] }, + { key: "ddgBangs", kind: "boolean", guest: false, mutationGroup: "searchPreferences", aliases: ["duckduckgo", "bangs", "search"] }, + { key: "firstDayOfWeek", kind: "select", guest: false, mutationGroup: "firstDayOfWeek", aliases: ["calendar", "week", "weekday"] }, + { key: "homeBoardId", kind: "board", guest: false, mutationGroup: "homeBoards", aliases: ["home", "board", "dashboard"] }, + { key: "mobileHomeBoardId", kind: "board", guest: false, mutationGroup: "homeBoards", aliases: ["mobile", "home", "board", "dashboard"] }, + { key: "pingIconsEnabled", kind: "boolean", guest: false, mutationGroup: "pingIconsEnabled", aliases: ["ping", "icon", "status"] }, + { key: "fullPreferencesPage", kind: "link", guest: false, mutationGroup: null, aliases: ["settings", "manage", "profile"] }, ] as const; export type UserPreferenceDefinition = (typeof userPreferenceDefinitions)[number]; - export type UserPreferenceKey = UserPreferenceDefinition["key"]; - export type UserPreferenceKind = UserPreferenceDefinition["kind"]; +export type UserPreferenceMutationGroup = Exclude; export const userPreferenceDefinitionByKey = Object.fromEntries( userPreferenceDefinitions.map((definition) => [definition.key, definition]), ) as Record; + +export const visiblePreferenceDefinitions = (isAuthenticated: boolean) => + userPreferenceDefinitions.filter((definition) => definition.guest || isAuthenticated);