Skip to content

Commit

Permalink
fix: install installed plugin problem (#13384)
Browse files Browse the repository at this point in the history
  • Loading branch information
iamjoel authored Feb 8, 2025
1 parent fec3bb4 commit 3e9c3d0
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const useCheckInstalled = (props: Props) => {
const res: Record<string, VersionInfo> = {}
data?.plugins.forEach((plugin) => {
res[plugin.plugin_id] = {
installedId: plugin.id,
installedVersion: plugin.declaration.version,
uniqueIdentifier: plugin.plugin_unique_identifier,
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ import Button from '@/app/components/base/button'
import { Trans, useTranslation } from 'react-i18next'
import { RiLoader2Line } from '@remixicon/react'
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 { uninstallPlugin } from '@/service/plugins'
import Version from '../../base/version'

const i18nPrefix = 'plugin.installModal'
Expand Down Expand Up @@ -50,7 +51,6 @@ const Installed: FC<Props> = ({

const [isInstalling, setIsInstalling] = React.useState(false)
const { mutateAsync: installPackageFromLocal } = useInstallPackageFromLocal()
const { mutateAsync: updatePackageFromMarketPlace } = useUpdatePackageFromMarketPlace()

const {
check,
Expand All @@ -69,27 +69,15 @@ const Installed: FC<Props> = ({
onStartToInstall?.()

try {
let taskId
let isInstalled
if (hasInstalled) {
const {
all_installed,
task_id,
} = await updatePackageFromMarketPlace({
original_plugin_unique_identifier: installedInfoPayload.uniqueIdentifier,
new_plugin_unique_identifier: uniqueIdentifier,
})
taskId = task_id
isInstalled = all_installed
}
else {
const {
all_installed,
task_id,
} = await installPackageFromLocal(uniqueIdentifier)
taskId = task_id
isInstalled = all_installed
}
if (hasInstalled)
await uninstallPlugin(installedInfoPayload.installedId)

const {
all_installed,
task_id,
} = await installPackageFromLocal(uniqueIdentifier)
const taskId = task_id
const isInstalled = all_installed

if (isInstalled) {
onInstalled()
Expand Down
1 change: 1 addition & 0 deletions web/app/components/plugins/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@ export type VersionListResponse = {
}

export type VersionInfo = {
installedId: string, // use to uninstall
installedVersion: string,
uniqueIdentifier: string
}
Expand Down
19 changes: 15 additions & 4 deletions web/service/use-plugins.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import {
} from '@tanstack/react-query'
import { useInvalidateAllBuiltInTools } from './use-tools'
import usePermission from '@/app/components/plugins/plugin-page/use-permission'
import { uninstallPlugin } from '@/service/plugins'

const NAME_SPACE = 'plugins'

Expand Down Expand Up @@ -237,10 +238,20 @@ export const useInstallOrUpdate = ({
}
}
if (isInstalled) {
await updatePackageFromMarketPlace({
original_plugin_unique_identifier: installedPayload?.uniqueIdentifier,
new_plugin_unique_identifier: uniqueIdentifier,
})
if (item.type === 'package') {
await uninstallPlugin(installedPayload.installedId)
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 })
}
Expand Down

0 comments on commit 3e9c3d0

Please sign in to comment.