fix: install installed plugin problem (#13384)
This commit is contained in:
parent
fec3bb4469
commit
3e9c3d0bb7
@ -16,6 +16,7 @@ const useCheckInstalled = (props: Props) => {
|
|||||||
const res: Record<string, VersionInfo> = {}
|
const res: Record<string, VersionInfo> = {}
|
||||||
data?.plugins.forEach((plugin) => {
|
data?.plugins.forEach((plugin) => {
|
||||||
res[plugin.plugin_id] = {
|
res[plugin.plugin_id] = {
|
||||||
|
installedId: plugin.id,
|
||||||
installedVersion: plugin.declaration.version,
|
installedVersion: plugin.declaration.version,
|
||||||
uniqueIdentifier: plugin.plugin_unique_identifier,
|
uniqueIdentifier: plugin.plugin_unique_identifier,
|
||||||
}
|
}
|
||||||
|
@ -8,8 +8,9 @@ import Button from '@/app/components/base/button'
|
|||||||
import { Trans, useTranslation } from 'react-i18next'
|
import { Trans, useTranslation } from 'react-i18next'
|
||||||
import { RiLoader2Line } from '@remixicon/react'
|
import { RiLoader2Line } from '@remixicon/react'
|
||||||
import checkTaskStatus from '../../base/check-task-status'
|
import checkTaskStatus from '../../base/check-task-status'
|
||||||
import { useInstallPackageFromLocal, usePluginTaskList, useUpdatePackageFromMarketPlace } from '@/service/use-plugins'
|
import { useInstallPackageFromLocal, usePluginTaskList } from '@/service/use-plugins'
|
||||||
import useCheckInstalled from '@/app/components/plugins/install-plugin/hooks/use-check-installed'
|
import useCheckInstalled from '@/app/components/plugins/install-plugin/hooks/use-check-installed'
|
||||||
|
import { uninstallPlugin } from '@/service/plugins'
|
||||||
import Version from '../../base/version'
|
import Version from '../../base/version'
|
||||||
|
|
||||||
const i18nPrefix = 'plugin.installModal'
|
const i18nPrefix = 'plugin.installModal'
|
||||||
@ -50,7 +51,6 @@ const Installed: FC<Props> = ({
|
|||||||
|
|
||||||
const [isInstalling, setIsInstalling] = React.useState(false)
|
const [isInstalling, setIsInstalling] = React.useState(false)
|
||||||
const { mutateAsync: installPackageFromLocal } = useInstallPackageFromLocal()
|
const { mutateAsync: installPackageFromLocal } = useInstallPackageFromLocal()
|
||||||
const { mutateAsync: updatePackageFromMarketPlace } = useUpdatePackageFromMarketPlace()
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
check,
|
check,
|
||||||
@ -69,27 +69,15 @@ const Installed: FC<Props> = ({
|
|||||||
onStartToInstall?.()
|
onStartToInstall?.()
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let taskId
|
if (hasInstalled)
|
||||||
let isInstalled
|
await uninstallPlugin(installedInfoPayload.installedId)
|
||||||
if (hasInstalled) {
|
|
||||||
const {
|
const {
|
||||||
all_installed,
|
all_installed,
|
||||||
task_id,
|
task_id,
|
||||||
} = await updatePackageFromMarketPlace({
|
} = await installPackageFromLocal(uniqueIdentifier)
|
||||||
original_plugin_unique_identifier: installedInfoPayload.uniqueIdentifier,
|
const taskId = task_id
|
||||||
new_plugin_unique_identifier: uniqueIdentifier,
|
const isInstalled = all_installed
|
||||||
})
|
|
||||||
taskId = task_id
|
|
||||||
isInstalled = all_installed
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const {
|
|
||||||
all_installed,
|
|
||||||
task_id,
|
|
||||||
} = await installPackageFromLocal(uniqueIdentifier)
|
|
||||||
taskId = task_id
|
|
||||||
isInstalled = all_installed
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isInstalled) {
|
if (isInstalled) {
|
||||||
onInstalled()
|
onInstalled()
|
||||||
|
@ -373,6 +373,7 @@ export type VersionListResponse = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export type VersionInfo = {
|
export type VersionInfo = {
|
||||||
|
installedId: string, // use to uninstall
|
||||||
installedVersion: string,
|
installedVersion: string,
|
||||||
uniqueIdentifier: string
|
uniqueIdentifier: string
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,7 @@ import {
|
|||||||
} from '@tanstack/react-query'
|
} from '@tanstack/react-query'
|
||||||
import { useInvalidateAllBuiltInTools } from './use-tools'
|
import { useInvalidateAllBuiltInTools } from './use-tools'
|
||||||
import usePermission from '@/app/components/plugins/plugin-page/use-permission'
|
import usePermission from '@/app/components/plugins/plugin-page/use-permission'
|
||||||
|
import { uninstallPlugin } from '@/service/plugins'
|
||||||
|
|
||||||
const NAME_SPACE = 'plugins'
|
const NAME_SPACE = 'plugins'
|
||||||
|
|
||||||
@ -237,10 +238,20 @@ export const useInstallOrUpdate = ({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isInstalled) {
|
if (isInstalled) {
|
||||||
await updatePackageFromMarketPlace({
|
if (item.type === 'package') {
|
||||||
original_plugin_unique_identifier: installedPayload?.uniqueIdentifier,
|
await uninstallPlugin(installedPayload.installedId)
|
||||||
new_plugin_unique_identifier: uniqueIdentifier,
|
await post<InstallPackageResponse>('/workspaces/current/plugin/install/pkg', {
|
||||||
})
|
body: {
|
||||||
|
plugin_unique_identifiers: [uniqueIdentifier],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
await updatePackageFromMarketPlace({
|
||||||
|
original_plugin_unique_identifier: installedPayload?.uniqueIdentifier,
|
||||||
|
new_plugin_unique_identifier: uniqueIdentifier,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ({ success: true })
|
return ({ success: true })
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user