54 lines
No EOL
1.1 KiB
TypeScript
54 lines
No EOL
1.1 KiB
TypeScript
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));
|
|
}
|
|
}(); |