From 84cad5969ee342c517fd44f73529d79420b807d3 Mon Sep 17 00:00:00 2001 From: Joel Date: Fri, 29 Nov 2024 15:09:23 +0800 Subject: [PATCH] fix: not handleinstall error --- .../install-plugin/base/check-task-status.ts | 33 +++++++++++-------- .../steps/install.tsx | 8 +++-- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/web/app/components/plugins/install-plugin/base/check-task-status.ts b/web/app/components/plugins/install-plugin/base/check-task-status.ts index 96d6171aaf..320f50d70a 100644 --- a/web/app/components/plugins/install-plugin/base/check-task-status.ts +++ b/web/app/components/plugins/install-plugin/base/check-task-status.ts @@ -1,6 +1,7 @@ import { checkTaskStatus as fetchCheckTaskStatus } from '@/service/plugins' import type { PluginStatus } from '../../types' import { TaskStatus } from '../../types' +import { sleep } from '@/utils' const INTERVAL = 10 * 1000 // 10 seconds @@ -17,31 +18,37 @@ function checkTaskStatus() { taskId, pluginUniqueIdentifier, }: Params) => { - if (isStop) return + if (isStop) { + return { + status: TaskStatus.success, + } + } const res = await fetchCheckTaskStatus(taskId) const { plugins } = res.task const plugin = plugins.find((p: PluginStatus) => p.plugin_unique_identifier === pluginUniqueIdentifier) if (!plugin) { nextStatus = TaskStatus.failed - Promise.reject(new Error('Plugin package not found')) - return + return { + status: TaskStatus.failed, + error: 'Plugin package not found', + } } nextStatus = plugin.status if (nextStatus === TaskStatus.running) { - setTimeout(async () => { - await doCheckStatus({ - taskId, - pluginUniqueIdentifier, - }) - }, INTERVAL) - return + await sleep(INTERVAL) + return await doCheckStatus({ + taskId, + pluginUniqueIdentifier, + }) } if (nextStatus === TaskStatus.failed) { - Promise.reject(plugin.message) - return + return { + status: TaskStatus.failed, + error: plugin.message, + } } return ({ - status: nextStatus, + status: TaskStatus.success, }) } diff --git a/web/app/components/plugins/install-plugin/install-from-local-package/steps/install.tsx b/web/app/components/plugins/install-plugin/install-from-local-package/steps/install.tsx index 1ae300ffa2..13d766cbad 100644 --- a/web/app/components/plugins/install-plugin/install-from-local-package/steps/install.tsx +++ b/web/app/components/plugins/install-plugin/install-from-local-package/steps/install.tsx @@ -1,7 +1,7 @@ 'use client' import type { FC } from 'react' import React, { useEffect } from 'react' -import type { PluginDeclaration } from '../../../types' +import { type PluginDeclaration, TaskStatus } from '../../../types' import Card from '../../../card' import { pluginManifestToCardPluginProps } from '../../utils' import Button from '@/app/components/base/button' @@ -95,10 +95,14 @@ const Installed: FC = ({ return } handleRefetch() - await check({ + const { status, error } = await check({ taskId, pluginUniqueIdentifier: uniqueIdentifier, }) + if (status === TaskStatus.failed) { + onFailed(error) + return + } onInstalled() } catch (e) {