From 201efeca8c44f9df5c1e26dec42c98eb2d5764a7 Mon Sep 17 00:00:00 2001 From: "Florine W. Dekker" Date: Sat, 26 Nov 2022 15:36:09 +0100 Subject: [PATCH] Implement storage/retrieval of strings --- package.json | 2 +- src/main/js/Storage.ts | 51 ++++++++++++++++++++++++++++++------------ 2 files changed, 38 insertions(+), 15 deletions(-) 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; + } }