2022-04-14 02:12:38 +03:00
|
|
|
const defaults = {
|
|
|
|
apiBase: `${window.location.origin}/api/v1`,
|
2022-05-05 15:33:22 +03:00
|
|
|
gatewayBase: `${location.protocol === "https:" ? "wss" : "ws"}://${location.host}/gateway`,
|
2022-05-05 16:31:10 +03:00
|
|
|
doAnimations: true,
|
2022-05-05 20:52:35 +03:00
|
|
|
token: "",
|
|
|
|
"loggingSink:Gateway": false,
|
|
|
|
"loggingSink:Store": false
|
2022-04-14 02:12:38 +03:00
|
|
|
};
|
2022-05-05 16:31:10 +03:00
|
|
|
const store = new Map(Object.entries(defaults));
|
|
|
|
const persistentProvider = localStorage;
|
2022-04-14 02:12:38 +03:00
|
|
|
|
2022-05-05 16:31:10 +03:00
|
|
|
export function setItem(key, value) {
|
|
|
|
store.set(key, value);
|
|
|
|
if (persistentProvider) {
|
|
|
|
persistentProvider.setItem(key, typeof value === "string" ? value : JSON.stringify(value));
|
2022-04-14 02:12:38 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getItem(key) {
|
2022-05-05 16:31:10 +03:00
|
|
|
return store.get(key);
|
2022-04-14 02:12:38 +03:00
|
|
|
}
|
|
|
|
|
2022-05-05 16:31:10 +03:00
|
|
|
export function removeItem(key) {
|
|
|
|
store.delete(key);
|
|
|
|
if (persistentProvider) {
|
|
|
|
persistentProvider.removeItem(key);
|
|
|
|
}
|
2022-04-14 02:12:38 +03:00
|
|
|
}
|
|
|
|
|
2022-05-05 16:31:10 +03:00
|
|
|
export function init() {
|
|
|
|
if (!persistentProvider)
|
|
|
|
return;
|
2022-04-14 02:12:38 +03:00
|
|
|
|
2022-05-05 16:31:10 +03:00
|
|
|
store.forEach((defaultValue, key) => {
|
|
|
|
const override = persistentProvider.getItem(key);
|
|
|
|
if (override !== null) {
|
|
|
|
try {
|
|
|
|
store.set(key, typeof defaultValue === "string" ? override : JSON.parse(override));
|
|
|
|
} catch (o_O) {
|
|
|
|
console.warn("[Storage]", `init(): An exception was thrown while parsing the value of key "${key}" from _persistentProvider`, o_O);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2022-04-14 02:12:38 +03:00
|
|
|
}
|
|
|
|
|
2022-04-19 21:21:55 +03:00
|
|
|
export function apiRoute(fragment) {
|
2022-05-05 16:31:10 +03:00
|
|
|
return `${getItem("apiBase")}/${fragment}`
|
2022-04-14 02:12:38 +03:00
|
|
|
}
|