fix: hydrated for indexedDB

This commit is contained in:
Dogtiti 2024-09-03 17:12:48 +08:00
parent 7b6fe66f2a
commit 886ffc0af8
1 changed files with 10 additions and 1 deletions

View File

@ -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);