fix: not handleinstall error

pull/12372/head
Joel 1 year ago
parent 35ef874867
commit 84cad5969e

@ -1,6 +1,7 @@
import { checkTaskStatus as fetchCheckTaskStatus } from '@/service/plugins' import { checkTaskStatus as fetchCheckTaskStatus } from '@/service/plugins'
import type { PluginStatus } from '../../types' import type { PluginStatus } from '../../types'
import { TaskStatus } from '../../types' import { TaskStatus } from '../../types'
import { sleep } from '@/utils'
const INTERVAL = 10 * 1000 // 10 seconds const INTERVAL = 10 * 1000 // 10 seconds
@ -17,31 +18,37 @@ function checkTaskStatus() {
taskId, taskId,
pluginUniqueIdentifier, pluginUniqueIdentifier,
}: Params) => { }: Params) => {
if (isStop) return if (isStop) {
return {
status: TaskStatus.success,
}
}
const res = await fetchCheckTaskStatus(taskId) const res = await fetchCheckTaskStatus(taskId)
const { plugins } = res.task const { plugins } = res.task
const plugin = plugins.find((p: PluginStatus) => p.plugin_unique_identifier === pluginUniqueIdentifier) const plugin = plugins.find((p: PluginStatus) => p.plugin_unique_identifier === pluginUniqueIdentifier)
if (!plugin) { if (!plugin) {
nextStatus = TaskStatus.failed nextStatus = TaskStatus.failed
Promise.reject(new Error('Plugin package not found')) return {
return status: TaskStatus.failed,
error: 'Plugin package not found',
}
} }
nextStatus = plugin.status nextStatus = plugin.status
if (nextStatus === TaskStatus.running) { if (nextStatus === TaskStatus.running) {
setTimeout(async () => { await sleep(INTERVAL)
await doCheckStatus({ return await doCheckStatus({
taskId, taskId,
pluginUniqueIdentifier, pluginUniqueIdentifier,
}) })
}, INTERVAL)
return
} }
if (nextStatus === TaskStatus.failed) { if (nextStatus === TaskStatus.failed) {
Promise.reject(plugin.message) return {
return status: TaskStatus.failed,
error: plugin.message,
}
} }
return ({ return ({
status: nextStatus, status: TaskStatus.success,
}) })
} }

@ -1,7 +1,7 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React, { useEffect } from 'react' import React, { useEffect } from 'react'
import type { PluginDeclaration } from '../../../types' import { type PluginDeclaration, TaskStatus } from '../../../types'
import Card from '../../../card' import Card from '../../../card'
import { pluginManifestToCardPluginProps } from '../../utils' import { pluginManifestToCardPluginProps } from '../../utils'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
@ -95,10 +95,14 @@ const Installed: FC<Props> = ({
return return
} }
handleRefetch() handleRefetch()
await check({ const { status, error } = await check({
taskId, taskId,
pluginUniqueIdentifier: uniqueIdentifier, pluginUniqueIdentifier: uniqueIdentifier,
}) })
if (status === TaskStatus.failed) {
onFailed(error)
return
}
onInstalled() onInstalled()
} }
catch (e) { catch (e) {

Loading…
Cancel
Save