feat: try catch indexedDB error
This commit is contained in:
parent
0b758941a4
commit
c2fc0b4979
|
@ -27,7 +27,7 @@ import { createPersistStore } from "../utils/store";
|
|||
import { collectModelsWithDefaultModel } from "../utils/model";
|
||||
import { useAccessStore } from "./access";
|
||||
import { isDalle3 } from "../utils";
|
||||
import { indexDBStorage } from "@/app/utils/indexDB-storage";
|
||||
import { indexedDBStorage } from "@/app/utils/indexedDB-storage";
|
||||
|
||||
export type ChatMessage = RequestMessage & {
|
||||
date: string;
|
||||
|
@ -667,7 +667,7 @@ export const useChatStore = createPersistStore(
|
|||
},
|
||||
|
||||
async clearAllData() {
|
||||
await indexDBStorage.clear();
|
||||
await indexedDBStorage.clear();
|
||||
localStorage.clear();
|
||||
location.reload();
|
||||
},
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
import { StateStorage } from "zustand/middleware";
|
||||
import { get, set, del, clear } from "idb-keyval";
|
||||
|
||||
class IndexDBStorage implements StateStorage {
|
||||
public async getItem(name: string): Promise<string | null> {
|
||||
return (await get(name)) || localStorage.getItem(name);
|
||||
}
|
||||
|
||||
public async setItem(name: string, value: string): Promise<void> {
|
||||
await set(name, value);
|
||||
}
|
||||
|
||||
public async removeItem(name: string): Promise<void> {
|
||||
await del(name);
|
||||
}
|
||||
|
||||
public async clear(): Promise<void> {
|
||||
await clear();
|
||||
}
|
||||
}
|
||||
|
||||
export const indexDBStorage = new IndexDBStorage();
|
|
@ -0,0 +1,38 @@
|
|||
import { StateStorage } from "zustand/middleware";
|
||||
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);
|
||||
} catch (error) {
|
||||
return localStorage.getItem(name);
|
||||
}
|
||||
}
|
||||
|
||||
public async setItem(name: string, value: string): Promise<void> {
|
||||
try {
|
||||
await set(name, value);
|
||||
} catch (error) {
|
||||
localStorage.setItem(name, value);
|
||||
}
|
||||
}
|
||||
|
||||
public async removeItem(name: string): Promise<void> {
|
||||
try {
|
||||
await del(name);
|
||||
} catch (error) {
|
||||
localStorage.removeItem(name);
|
||||
}
|
||||
}
|
||||
|
||||
public async clear(): Promise<void> {
|
||||
try {
|
||||
await clear();
|
||||
} catch (error) {
|
||||
localStorage.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const indexedDBStorage = new IndexedDBStorage();
|
Loading…
Reference in New Issue