Преглед изворни кода

fix: hydrated for indexedDB

Dogtiti пре 1 година
родитељ
комит
886ffc0af8
1 измењених фајлова са 10 додато и 1 уклоњено
  1. 10 1
      app/utils/indexedDB-storage.ts

+ 10 - 1
app/utils/indexedDB-storage.ts

@@ -4,7 +4,12 @@ import { get, set, del, clear } from "idb-keyval";
 class IndexedDBStorage implements StateStorage {
   public async getItem(name: string): Promise<string | null> {
     try {
-      return (await get(name)) || localStorage.getItem(name);
+      const value = (await get(name)) || localStorage.getItem(name);
+      const _value = JSON.parse(value);
+      if (_value?.state) {
+        _value.state._hasHydrated = true;
+      }
+      return JSON.stringify(_value);
     } catch (error) {
       return localStorage.getItem(name);
     }
@@ -12,6 +17,10 @@ class IndexedDBStorage implements StateStorage {
 
   public async setItem(name: string, value: string): Promise<void> {
     try {
+      const _value = JSON.parse(value);
+      if (!_value?.state?._hasHydrated) {
+        return;
+      }
       await set(name, value);
     } catch (error) {
       localStorage.setItem(name, value);