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)); } }();