aboutsummaryrefslogtreecommitdiff
path: root/src/stores/identity.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/stores/identity.ts')
-rw-r--r--src/stores/identity.ts19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/stores/identity.ts b/src/stores/identity.ts
index b78dd519..52e0cba7 100644
--- a/src/stores/identity.ts
+++ b/src/stores/identity.ts
@@ -12,18 +12,23 @@ export const defaultIdentity: UserIdentity = {
const createStore = () => {
const store = writable<UserIdentity>(defaultIdentity);
let state: UserIdentity = defaultIdentity;
-
- if (browser)
- localforage.getItem<UserIdentity>("identity").then((value) => {
- if (value && typeof value === "object") store.set(value);
- });
+ let hydrated = !browser;
store.subscribe((value) => {
state = value;
- if (browser) localforage.setItem("identity", value);
+ if (browser && hydrated) localforage.setItem("identity", value);
});
+ if (browser)
+ localforage.getItem<UserIdentity>("identity").then(async (value) => {
+ if (value && typeof value === "object") store.set(value);
+
+ hydrated = true;
+
+ await localforage.setItem("identity", state);
+ });
+
return {
subscribe: store.subscribe,
set: store.set,
@@ -41,7 +46,7 @@ const createStore = () => {
defaultIdentity as unknown as Record<string, unknown>
)[key];
- if (browser) localforage.setItem("identity", updatedIdentity);
+ if (browser && hydrated) localforage.setItem("identity", updatedIdentity);
return updatedIdentity;
},