From 020806c92e160de97831352f19e6869f4d973a77 Mon Sep 17 00:00:00 2001 From: chenxue Date: Mon, 12 May 2025 09:23:34 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9Apainting=20support=20reload=20(#588?= =?UTF-8?q?6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add painting aihubmix provider * fix: Cannot read properties of undefined (reading 'unshift') * fix: painting redux data * feat: customize aihubmix provider request logic * fix: download error retry * Update AihubmixProvider.ts * back * back --------- Co-authored-by: zhaochenxue Co-authored-by: 亢奋猫 --- src/renderer/src/i18n/locales/en-us.json | 3 ++ src/renderer/src/i18n/locales/ja-jp.json | 3 ++ src/renderer/src/i18n/locales/ru-ru.json | 3 ++ src/renderer/src/i18n/locales/zh-cn.json | 3 ++ src/renderer/src/i18n/locales/zh-tw.json | 5 ++- .../src/pages/paintings/AihubmixPage.tsx | 31 ++++++++++---- src/renderer/src/pages/paintings/Artboard.tsx | 40 +++++++++++++++++-- .../pages/paintings/config/aihubmixConfig.tsx | 28 ++++++------- 8 files changed, 90 insertions(+), 26 deletions(-) diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index eb6de2f8aa..4db5907ac4 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -773,6 +773,8 @@ "proxy_required": "Currently, you need to open a proxy to view the generated images, it will be supported in the future", "image_file_required": "Please upload an image first", "image_file_retry": "Please re-upload an image first", + "image_placeholder": "No image available", + "image_retry": "Retry", "mode": { "generate": "Draw", "edit": "Edit", @@ -1386,6 +1388,7 @@ "models.add.group_name.tooltip": "Optional e.g. ChatGPT", "models.add.model_id": "Model ID", "models.add.model_id.placeholder": "Required e.g. gpt-3.5-turbo", + "models.add.model_id.select.placeholder": "Select Model", "models.add.model_id.tooltip": "Example: gpt-3.5-turbo", "models.add.model_name": "Model Name", "models.add.model_name.placeholder": "Optional e.g. GPT-4", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 1b137319d5..6e9ab12361 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -773,6 +773,8 @@ "proxy_required": "現在、プロキシを開く必要があります。これは、将来サポートされる予定です", "image_file_required": "画像を先にアップロードしてください", "image_file_retry": "画像を先にアップロードしてください", + "image_placeholder": "画像がありません", + "image_retry": "再試行", "mode": { "generate": "画像生成", "edit": "部分編集", @@ -1384,6 +1386,7 @@ "models.add.group_name.tooltip": "例:ChatGPT", "models.add.model_id": "モデルID", "models.add.model_id.placeholder": "必須 例:gpt-3.5-turbo", + "models.add.model_id.select.placeholder": "モデルを選択", "models.add.model_id.tooltip": "例:gpt-3.5-turbo", "models.add.model_name": "モデル名", "models.add.model_name.placeholder": "例:GPT-3.5", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index a7dca3daee..82f03caebb 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -773,6 +773,8 @@ "proxy_required": "Сейчас необходимо открыть прокси для просмотра сгенерированных изображений, в будущем будет поддерживаться прямое соединение", "image_file_required": "Пожалуйста, сначала загрузите изображение", "image_file_retry": "Пожалуйста, сначала загрузите изображение", + "image_placeholder": "Изображение недоступно", + "image_retry": "Попробовать снова", "mode": { "generate": "Рисование", "edit": "Редактирование", @@ -1384,6 +1386,7 @@ "models.add.group_name.tooltip": "Необязательно, например, ChatGPT", "models.add.model_id": "ID модели", "models.add.model_id.placeholder": "Обязательно, например, gpt-3.5-turbo", + "models.add.model_id.select.placeholder": "Выберите модель", "models.add.model_id.tooltip": "Пример: gpt-3.5-turbo", "models.add.model_name": "Имя модели", "models.add.model_name.placeholder": "Необязательно, например, GPT-4", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index bcff17bebd..f3545271d1 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -773,6 +773,8 @@ "proxy_required": "目前需要打开代理才能查看生成图片,后续会支持国内直连", "image_file_required": "请先上传图片", "image_file_retry": "请重新上传图片", + "image_placeholder": "暂无图片", + "image_retry": "重试", "mode": { "generate": "绘图", "edit": "编辑", @@ -1386,6 +1388,7 @@ "models.add.group_name.tooltip": "例如 ChatGPT", "models.add.model_id": "模型 ID", "models.add.model_id.placeholder": "必填 例如 gpt-3.5-turbo", + "models.add.model_id.select.placeholder": "选择模型", "models.add.model_id.tooltip": "例如 gpt-3.5-turbo", "models.add.model_name": "模型名称", "models.add.model_name.placeholder": "例如 GPT-3.5", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 58c52aa7d8..a342046550 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -773,6 +773,8 @@ "proxy_required": "目前需要打開代理才能查看生成圖片,後續會支持國內直連", "image_file_required": "請先上傳圖片", "image_file_retry": "請重新上傳圖片", + "image_placeholder": "無圖片", + "image_retry": "重試", "mode": { "generate": "繪圖", "edit": "編輯", @@ -1385,6 +1387,7 @@ "models.add.group_name.tooltip": "選填,例如 ChatGPT", "models.add.model_id": "模型 ID", "models.add.model_id.placeholder": "必填,例如 gpt-3.5-turbo", + "models.add.model_id.select.placeholder": "選擇模型", "models.add.model_id.tooltip": "例如 gpt-3.5-turbo", "models.add.model_name": "模型名稱", "models.add.model_name.placeholder": "選填,例如 GPT-4", @@ -1667,4 +1670,4 @@ "visualization": "視覺化" } } -} \ No newline at end of file +} diff --git a/src/renderer/src/pages/paintings/AihubmixPage.tsx b/src/renderer/src/pages/paintings/AihubmixPage.tsx index aa52b0d560..69ef3eabf3 100644 --- a/src/renderer/src/pages/paintings/AihubmixPage.tsx +++ b/src/renderer/src/pages/paintings/AihubmixPage.tsx @@ -223,14 +223,6 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { const validFiles = downloadedFiles.filter((file): file is FileType => file !== null) - // 如果没有成功下载任何文件但有URLs,显示代理提示 - if (validFiles.length === 0 && urls.length > 0) { - window.modal.error({ - content: t('paintings.proxy_required'), - centered: true - }) - } - await FileManager.addFiles(validFiles) updatePaintingState({ files: validFiles, urls }) @@ -249,6 +241,28 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { } } + const handleRetry = async (painting: PaintingAction) => { + setIsLoading(true) + const downloadedFiles = await Promise.all( + painting.urls.map(async (url) => { + try { + return await window.api.file.download(url) + } catch (error) { + console.error('下载图像失败:', error) + setIsLoading(false) + return null + } + }) + ) + + const validFiles = downloadedFiles.filter((file): file is FileType => file !== null) + + await FileManager.addFiles(validFiles) + + updatePaintingState({ files: validFiles, urls: painting.urls }) + setIsLoading(false) + } + const onCancel = () => { abortController?.abort() } @@ -556,6 +570,7 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { onPrevImage={prevImage} onNextImage={nextImage} onCancel={onCancel} + retry={handleRetry} />