diff options
author | Özgür Kesim <oec-taler@kesim.org> | 2023-09-09 07:34:11 +0200 |
---|---|---|
committer | Özgür Kesim <oec-taler@kesim.org> | 2023-09-09 07:34:11 +0200 |
commit | 5495551071a3fdc36c38deb4c1cf6f4aa5b98bd4 (patch) | |
tree | adf7730b190618a0499e50a2d43cf1b850cddd16 /packages/merchant-backoffice-ui/src/hooks/useSettings.ts | |
parent | 94cfcc875065f988815c31aaf8ebf36f75ac5983 (diff) | |
parent | 6c3cfa9be7a332c2cc8490f25ebd6c73c8244842 (diff) |
Merge branch 'master' into age-withdraw
Diffstat (limited to 'packages/merchant-backoffice-ui/src/hooks/useSettings.ts')
-rw-r--r-- | packages/merchant-backoffice-ui/src/hooks/useSettings.ts | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/packages/merchant-backoffice-ui/src/hooks/useSettings.ts b/packages/merchant-backoffice-ui/src/hooks/useSettings.ts index 5c0932f27..7dee9f896 100644 --- a/packages/merchant-backoffice-ui/src/hooks/useSettings.ts +++ b/packages/merchant-backoffice-ui/src/hooks/useSettings.ts @@ -19,6 +19,9 @@ import { Codec, buildCodecForObject, codecForBoolean, + codecForConstString, + codecForEither, + codecForString, } from "@gnu-taler/taler-util"; function parse_json_or_undefined<T>(str: string | undefined): T | undefined { @@ -31,29 +34,49 @@ function parse_json_or_undefined<T>(str: string | undefined): T | undefined { } export interface Settings { - advanceOrderMode: boolean + advanceOrderMode: boolean; + dateFormat: "ymd" | "dmy" | "mdy"; } const defaultSettings: Settings = { advanceOrderMode: false, + dateFormat: "ymd", } export const codecForSettings = (): Codec<Settings> => buildCodecForObject<Settings>() .property("advanceOrderMode", codecForBoolean()) + .property("dateFormat", codecForEither( + codecForConstString("ymd"), + codecForConstString("dmy"), + codecForConstString("mdy"), + )) .build("Settings"); const SETTINGS_KEY = buildStorageKey("merchant-settings", codecForSettings()); export function useSettings(): [ Readonly<Settings>, - <T extends keyof Settings>(key: T, value: Settings[T]) => void, + (s: Settings) => void, ] { - const { value, update } = useLocalStorage(SETTINGS_KEY); + const { value, update } = useLocalStorage(SETTINGS_KEY, defaultSettings); - const parsed: Settings = value ?? defaultSettings; - function updateField<T extends keyof Settings>(k: T, v: Settings[T]) { - update({ ...parsed, [k]: v }); + // const parsed: Settings = value ?? defaultSettings; + // function updateField<T extends keyof Settings>(k: T, v: Settings[T]) { + // const next = { ...parsed, [k]: v } + // update(next); + // } + return [value, update]; +} + +export function dateFormatForSettings(s: Settings): string { + switch (s.dateFormat) { + case "ymd": return "yyyy/MM/dd" + case "dmy": return "dd/MM/yyyy" + case "mdy": return "MM/dd/yyyy" } - return [parsed, updateField]; } + +export function datetimeFormatForSettings(s: Settings): string { + return dateFormatForSettings(s) + " HH:mm:ss" +}
\ No newline at end of file |