From 78f929ee69ab3278b520c0db8ef49faebc00a8ff Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Thu, 25 Jul 2024 00:25:11 +0300 Subject: [PATCH] client-ts: Port services/options --- src/public/app/services/options.js | 61 ----------------------- src/public/app/services/options.ts | 79 ++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 61 deletions(-) delete mode 100644 src/public/app/services/options.js create mode 100644 src/public/app/services/options.ts diff --git a/src/public/app/services/options.js b/src/public/app/services/options.js deleted file mode 100644 index 954832eb6..000000000 --- a/src/public/app/services/options.js +++ /dev/null @@ -1,61 +0,0 @@ -import server from "./server.js"; - -class Options { - constructor() { - this.initializedPromise = server.get('options').then(data => this.load(data)); - } - - load(arr) { - this.arr = arr; - } - - get(key) { - return this.arr[key]; - } - - getNames() { - return Object.keys(this.arr); - } - - getJson(key) { - try { - return JSON.parse(this.arr[key]); - } - catch (e) { - return null; - } - } - - getInt(key) { - return parseInt(this.arr[key]); - } - - getFloat(key) { - return parseFloat(this.arr[key]); - } - - is(key) { - return this.arr[key] === 'true'; - } - - set(key, value) { - this.arr[key] = value; - } - - async save(key, value) { - this.set(key, value); - - const payload = {}; - payload[key] = value; - - await server.put(`options`, payload); - } - - async toggle(key) { - await this.save(key, (!this.is(key)).toString()); - } -} - -const options = new Options(); - -export default options; diff --git a/src/public/app/services/options.ts b/src/public/app/services/options.ts new file mode 100644 index 000000000..464011b9a --- /dev/null +++ b/src/public/app/services/options.ts @@ -0,0 +1,79 @@ + +import server from "./server.js"; + +type OptionValue = string; + +class Options { + private initializedPromise: Promise; + private arr!: Record; + + constructor() { + this.initializedPromise = server.get>('options').then(data => this.load(data)); + } + + load(arr: Record) { + this.arr = arr; + } + + get(key: string) { + return this.arr?.[key]; + } + + getNames() { + return Object.keys(this.arr || []); + } + + getJson(key: string) { + const value = this.arr?.[key]; + if (typeof value !== "string") { + return null; + } + try { + return JSON.parse(value); + } + catch (e) { + return null; + } + } + + getInt(key: string) { + const value = this.arr?.[key]; + if (typeof value !== "string") { + return null; + } + return parseInt(value); + } + + getFloat(key: string) { + const value = this.arr?.[key]; + if (typeof value !== "string") { + return null; + } + return parseFloat(value); + } + + is(key: string) { + return this.arr[key] === 'true'; + } + + set(key: string, value: OptionValue) { + this.arr[key] = value; + } + + async save(key: string, value: OptionValue) { + this.set(key, value); + + const payload: Record = {}; + payload[key] = value; + + await server.put(`options`, payload); + } + + async toggle(key: string) { + await this.save(key, (!this.is(key)).toString()); + } +} + +const options = new Options(); + +export default options; \ No newline at end of file