From 6c12b56bf0c7b8ee0651fa962df4fad1c868325e Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 2 Feb 2022 08:46:11 -0500 Subject: [PATCH] Fix not being able to install extensions sometimes - Specifically, when there are remnants of a previous install of the extension which caused the code to be confused and enter the wrong branch Signed-off-by: Sebastian Malton --- .../attempt-install/attempt-install.tsx | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/renderer/components/+extensions/attempt-install/attempt-install.tsx b/src/renderer/components/+extensions/attempt-install/attempt-install.tsx index eccd75da3e..64fe8d43ed 100644 --- a/src/renderer/components/+extensions/attempt-install/attempt-install.tsx +++ b/src/renderer/components/+extensions/attempt-install/attempt-install.tsx @@ -12,7 +12,7 @@ import { Button } from "../../button"; import type { ExtensionLoader } from "../../../../extensions/extension-loader"; import type { LensExtensionId } from "../../../../extensions/lens-extension"; import React from "react"; -import fse from "fs-extra"; +import { remove as removeDir } from "fs-extra"; import { shell } from "electron"; import type { InstallRequestValidated } from "./create-temp-files-and-validate/create-temp-files-and-validate"; import type { InstallRequest } from "./install-request"; @@ -80,17 +80,12 @@ export const attemptInstall = } const extensionFolder = getExtensionDestFolder(name); - const folderExists = await fse.pathExists(extensionFolder); + const installedExtensionsion = extensionLoader.getExtension(validatedRequest.id); - if (!folderExists) { - // install extension if not yet exists - await unpackExtension(validatedRequest, dispose); - } else { - const { - manifest: { version: oldVersion }, - } = extensionLoader.getExtension(validatedRequest.id); + if (installedExtensionsion) { + const { version: oldVersion } = installedExtensionsion.manifest; - // otherwise confirmation required (re-install / update) + // confirm to uninstall old version before installing new version const removeNotification = Notifications.info(
@@ -130,5 +125,11 @@ export const attemptInstall = onClose: dispose, }, ); + } else { + // clean up old data if still around + await removeDir(extensionFolder); + + // install extension if not yet exists + await unpackExtension(validatedRequest, dispose); } };