Extension {displayName} successfully uninstalled!
); - this.extensionState.delete(id); + this.extensionStateStore.extensionState.delete(id); }); this.addedInstalling.forEach(({ id, displayName }) => { @@ -103,7 +105,7 @@ export class Extensions extends React.Component { Notifications.ok(Extension {displayName} successfully installed!
); - this.extensionState.delete(id); + this.extensionStateStore.extensionState.delete(id); this.installPath = ""; // Enable installed extensions by default. @@ -116,14 +118,11 @@ export class Extensions extends React.Component { @computed get extensions() { const searchText = this.search.toLowerCase(); - return Array.from(extensionLoader.userExtensions.values()).filter(ext => { - const { name, description } = ext.manifest; - - return [ - name.toLowerCase().includes(searchText), - description?.toLowerCase().includes(searchText), - ].some(value => value); - }); + return Array.from(extensionLoader.userExtensions.values()) + .filter(({ manifest: { name, description }}) => ( + name.toLowerCase().includes(searchText) + || description?.toLowerCase().includes(searchText) + )); } get extensionsPath() { @@ -143,10 +142,10 @@ export class Extensions extends React.Component { const { canceled, filePaths } = await dialog.showOpenDialog(BrowserWindow.getFocusedWindow(), { defaultPath: app.getPath("downloads"), properties: ["openFile", "multiSelections"], - message: _i18n._(t`Select extensions to install (formats: ${this.supportedFormats.join(", ")}), `), + message: _i18n._(t`Select extensions to install (formats: ${Extensions.supportedFormats.join(", ")}), `), buttonLabel: _i18n._(t`Use configuration`), filters: [ - { name: "tarball", extensions: this.supportedFormats } + { name: "tarball", extensions: Extensions.supportedFormats } ] }); @@ -346,7 +345,9 @@ export class Extensions extends React.Component { const displayName = extensionDisplayName(name, version); const extensionId = path.join(extensionDiscovery.nodeModulesPath, name, "package.json"); - this.extensionState.set(extensionId, { + logger.info(`Unpacking extension ${displayName}`, { fileName, tempFile }); + + this.extensionStateStore.extensionState.set(extensionId, { state: "installing", displayName }); @@ -381,8 +382,8 @@ export class Extensions extends React.Component { ); // Remove install state on install failure - if (this.extensionState.get(extensionId)?.state === "installing") { - this.extensionState.delete(extensionId); + if (this.extensionStateStore.extensionState.get(extensionId)?.state === "installing") { + this.extensionStateStore.extensionState.delete(extensionId); } } finally { // clean up @@ -406,7 +407,7 @@ export class Extensions extends React.Component { const displayName = extensionDisplayName(extension.manifest.name, extension.manifest.version); try { - this.extensionState.set(extension.id, { + this.extensionStateStore.extensionState.set(extension.id, { state: "uninstalling", displayName }); @@ -418,8 +419,8 @@ export class Extensions extends React.Component { ); // Remove uninstall state on uninstall failure - if (this.extensionState.get(extension.id)?.state === "uninstalling") { - this.extensionState.delete(extension.id); + if (this.extensionStateStore.extensionState.get(extension.id)?.state === "uninstalling") { + this.extensionStateStore.extensionState.delete(extension.id); } } } @@ -445,7 +446,7 @@ export class Extensions extends React.Component { return extensions.map(extension => { const { id, isEnabled, manifest } = extension; const { name, description } = manifest; - const isUninstalling = this.extensionState.get(id)?.state === "uninstalling"; + const isUninstalling = this.extensionStateStore.extensionState.get(id)?.state === "uninstalling"; return (