Ver Fonte

feat(ui): add classic frontend switch

CaIon há 1 semana atrás
pai
commit
dac55f0fde

+ 46 - 0
web/classic/src/components/settings/OtherSetting.jsx

@@ -82,6 +82,7 @@ const OtherSetting = () => {
     About: false,
     Footer: false,
     CheckUpdate: false,
+    FrontendTheme: false,
   });
   const handleInputChange = async (value, e) => {
     const name = e.target.id;
@@ -278,6 +279,45 @@ const OtherSetting = () => {
       }));
     }
   };
+
+  const switchToDefaultFrontend = () => {
+    Modal.confirm({
+      title: t('切换到新版前端'),
+      content: t('切换后页面会自动刷新,并进入新版前端。是否继续?'),
+      okText: t('确认切换'),
+      cancelText: t('取消'),
+      onOk: async () => {
+        try {
+          setLoadingInput((loadingInput) => ({
+            ...loadingInput,
+            FrontendTheme: true,
+          }));
+          const res = await API.put('/api/option/', {
+            key: 'theme.frontend',
+            value: 'default',
+          });
+          const { success, message } = res.data;
+          if (!success) {
+            showError(message);
+            return;
+          }
+          showSuccess(t('已切换到新版前端,正在刷新页面'));
+          setTimeout(() => {
+            window.location.reload();
+          }, 600);
+        } catch (error) {
+          console.error('切换新版前端失败', error);
+          showError(t('切换失败,请稍后重试'));
+        } finally {
+          setLoadingInput((loadingInput) => ({
+            ...loadingInput,
+            FrontendTheme: false,
+          }));
+        }
+      },
+    });
+  };
+
   const getOptions = async () => {
     const res = await API.get('/api/option/');
     const { success, message, data } = res.data;
@@ -342,6 +382,12 @@ const OtherSetting = () => {
                     >
                       {t('检查更新')}
                     </Button>
+                    <Button
+                      onClick={switchToDefaultFrontend}
+                      loading={loadingInput['FrontendTheme']}
+                    >
+                      {t('切换到新版前端')}
+                    </Button>
                   </Space>
                 </Col>
               </Row>

+ 5 - 0
web/classic/src/i18n/locales/en.json

@@ -928,6 +928,9 @@
     "取消": "Cancel",
     "取消全选": "Deselect all",
     "取消选择": "Deselect",
+    "切换到新版前端": "Switch to new frontend",
+    "切换后页面会自动刷新,并进入新版前端。是否继续?": "The page will refresh and open the new frontend. Continue?",
+    "切换失败,请稍后重试": "Switch failed, please try again later",
     "变换": "Transform",
     "变更": "Change",
     "变焦": "zoom",
@@ -1357,6 +1360,7 @@
     "已发起支付": "Payment initiated",
     "已发送到 Fluent": "Sent to Fluent",
     "已取消 Passkey 注册": "Passkey registration cancelled",
+    "已切换到新版前端,正在刷新页面": "Switched to the new frontend, refreshing page",
     "已同步到渠道": "Synced to Channel",
     "已启用": "Enabled",
     "已启用 Passkey,无需密码即可登录": "Passkey enabled, login without password",
@@ -2525,6 +2529,7 @@
     "确认删除该规则?": "Confirm delete this rule?",
     "确认取消密码登录": "Confirm cancel password login",
     "确认启用": "Confirm Enable",
+    "确认切换": "Confirm switch",
     "确认密码": "Confirm Password",
     "确认导入配置": "Confirm import configuration",
     "确认延长": "Confirm Extension",

+ 5 - 0
web/classic/src/i18n/locales/fr.json

@@ -926,6 +926,9 @@
     "取消": "Annuler",
     "取消全选": "Annuler la sélection",
     "取消选择": "Deselect",
+    "切换到新版前端": "Passer au nouveau frontend",
+    "切换后页面会自动刷新,并进入新版前端。是否继续?": "La page sera actualisée et ouvrira le nouveau frontend. Continuer ?",
+    "切换失败,请稍后重试": "Le changement a échoué, veuillez réessayer plus tard",
     "变换": "Variation",
     "变更": "Modification",
     "变焦": "Zoom",
@@ -1358,6 +1361,7 @@
     "已发起支付": "Paiement initié",
     "已发送到 Fluent": "Envoyé à Fluent",
     "已取消 Passkey 注册": "Enregistrement du Passkey annulé",
+    "已切换到新版前端,正在刷新页面": "Passage au nouveau frontend effectué, actualisation de la page",
     "已同步到渠道": "Synced to Channel",
     "已启用": "Activé",
     "已启用 Passkey,无需密码即可登录": "Passkey activé. Connexion sans mot de passe disponible.",
@@ -2513,6 +2517,7 @@
     "确认删除该规则?": "Confirm delete this rule?",
     "确认取消密码登录": "Confirmer l'annulation de la connexion par mot de passe",
     "确认启用": "Confirmer l'activation",
+    "确认切换": "Confirmer le changement",
     "确认密码": "Confirmer le mot de passe",
     "确认导入配置": "Confirmer l'importation de la configuration",
     "确认延长": "Confirm Extension",

+ 5 - 0
web/classic/src/i18n/locales/ja.json

@@ -913,6 +913,9 @@
     "取消": "キャンセル",
     "取消全选": "すべての選択を解除",
     "取消选择": "Deselect",
+    "切换到新版前端": "新しいフロントエンドに切り替え",
+    "切换后页面会自动刷新,并进入新版前端。是否继续?": "ページを更新して新しいフロントエンドを開きます。続行しますか?",
+    "切换失败,请稍后重试": "切り替えに失敗しました。しばらくしてからもう一度お試しください",
     "变换": "バリエーション",
     "变更": "変更",
     "变焦": "ズーム",
@@ -1337,6 +1340,7 @@
     "已发起支付": "支払いを開始しました",
     "已发送到 Fluent": "Fluentに送信されました",
     "已取消 Passkey 注册": "Passkeyの登録がキャンセルされました",
+    "已切换到新版前端,正在刷新页面": "新しいフロントエンドに切り替えました。ページを更新しています",
     "已同步到渠道": "Synced to Channel",
     "已启用": "有効",
     "已启用 Passkey,无需密码即可登录": "Passkeyが有効になり、パスワードなしでログインできます",
@@ -2482,6 +2486,7 @@
     "确认删除该规则?": "このルールを削除しますか?",
     "确认取消密码登录": "パスワードログイン無効化の確認",
     "确认启用": "有効化を確認",
+    "确认切换": "切り替えを確認",
     "确认密码": "パスワード(確認用)",
     "确认导入配置": "設定インポートの確認",
     "确认延长": "Confirm Extension",

+ 5 - 0
web/classic/src/i18n/locales/ru.json

@@ -934,6 +934,9 @@
     "取消": "Отмена",
     "取消全选": "Отменить выбор всех",
     "取消选择": "Deselect",
+    "切换到新版前端": "Переключиться на новый интерфейс",
+    "切换后页面会自动刷新,并进入新版前端。是否继续?": "Страница обновится и откроет новый интерфейс. Продолжить?",
+    "切换失败,请稍后重试": "Не удалось переключиться, повторите попытку позже",
     "变换": "Трансформация",
     "变更": "Изменение",
     "变焦": "Масштабирование",
@@ -1371,6 +1374,7 @@
     "已发起支付": "Оплата инициирована",
     "已发送到 Fluent": "Отправлено в Fluent",
     "已取消 Passkey 注册": "Регистрация Passkey отменена",
+    "已切换到新版前端,正在刷新页面": "Переключено на новый интерфейс, страница обновляется",
     "已同步到渠道": "Synced to Channel",
     "已启用": "Включено",
     "已启用 Passkey,无需密码即可登录": "Passkey включен, вход без пароля",
@@ -2533,6 +2537,7 @@
     "确认删除该规则?": "Confirm delete this rule?",
     "确认取消密码登录": "Подтвердить отмену входа по паролю",
     "确认启用": "Подтвердить включение",
+    "确认切换": "Подтвердить переключение",
     "确认密码": "Подтвердить пароль",
     "确认导入配置": "Подтвердить импорт конфигурации",
     "确认延长": "Confirm Extension",

+ 5 - 0
web/classic/src/i18n/locales/vi.json

@@ -914,6 +914,9 @@
     "取消": "Hủy",
     "取消全选": "Bỏ chọn tất cả",
     "取消选择": "Deselect",
+    "切换到新版前端": "Chuyển sang frontend mới",
+    "切换后页面会自动刷新,并进入新版前端。是否继续?": "Trang sẽ được làm mới và mở frontend mới. Tiếp tục?",
+    "切换失败,请稍后重试": "Chuyển đổi thất bại, vui lòng thử lại sau",
     "变换": "Biến đổi",
     "变更": "Thay đổi",
     "变焦": "thu phóng",
@@ -1338,6 +1341,7 @@
     "已发起支付": "Đã khởi tạo thanh toán",
     "已发送到 Fluent": "Đã gửi đến Fluent",
     "已取消 Passkey 注册": "Đã hủy đăng ký Passkey",
+    "已切换到新版前端,正在刷新页面": "Đã chuyển sang frontend mới, đang làm mới trang",
     "已同步到渠道": "Synced to Channel",
     "已启用": "Đã bật",
     "已启用 Passkey,无需密码即可登录": "Đã bật Passkey, đăng nhập không cần mật khẩu",
@@ -2710,6 +2714,7 @@
     "确认删除该规则?": "Confirm delete this rule?",
     "确认取消密码登录": "Xác nhận hủy đăng nhập mật khẩu",
     "确认启用": "Xác nhận bật",
+    "确认切换": "Xác nhận chuyển đổi",
     "确认密码": "Xác nhận mật khẩu",
     "确认导入配置": "Xác nhận nhập cấu hình",
     "确认延长": "Confirm Extension",

+ 5 - 0
web/classic/src/i18n/locales/zh-CN.json

@@ -761,6 +761,9 @@
     "分组速率配置优先级高于全局速率限制。": "分组速率配置优先级高于全局速率限制。",
     "分组速率限制": "分组速率限制",
     "分钟": "分钟",
+    "切换到新版前端": "切换到新版前端",
+    "切换后页面会自动刷新,并进入新版前端。是否继续?": "切换后页面会自动刷新,并进入新版前端。是否继续?",
+    "切换失败,请稍后重试": "切换失败,请稍后重试",
     "切换为Assistant角色": "切换为Assistant角色",
     "切换为System角色": "切换为System角色",
     "切换为单密钥模式": "切换为单密钥模式",
@@ -1307,6 +1310,7 @@
     "已停止批量测试": "已停止批量测试",
     "已关闭后续提醒": "已关闭后续提醒",
     "已分配内存": "已分配内存",
+    "已切换到新版前端,正在刷新页面": "已切换到新版前端,正在刷新页面",
     "已切换为Assistant角色": "已切换为Assistant角色",
     "已切换为System角色": "已切换为System角色",
     "已切换至最优倍率视图,每个模型使用其最低倍率分组": "已切换至最优倍率视图,每个模型使用其最低倍率分组",
@@ -2482,6 +2486,7 @@
     "确认删除该规则?": "确认删除该规则?",
     "确认取消密码登录": "确认取消密码登录",
     "确认启用": "确认启用",
+    "确认切换": "确认切换",
     "确认密码": "确认密码",
     "确认导入配置": "确认导入配置",
     "确认延长": "确认延长",

+ 5 - 0
web/classic/src/i18n/locales/zh-TW.json

@@ -911,6 +911,9 @@
     "取消": "取消",
     "取消全选": "取消全選",
     "取消选择": "取消選擇",
+    "切换到新版前端": "切換到新版前端",
+    "切换后页面会自动刷新,并进入新版前端。是否继续?": "切換後頁面會自動重新整理,並進入新版前端。是否繼續?",
+    "切换失败,请稍后重试": "切換失敗,請稍後重試",
     "变换": "變換",
     "变更": "變更",
     "变焦": "變焦",
@@ -1334,6 +1337,7 @@
     "已发起支付": "已發起支付",
     "已发送到 Fluent": "已發送到 Fluent",
     "已取消 Passkey 注册": "已取消 Passkey 註冊",
+    "已切换到新版前端,正在刷新页面": "已切換到新版前端,正在重新整理頁面",
     "已同步到渠道": "已同步到管道",
     "已启用": "已啟用",
     "已启用 Passkey,无需密码即可登录": "已啟用 Passkey,無需密碼即可登錄",
@@ -2492,6 +2496,7 @@
     "确认删除该规则?": "確認刪除該規則?",
     "确认取消密码登录": "確認取消密碼登錄",
     "确认启用": "",
+    "确认切换": "確認切換",
     "确认密码": "確認密碼",
     "确认导入配置": "確認導入設定",
     "确认延长": "確認延長",

+ 5 - 0
web/classic/src/i18n/locales/zh.json

@@ -617,6 +617,9 @@
     "取消": "取消",
     "取消全选": "取消全选",
     "取消选择": "取消选择",
+    "切换到新版前端": "切换到新版前端",
+    "切换后页面会自动刷新,并进入新版前端。是否继续?": "切换后页面会自动刷新,并进入新版前端。是否继续?",
+    "切换失败,请稍后重试": "切换失败,请稍后重试",
     "变换": "变换",
     "变焦": "变焦",
     "变量值": "变量值",
@@ -903,6 +906,7 @@
     "已删除消息及其回复": "已删除消息及其回复",
     "已发送到 Fluent": "已发送到 Fluent",
     "已取消 Passkey 注册": "已取消 Passkey 注册",
+    "已切换到新版前端,正在刷新页面": "已切换到新版前端,正在刷新页面",
     "已同步到渠道": "已同步到渠道",
     "已启用": "已启用",
     "已启用 Passkey,无需密码即可登录": "已启用 Passkey,无需密码即可登录",
@@ -1729,6 +1733,7 @@
     "确认删除": "确认删除",
     "确认删除模型": "确认删除模型",
     "确认取消密码登录": "确认取消密码登录",
+    "确认切换": "确认切换",
     "确认密码": "确认密码",
     "确认导入配置": "确认导入配置",
     "确认延长": "确认延长",