mirror of
https://github.com/Yidadaa/ChatGPT-Next-Web.git
synced 2025-08-08 14:02:08 +08:00
feat: try catch indexedDB error
This commit is contained in:
@@ -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();
|
38
app/utils/indexedDB-storage.ts
Normal file
38
app/utils/indexedDB-storage.ts
Normal file
@@ -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();
|
Reference in New Issue
Block a user