Farmbot-Web-App/webpack/session.ts

53 lines
1.5 KiB
TypeScript
Raw Normal View History

2017-06-29 12:54:02 -06:00
import { AuthState } from "./auth/interfaces";
import { box } from "boxed_value";
import { get, isNumber } from "lodash";
import { BooleanSetting, NumericSetting } from "./session_keys";
2017-06-29 12:54:02 -06:00
export namespace Session {
const KEY = "session";
/** Replace the contents of session storage. */
export function replace(nextState: AuthState) {
2017-06-29 12:54:02 -06:00
localStorage[KEY] = JSON.stringify(nextState);
}
/** Fetch the previous session. */
export function getAll(): AuthState | undefined {
2017-06-29 12:54:02 -06:00
try {
let v: AuthState = JSON.parse(localStorage[KEY]);
if (box(v).kind === "object") {
return v;
} else {
throw new Error("Expected object or undefined");
}
} catch (error) {
return undefined;
2017-08-02 09:14:08 -06:00
}
2017-06-29 12:54:02 -06:00
}
/** Clear localstorage and sessionstorage. */
export function clear() {
2017-06-29 12:54:02 -06:00
localStorage.clear();
sessionStorage.clear();
window.location.href = window.location.origin;
}
export function getBool(key: BooleanSetting): boolean {
let output = JSON.parse(get(localStorage, key, "false"));
return !output;
}
export function setBool(key: BooleanSetting, val: boolean): void {
localStorage.setItem(key, JSON.stringify(val));
}
export function getNum(key: NumericSetting): number | undefined {
let output = JSON.parse(get(localStorage, key, "null"));
return (isNumber(output)) ? output : undefined;
}
export function setNum(key: NumericSetting, val: number): void {
localStorage.setItem(key, JSON.stringify(val));
}
2017-06-29 12:54:02 -06:00
}