From 195322f3b04711bafe34fcbd1379a76c60e3f735 Mon Sep 17 00:00:00 2001 From: JustTemmie <47639983+JustTemmie@users.noreply.github.com> Date: Sat, 12 Jul 2025 22:39:26 +0200 Subject: [PATCH] feat: make settings typed and store "12" and "24" over "12-hour" and "24-hour" internally --- app.vue | 3 +-- components/Settings/AppSettings/Appearance.vue | 17 ++++++++++++++--- types/settings.ts | 9 +++++++++ utils/getPreferredTimeFormat.ts | 6 +++--- utils/{settingLoad.ts => settingsLoad.ts} | 8 +++++--- 5 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 types/settings.ts rename utils/{settingLoad.ts => settingsLoad.ts} (66%) diff --git a/app.vue b/app.vue index beab80b..686a15e 100644 --- a/app.vue +++ b/app.vue @@ -8,7 +8,6 @@ diff --git a/types/settings.ts b/types/settings.ts new file mode 100644 index 0000000..28e3bfc --- /dev/null +++ b/types/settings.ts @@ -0,0 +1,9 @@ +export interface ClientSettings { + selectedThemeId?: string, // the ID of the theme, not the URL, for example "dark" + timeFormat?: TimeFormat +} + +export interface TimeFormat { + index: number, + format: "auto" | "12" | "24" +} \ No newline at end of file diff --git a/utils/getPreferredTimeFormat.ts b/utils/getPreferredTimeFormat.ts index 4cf03e0..86b9635 100644 --- a/utils/getPreferredTimeFormat.ts +++ b/utils/getPreferredTimeFormat.ts @@ -1,9 +1,9 @@ export default (): "12" | "24" => { - const format = settingLoad("timeFormat").timeFormat ?? "auto" + const format = settingsLoad().timeFormat?.format ?? "auto" - if (format == "12-hour") { + if (format == "12") { return "12" - } else if (format == "24-hour") { + } else if (format == "24") { return "24" } diff --git a/utils/settingLoad.ts b/utils/settingsLoad.ts similarity index 66% rename from utils/settingLoad.ts rename to utils/settingsLoad.ts index d0f315c..e7fdfaf 100644 --- a/utils/settingLoad.ts +++ b/utils/settingsLoad.ts @@ -1,10 +1,12 @@ -export default (key: string): any => { +import type { ClientSettings } from "~/types/settings" + +export default (): ClientSettings => { let clientSettingsItem: string | null = localStorage.getItem("clientSettings") if (typeof clientSettingsItem != "string") { clientSettingsItem = "{}" } - let clientSettings: { [key: string]: any } = {} + let clientSettings: ClientSettings = {} try { clientSettings = JSON.parse(clientSettingsItem) } catch { @@ -15,5 +17,5 @@ export default (key: string): any => { clientSettings = {} } - return clientSettings[key] + return clientSettings } \ No newline at end of file