mirror of
https://github.com/Yidadaa/ChatGPT-Next-Web.git
synced 2025-08-08 13:06:57 +08:00
Merge remote-tracking branch 'connectai/main' into feature/plugin
This commit is contained in:
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();
|
@@ -1,7 +1,8 @@
|
||||
import { create } from "zustand";
|
||||
import { combine, persist } from "zustand/middleware";
|
||||
import { combine, persist, createJSONStorage } from "zustand/middleware";
|
||||
import { Updater } from "../typing";
|
||||
import { deepClone } from "./clone";
|
||||
import { indexedDBStorage } from "@/app/utils/indexedDB-storage";
|
||||
|
||||
type SecondParam<T> = T extends (
|
||||
_f: infer _F,
|
||||
@@ -31,6 +32,7 @@ export function createPersistStore<T extends object, M>(
|
||||
) => M,
|
||||
persistOptions: SecondParam<typeof persist<T & M & MakeUpdater<T>>>,
|
||||
) {
|
||||
persistOptions.storage = createJSONStorage(() => indexedDBStorage);
|
||||
return create(
|
||||
persist(
|
||||
combine(
|
||||
|
Reference in New Issue
Block a user