From 0c3fb5b2ced2e868de3b9a43f86ab694fd6289dc Mon Sep 17 00:00:00 2001
From: ElricLiu <20209191+ElricLiu@users.noreply.github.com>
Date: Fri, 23 Aug 2024 17:28:00 +0800
Subject: [PATCH 1/7] Update README.md
add monica sponsored
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index da1adb6a5..db62e0838 100644
--- a/README.md
+++ b/README.md
@@ -30,6 +30,8 @@ One-Click to get a well-designed cross-platform ChatGPT web UI, with GPT3, GPT4
[
](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FChatGPTNextWeb%2FChatGPT-Next-Web&env=OPENAI_API_KEY&env=CODE&project-name=nextchat&repository-name=NextChat) [
](https://zeabur.com/templates/ZBUEFA) [
](https://gitpod.io/#https://github.com/Yidadaa/ChatGPT-Next-Web)
+[
](https://monica.im/?utm=nxcrp)
+
## Enterprise Edition
From 4060e367ad90be23b9a94c241e2251d952520ea4 Mon Sep 17 00:00:00 2001
From: Dogtiti <499960698@qq.com>
Date: Mon, 26 Aug 2024 21:13:35 +0800
Subject: [PATCH 2/7] feat: add indexDB
---
app/utils/indexDB-storage.ts | 20 ++++++++++++++++++++
app/utils/store.ts | 4 +++-
package.json | 1 +
yarn.lock | 5 +++++
4 files changed, 29 insertions(+), 1 deletion(-)
create mode 100644 app/utils/indexDB-storage.ts
diff --git a/app/utils/indexDB-storage.ts b/app/utils/indexDB-storage.ts
new file mode 100644
index 000000000..ef9927923
--- /dev/null
+++ b/app/utils/indexDB-storage.ts
@@ -0,0 +1,20 @@
+import { StateStorage } from "zustand/middleware";
+import { get, set, del } from "idb-keyval";
+
+class IndexDBStorage implements StateStorage {
+ constructor() {}
+
+ public async getItem(name: string): Promise {
+ return (await get(name)) || localStorage.getItem(name);
+ }
+
+ public async setItem(name: string, value: string): Promise {
+ await set(name, value);
+ }
+
+ public async removeItem(name: string): Promise {
+ await del(name);
+ }
+}
+
+export const indexDBStorage = new IndexDBStorage();
diff --git a/app/utils/store.ts b/app/utils/store.ts
index 684a19112..1a7e0d24b 100644
--- a/app/utils/store.ts
+++ b/app/utils/store.ts
@@ -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 { indexDBStorage } from "@/app/utils/indexDB-storage";
type SecondParam = T extends (
_f: infer _F,
@@ -31,6 +32,7 @@ export function createPersistStore(
) => M,
persistOptions: SecondParam>>,
) {
+ persistOptions.storage = createJSONStorage(() => indexDBStorage);
return create(
persist(
combine(
diff --git a/package.json b/package.json
index eb0a5ef67..1c6d78c20 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,7 @@
"fuse.js": "^7.0.0",
"heic2any": "^0.0.4",
"html-to-image": "^1.11.11",
+ "idb-keyval": "^6.2.1",
"lodash-es": "^4.17.21",
"mermaid": "^10.6.1",
"nanoid": "^5.0.3",
diff --git a/yarn.lock b/yarn.lock
index 793c845d7..1c7f834e8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3926,6 +3926,11 @@ iconv-lite@0.6:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
+idb-keyval@^6.2.1:
+ version "6.2.1"
+ resolved "https://registry.npmmirror.com/idb-keyval/-/idb-keyval-6.2.1.tgz#94516d625346d16f56f3b33855da11bfded2db33"
+ integrity sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==
+
ignore@^5.2.0:
version "5.2.4"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
From 492b55c8939593f9eddef084f99e14a5d4a5033b Mon Sep 17 00:00:00 2001
From: Dogtiti <499960698@qq.com>
Date: Mon, 26 Aug 2024 21:20:07 +0800
Subject: [PATCH 3/7] feat: add indexDB
---
app/store/chat.ts | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/app/store/chat.ts b/app/store/chat.ts
index 653926d1b..ffaf8c996 100644
--- a/app/store/chat.ts
+++ b/app/store/chat.ts
@@ -27,6 +27,7 @@ import { createPersistStore } from "../utils/store";
import { collectModelsWithDefaultModel } from "../utils/model";
import { useAccessStore } from "./access";
import { isDalle3 } from "../utils";
+import { clear } from "idb-keyval";
export type ChatMessage = RequestMessage & {
date: string;
@@ -665,7 +666,8 @@ export const useChatStore = createPersistStore(
set(() => ({ sessions }));
},
- clearAllData() {
+ async clearAllData() {
+ await clear();
localStorage.clear();
location.reload();
},
From 0b758941a4104ee6fdcb58431ac7ebc5c69f2323 Mon Sep 17 00:00:00 2001
From: Dogtiti <499960698@qq.com>
Date: Mon, 26 Aug 2024 21:23:21 +0800
Subject: [PATCH 4/7] feat: clear indexDB
---
app/store/chat.ts | 4 ++--
app/utils/indexDB-storage.ts | 8 +++++---
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/app/store/chat.ts b/app/store/chat.ts
index ffaf8c996..a6e4ee796 100644
--- a/app/store/chat.ts
+++ b/app/store/chat.ts
@@ -27,7 +27,7 @@ import { createPersistStore } from "../utils/store";
import { collectModelsWithDefaultModel } from "../utils/model";
import { useAccessStore } from "./access";
import { isDalle3 } from "../utils";
-import { clear } from "idb-keyval";
+import { indexDBStorage } from "@/app/utils/indexDB-storage";
export type ChatMessage = RequestMessage & {
date: string;
@@ -667,7 +667,7 @@ export const useChatStore = createPersistStore(
},
async clearAllData() {
- await clear();
+ await indexDBStorage.clear();
localStorage.clear();
location.reload();
},
diff --git a/app/utils/indexDB-storage.ts b/app/utils/indexDB-storage.ts
index ef9927923..5dee4c856 100644
--- a/app/utils/indexDB-storage.ts
+++ b/app/utils/indexDB-storage.ts
@@ -1,9 +1,7 @@
import { StateStorage } from "zustand/middleware";
-import { get, set, del } from "idb-keyval";
+import { get, set, del, clear } from "idb-keyval";
class IndexDBStorage implements StateStorage {
- constructor() {}
-
public async getItem(name: string): Promise {
return (await get(name)) || localStorage.getItem(name);
}
@@ -15,6 +13,10 @@ class IndexDBStorage implements StateStorage {
public async removeItem(name: string): Promise {
await del(name);
}
+
+ public async clear(): Promise {
+ await clear();
+ }
}
export const indexDBStorage = new IndexDBStorage();
From c2fc0b49797ef8b016949d9051bfad140326bdef Mon Sep 17 00:00:00 2001
From: Dogtiti <499960698@qq.com>
Date: Tue, 27 Aug 2024 09:57:07 +0800
Subject: [PATCH 5/7] feat: try catch indexedDB error
---
app/store/chat.ts | 4 ++--
app/utils/indexDB-storage.ts | 22 --------------------
app/utils/indexedDB-storage.ts | 38 ++++++++++++++++++++++++++++++++++
3 files changed, 40 insertions(+), 24 deletions(-)
delete mode 100644 app/utils/indexDB-storage.ts
create mode 100644 app/utils/indexedDB-storage.ts
diff --git a/app/store/chat.ts b/app/store/chat.ts
index a6e4ee796..de2a63078 100644
--- a/app/store/chat.ts
+++ b/app/store/chat.ts
@@ -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();
},
diff --git a/app/utils/indexDB-storage.ts b/app/utils/indexDB-storage.ts
deleted file mode 100644
index 5dee4c856..000000000
--- a/app/utils/indexDB-storage.ts
+++ /dev/null
@@ -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 {
- return (await get(name)) || localStorage.getItem(name);
- }
-
- public async setItem(name: string, value: string): Promise {
- await set(name, value);
- }
-
- public async removeItem(name: string): Promise {
- await del(name);
- }
-
- public async clear(): Promise {
- await clear();
- }
-}
-
-export const indexDBStorage = new IndexDBStorage();
diff --git a/app/utils/indexedDB-storage.ts b/app/utils/indexedDB-storage.ts
new file mode 100644
index 000000000..51ee92b81
--- /dev/null
+++ b/app/utils/indexedDB-storage.ts
@@ -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 {
+ try {
+ return (await get(name)) || localStorage.getItem(name);
+ } catch (error) {
+ return localStorage.getItem(name);
+ }
+ }
+
+ public async setItem(name: string, value: string): Promise {
+ try {
+ await set(name, value);
+ } catch (error) {
+ localStorage.setItem(name, value);
+ }
+ }
+
+ public async removeItem(name: string): Promise {
+ try {
+ await del(name);
+ } catch (error) {
+ localStorage.removeItem(name);
+ }
+ }
+
+ public async clear(): Promise {
+ try {
+ await clear();
+ } catch (error) {
+ localStorage.clear();
+ }
+ }
+}
+
+export const indexedDBStorage = new IndexedDBStorage();
From 7b6fe66f2a1a7f227f7116b72f9dd4e10207cd44 Mon Sep 17 00:00:00 2001
From: Dogtiti <499960698@qq.com>
Date: Tue, 27 Aug 2024 10:05:37 +0800
Subject: [PATCH 6/7] feat: try catch indexedDB error
---
app/utils/store.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/utils/store.ts b/app/utils/store.ts
index 1a7e0d24b..13bef6d5d 100644
--- a/app/utils/store.ts
+++ b/app/utils/store.ts
@@ -2,7 +2,7 @@ import { create } from "zustand";
import { combine, persist, createJSONStorage } from "zustand/middleware";
import { Updater } from "../typing";
import { deepClone } from "./clone";
-import { indexDBStorage } from "@/app/utils/indexDB-storage";
+import { indexedDBStorage } from "@/app/utils/indexedDB-storage";
type SecondParam = T extends (
_f: infer _F,
@@ -32,7 +32,7 @@ export function createPersistStore(
) => M,
persistOptions: SecondParam>>,
) {
- persistOptions.storage = createJSONStorage(() => indexDBStorage);
+ persistOptions.storage = createJSONStorage(() => indexedDBStorage);
return create(
persist(
combine(
From 19c7a84548b55aa348e009611d4ac766e6b23af0 Mon Sep 17 00:00:00 2001
From: Dogtiti <499960698@qq.com>
Date: Thu, 29 Aug 2024 20:48:04 +0800
Subject: [PATCH 7/7] fix: right click
---
app/components/chat.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/components/chat.tsx b/app/components/chat.tsx
index ed5b06799..5be8b4d3d 100644
--- a/app/components/chat.tsx
+++ b/app/components/chat.tsx
@@ -1587,7 +1587,7 @@ function _Chat() {
message.content.length === 0 &&
!isUser
}
- onContextMenu={(e) => onRightClick(e, message)}
+ // onContextMenu={(e) => onRightClick(e, message)} // hard to use
onDoubleClickCapture={() => {
if (!isMobileScreen) return;
setUserInput(getMessageTextContent(message));