gristlabs_grist-core/app/client/lib/localStorageObs.ts
Paul Fitzpatrick 1654a2681f (core) move client code to core
Summary:
This moves all client code to core, and makes minimal fix-ups to
get grist and grist-core to compile correctly.  The client works
in core, but I'm leaving clean-up around the build and bundles to
follow-up.

Test Plan: existing tests pass; server-dev bundle looks sane

Reviewers: dsagal

Reviewed By: dsagal

Differential Revision: https://phab.getgrist.com/D2627
2020-10-02 13:24:21 -04:00

20 lines
751 B
TypeScript

import {Observable} from 'grainjs';
/**
* Helper to create a boolean observable whose state is stored in localStorage.
*/
export function localStorageBoolObs(key: string): Observable<boolean> {
const obs = Observable.create(null, Boolean(localStorage.getItem(key)));
obs.addListener((val) => val ? localStorage.setItem(key, 'true') : localStorage.removeItem(key));
return obs;
}
/**
* Helper to create a string observable whose state is stored in localStorage.
*/
export function localStorageObs(key: string): Observable<string|null> {
const obs = Observable.create<string|null>(null, localStorage.getItem(key));
obs.addListener((val) => (val === null) ? localStorage.removeItem(key) : localStorage.setItem(key, val));
return obs;
}