diff --git a/static/crossroad.mts b/static/crossroad.mts index 4a60dd7..f624e3f 100644 --- a/static/crossroad.mts +++ b/static/crossroad.mts @@ -1,2 +1,5 @@ import knownSoftware from "./known_software.mjs"; +import storageManager from "./storage_manager.mjs"; console.log(knownSoftware); + +console.log(storageManager.storage.instances); diff --git a/static/storage_manager.mts b/static/storage_manager.mts new file mode 100644 index 0000000..cf3b054 --- /dev/null +++ b/static/storage_manager.mts @@ -0,0 +1,54 @@ +type Instance = { + /** + * The instance's (nick)name + * @example "eepy.moe" + * @example "KitsuClub" + * @example "My Sharkey Instance" + */ + name: string, + /** + * The instance's origin + * @example "https://eepy.moe" + * @example "https://kitsunes.club" + */ + origin: string, + /** + * The kind of software the instance is running + * @example "misskey" + * @example "sharkey" + * @example "akkoma" + */ + software: string, + /** + * The instance's icon URL + * + * Make sure to sanitize this! Could lead to XSS + */ + iconURL: string, +} + +type LocalStorage = { + instances: Instance[], +} + +export default new class StorageManager { + storage: LocalStorage; + + constructor() { + this.load(); + } + + default(): LocalStorage { + return { + instances: [] + } + } + + load() { + this.storage = JSON.parse(window.localStorage.getItem("storage") ?? "null") ?? this.default(); + } + + save() { + window.localStorage.setItem("storage", JSON.stringify(this.storage)); + } +}(); \ No newline at end of file