mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
21 lines
620 B
TypeScript
21 lines
620 B
TypeScript
import { browser } from '$app/environment';
|
|
import { writable, type Writable } from 'svelte/store';
|
|
|
|
export function cachedStore<TModel, TMethods = Record<string, unknown>>(
|
|
id: string,
|
|
callback: (store: Writable<TModel>) => TMethods
|
|
): TMethods & Writable<TModel> {
|
|
const store = writable<TModel>(browser ? JSON.parse(sessionStorage.getItem(id)) : null);
|
|
|
|
if (browser) {
|
|
store.subscribe((n) => sessionStorage?.setItem(id, JSON.stringify(n ?? '')));
|
|
}
|
|
|
|
return {
|
|
subscribe: store.subscribe,
|
|
set: store.set,
|
|
update: store.update,
|
|
...callback(store)
|
|
};
|
|
}
|