diff options
author | Sebastian <sebasjm@gmail.com> | 2023-09-04 14:17:55 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-09-04 14:17:55 -0300 |
commit | e1d86816a7c07cb8ca2d54676d5cdbbe513f2ba7 (patch) | |
tree | d4ed5506ab3550a7e9b1a082d7ffeddf9f3c4954 /packages/merchant-backoffice-ui/src/hooks/useSettings.ts | |
parent | ff20c3e25e076c24f7cb93eabe58b6f934f51f35 (diff) | |
download | wallet-core-e1d86816a7c07cb8ca2d54676d5cdbbe513f2ba7.tar.xz |
backoffcie new version, lot of changes
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 |