diff --git a/package.json b/package.json index eb386c9..17a0da2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@fwdekker/template", - "version": "3.4.1", + "version": "3.5.0", "description": "The base template for pages on fwdekker.com.", "author": "Florine W. Dekker", "license": "MIT", diff --git a/src/main/js/Storage.ts b/src/main/js/Storage.ts index ad7e333..f70e722 100644 --- a/src/main/js/Storage.ts +++ b/src/main/js/Storage.ts @@ -20,7 +20,6 @@ export interface Storage { * * @param name the name of the array to store * @param value the array to store under the given name - * @protected */ setArray(name: string, value: any[]): void; @@ -29,7 +28,6 @@ export interface Storage { * * @param name the name of the boolean to retrieve * @param def the value to return if no boolean is stored with the given name - * @protected */ getBoolean(name: string, def: boolean): boolean; @@ -38,7 +36,6 @@ export interface Storage { * * @param name the name of the boolean to store * @param value the boolean to store under the given name - * @protected */ setBoolean(name: string, value: boolean): void; @@ -47,7 +44,6 @@ export interface Storage { * * @param name the name of the number to retrieve * @param def the value to return if no number is stored with the given name - * @protected */ getNumber(name: string, def: number): number; @@ -56,9 +52,24 @@ export interface Storage { * * @param name the name of the number to store * @param value the number to store under the given name - * @protected */ setNumber(name: string, value: number): void; + + /** + * Retrieves a string from storage. + * + * @param name the name of the string to retrieve + * @param def the value to return if no string is stored with the given name + */ + getString(name: string, def: string): string; + + /** + * Stores a string. + * + * @param name the name of the string to store + * @param value the number to store under the given name + */ + setString(name: string, value: string): void; } /** @@ -115,28 +126,32 @@ export class LocalStorage implements Storage { } setArray(name: string, value: any[]): void { - const item = this.read(); - item[name] = JSON.stringify(value); - this.write(item); + this.setString(name, JSON.stringify(value)); } getBoolean(name: string, def: boolean = false): boolean { - return (this.read()[name] ?? `${def}`) === "true"; + return this.getString(name, def ? "true" : "false") === "true"; } setBoolean(name: string, value: boolean): void { - const item = this.read(); - item[name] = "" + value; - this.write(item); + this.setString(name, "" + value); } getNumber(name: string, def: number = 0): number { - return +(this.read()[name] ?? def); + return +this.getString(name, "" + def); } setNumber(name: string, value: number): void { + this.setString(name, "" + value); + } + + getString(name: string, def: string = ""): string { + return this.read()[name] ?? def; + } + + setString(name: string, value: string): void { const item = this.read(); - item[name] = "" + value; + item[name] = value; this.write(item); } } @@ -175,4 +190,12 @@ export class MemoryStorage implements Storage { getNumber(name: string, def: number): number { return this.storage[name] ?? def; } + + setString(name: string, value: string): void { + this.storage[name] = value; + } + + getString(name: string, def: string): string { + return this.storage[name] ?? def; + } }