diff --git a/src/lib/helpers/cache.ts b/src/lib/helpers/cache.ts new file mode 100644 index 000000000..491b9edcd --- /dev/null +++ b/src/lib/helpers/cache.ts @@ -0,0 +1,17 @@ +import { browser } from '$app/env'; +import type { Writable } from 'svelte/store'; + +type Stores = { + store: Partial>; + name: string; +}[]; + +export function cache(stores: Stores) { + if (browser) { + stores.forEach((item) => { + item.store.subscribe((n) => + sessionStorage?.setItem(item.name, JSON.stringify(n ?? '')) + ); + }); + } +} diff --git a/src/routes/console/project-[project]/authentication/store.ts b/src/routes/console/project-[project]/authentication/store.ts index 05c493c91..ce95a834e 100644 --- a/src/routes/console/project-[project]/authentication/store.ts +++ b/src/routes/console/project-[project]/authentication/store.ts @@ -2,6 +2,7 @@ import { sdkForProject } from '$lib/stores/sdk'; import { writable } from 'svelte/store'; import type { Models } from '@aw-labs/appwrite-console'; import { browser } from '$app/env'; +import { cache } from '$lib/helpers/cache'; function createUsersListStore() { const { subscribe, set } = writable>>( @@ -65,8 +66,8 @@ export const usersList = createUsersListStore(); export const teamsList = createTeamsListStore(); export const usersUsage = createUsersUsageStore(); -if (browser) { - usersList.subscribe((n) => sessionStorage?.setItem('users', JSON.stringify(n ?? ''))); - teamsList.subscribe((n) => sessionStorage?.setItem('teams', JSON.stringify(n ?? ''))); - usersUsage.subscribe((n) => sessionStorage?.setItem('usersUsage', JSON.stringify(n ?? ''))); -} +cache([ + { store: usersList, name: 'users' }, + { store: teamsList, name: 'teams' }, + { store: usersUsage, name: 'usersUsage' } +]);