瀏覽代碼

feat: close #2908 allow to disable parse settings from link

Yidadaa 1 年之前
父節點
當前提交
c5ca278253
共有 7 個文件被更改,包括 29 次插入15 次删除
  1. 6 0
      README.md
  2. 4 0
      README_CN.md
  3. 1 0
      app/api/config/route.ts
  4. 6 3
      app/components/chat.tsx
  5. 9 3
      app/components/settings.tsx
  6. 2 0
      app/config/server.ts
  7. 1 9
      app/store/access.ts

+ 6 - 0
README.md

@@ -191,6 +191,12 @@ If you do not want users to use GPT-4, set this value to 1.
 
 If you do want users to query balance, set this value to 1, or you should set it to 0.
 
+### `DISABLE_FAST_LINK` (optional)
+
+> Default: Empty
+
+If you want to disable parse settings from url, set this to 1.
+
 ## Requirements
 
 NodeJS >= 18, Docker >= 20

+ 4 - 0
README_CN.md

@@ -102,6 +102,10 @@ OpenAI 接口代理 URL,如果你手动配置了 openai 接口代理,请填
 
 如果你想启用余额查询功能,将此环境变量设置为 1 即可。
 
+### `DISABLE_FAST_LINK` (可选)
+
+如果你想禁用从链接解析预制设置,将此环境变量设置为 1 即可。
+
 ## 开发
 
 点击下方按钮,开始二次开发:

+ 1 - 0
app/api/config/route.ts

@@ -11,6 +11,7 @@ const DANGER_CONFIG = {
   hideUserApiKey: serverConfig.hideUserApiKey,
   disableGPT4: serverConfig.disableGPT4,
   hideBalanceQuery: serverConfig.hideBalanceQuery,
+  disableFastLink: serverConfig.disableFastLink,
 };
 
 declare global {

+ 6 - 3
app/components/chat.tsx

@@ -975,14 +975,17 @@ function _Chat() {
       doSubmit(text);
     },
     code: (text) => {
+      if (accessStore.disableFastLink) return;
       console.log("[Command] got code from url: ", text);
       showConfirm(Locale.URLCommand.Code + `code = ${text}`).then((res) => {
         if (res) {
-          accessStore.updateCode(text);
+          accessStore.update((access) => (access.accessCode = text));
         }
       });
     },
     settings: (text) => {
+      if (accessStore.disableFastLink) return;
+
       try {
         const payload = JSON.parse(text) as {
           key?: string;
@@ -998,10 +1001,10 @@ function _Chat() {
           ).then((res) => {
             if (!res) return;
             if (payload.key) {
-              accessStore.updateToken(payload.key);
+              accessStore.update((access) => (access.token = payload.key!));
             }
             if (payload.url) {
-              accessStore.updateOpenAiUrl(payload.url);
+              accessStore.update((access) => (access.openaiUrl = payload.url!));
             }
           });
         }

+ 9 - 3
app/components/settings.tsx

@@ -888,7 +888,9 @@ export function Settings() {
                 type="text"
                 placeholder={Locale.Settings.AccessCode.Placeholder}
                 onChange={(e) => {
-                  accessStore.updateCode(e.currentTarget.value);
+                  accessStore.update(
+                    (access) => (access.accessCode = e.currentTarget.value),
+                  );
                 }}
               />
             </ListItem>
@@ -907,7 +909,9 @@ export function Settings() {
                   value={accessStore.openaiUrl}
                   placeholder="https://api.openai.com/"
                   onChange={(e) =>
-                    accessStore.updateOpenAiUrl(e.currentTarget.value)
+                    accessStore.update(
+                      (access) => (access.openaiUrl = e.currentTarget.value),
+                    )
                   }
                 ></input>
               </ListItem>
@@ -920,7 +924,9 @@ export function Settings() {
                   type="text"
                   placeholder={Locale.Settings.Token.Placeholder}
                   onChange={(e) => {
-                    accessStore.updateToken(e.currentTarget.value);
+                    accessStore.update(
+                      (access) => (access.token = e.currentTarget.value),
+                    );
                   }}
                 />
               </ListItem>

+ 2 - 0
app/config/server.ts

@@ -13,6 +13,7 @@ declare global {
       BUILD_MODE?: "standalone" | "export";
       BUILD_APP?: string; // is building desktop app
       ENABLE_BALANCE_QUERY?: string; // allow user to query balance or not
+      DISABLE_FAST_LINK?: string; // disallow parse settings from url or not
     }
   }
 }
@@ -48,5 +49,6 @@ export const getServerSideConfig = () => {
     hideUserApiKey: !!process.env.HIDE_USER_API_KEY,
     disableGPT4: !!process.env.DISABLE_GPT4,
     hideBalanceQuery: !process.env.ENABLE_BALANCE_QUERY,
+    disableFastLink: !!process.env.DISABLE_FAST_LINK,
   };
 };

+ 1 - 9
app/store/access.ts

@@ -16,6 +16,7 @@ const DEFAULT_ACCESS_STATE = {
   hideUserApiKey: false,
   hideBalanceQuery: false,
   disableGPT4: false,
+  disableFastLink: false,
 
   openaiUrl: DEFAULT_OPENAI_URL,
 };
@@ -29,15 +30,6 @@ export const useAccessStore = createPersistStore(
 
       return get().needCode;
     },
-    updateCode(code: string) {
-      set(() => ({ accessCode: code?.trim() }));
-    },
-    updateToken(token: string) {
-      set(() => ({ token: token?.trim() }));
-    },
-    updateOpenAiUrl(url: string) {
-      set(() => ({ openaiUrl: url?.trim() }));
-    },
     isAuthorized() {
       this.fetch();