From 1c31e9cb307a9c6cd590756b28e744cbb3a0e367 Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Wed, 30 Mar 2022 15:57:15 +0300 Subject: [PATCH] Make registrators not async for not being needed anymore Signed-off-by: Janne Savolainen --- .../extension-loader/extension-loader.ts | 18 ++++++------------ .../extension-registrator-injection-token.ts | 2 +- ...n-preference-item-registrator.injectable.ts | 2 +- ...y-preference-item-registrator.injectable.ts | 2 +- ...ion-sidebar-item-registrator.injectable.tsx | 3 +-- .../extension-route-registrator.injectable.tsx | 2 +- 6 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/extensions/extension-loader/extension-loader.ts b/src/extensions/extension-loader/extension-loader.ts index 5bf520e23f..11bfa1520e 100644 --- a/src/extensions/extension-loader/extension-loader.ts +++ b/src/extensions/extension-loader/extension-loader.ts @@ -25,7 +25,7 @@ const logModule = "[EXTENSIONS-LOADER]"; interface Dependencies { updateExtensionsState: (extensionsState: Record) => void; createExtensionInstance: (ExtensionClass: LensExtensionConstructor, extension: InstalledExtension) => LensExtension; - extensionRegistrators: ((extension: LensExtension, extensionInstallationCount: number) => Promise)[]; + extensionRegistrators: ((extension: LensExtension, extensionInstallationCount: number) => void)[]; extensionInstallationCounter: Map; } @@ -297,8 +297,8 @@ export class ExtensionLoader { // 3. Call .enable for each extension // 4. Return ExtensionLoading[] - const extensionInstallationPromises = [...installedExtensions.entries()] - .map(async ([extId, extension]) => { + const extensions = [...installedExtensions.entries()] + .map(([extId, extension]) => { const alreadyInit = this.instances.has(extId) || this.nonInstancesByName.has(extension.manifest.name); if (extension.isCompatible && extension.isEnabled && !alreadyInit) { @@ -320,10 +320,8 @@ export class ExtensionLoader { this.dependencies.extensionInstallationCounter.set(instance.sanitizedExtensionId, installationCount); - await Promise.all( - this.dependencies.extensionRegistrators.map((register) => - register(instance, installationCount), - ), + this.dependencies.extensionRegistrators.forEach((register) => + register(instance, installationCount), ); this.instances.set(extId, instance); @@ -341,11 +339,7 @@ export class ExtensionLoader { } return null; - }); - - const extensionInstallations = (await Promise.all(extensionInstallationPromises)); - - const extensions = extensionInstallations.filter(extension => Boolean(extension)); + }).filter(extension => Boolean(extension)); // We first need to wait until each extension's `onActivate` is resolved or rejected, // as this might register new catalog categories. Afterwards we can safely .enable the extension. diff --git a/src/extensions/extension-loader/extension-registrator-injection-token.ts b/src/extensions/extension-loader/extension-registrator-injection-token.ts index 6d6d11531c..9fe35f5f39 100644 --- a/src/extensions/extension-loader/extension-registrator-injection-token.ts +++ b/src/extensions/extension-loader/extension-registrator-injection-token.ts @@ -6,7 +6,7 @@ import { getInjectionToken } from "@ogre-tools/injectable"; import type { LensExtension } from "../lens-extension"; export const extensionRegistratorInjectionToken = getInjectionToken< - (extension: LensExtension, extensionInstallationCount: number) => Promise + (extension: LensExtension, extensionInstallationCount: number) => void >({ id: "extension-registrator-token", }); diff --git a/src/renderer/components/+preferences/extension-preference-item-registrator.injectable.ts b/src/renderer/components/+preferences/extension-preference-item-registrator.injectable.ts index 189f11e45f..4aec83f120 100644 --- a/src/renderer/components/+preferences/extension-preference-item-registrator.injectable.ts +++ b/src/renderer/components/+preferences/extension-preference-item-registrator.injectable.ts @@ -14,7 +14,7 @@ const extensionPreferenceItemRegistratorInjectable = getInjectable({ instantiate: (di) => - async (extension: LensRendererExtension, extensionInstallationCount) => { + (extension: LensRendererExtension, extensionInstallationCount) => { const injectables = pipeline( extension.appPreferences, diff --git a/src/renderer/components/+preferences/extension-telemetry-preference-item-registrator.injectable.ts b/src/renderer/components/+preferences/extension-telemetry-preference-item-registrator.injectable.ts index f6a57cde9a..555cf829ef 100644 --- a/src/renderer/components/+preferences/extension-telemetry-preference-item-registrator.injectable.ts +++ b/src/renderer/components/+preferences/extension-telemetry-preference-item-registrator.injectable.ts @@ -14,7 +14,7 @@ const extensionTelemetryPreferenceItemRegistratorInjectable = getInjectable({ instantiate: (di) => - async (extension: LensRendererExtension, extensionInstallationCount) => { + (extension: LensRendererExtension, extensionInstallationCount) => { const injectables = pipeline( extension.appPreferences, diff --git a/src/renderer/components/layout/extension-sidebar-item-registrator.injectable.tsx b/src/renderer/components/layout/extension-sidebar-item-registrator.injectable.tsx index d96081dec1..bba3a9e810 100644 --- a/src/renderer/components/layout/extension-sidebar-item-registrator.injectable.tsx +++ b/src/renderer/components/layout/extension-sidebar-item-registrator.injectable.tsx @@ -19,7 +19,7 @@ const extensionSidebarItemRegistratorInjectable = getInjectable({ instantiate: (di: DiContainer) => - async ( + ( extension: LensRendererExtension, extensionInstallationCount: number, ) => { @@ -74,7 +74,6 @@ const extensionSidebarItemRegistratorInjectable = getInjectable({ }, }); - // TODO: Transactional register di.register(sidebarItemsForExtensionInjectable); }, diff --git a/src/renderer/routes/extension-route-registrator.injectable.tsx b/src/renderer/routes/extension-route-registrator.injectable.tsx index 4f69a0e6ef..172da10e26 100644 --- a/src/renderer/routes/extension-route-registrator.injectable.tsx +++ b/src/renderer/routes/extension-route-registrator.injectable.tsx @@ -25,7 +25,7 @@ const extensionRouteRegistratorInjectable = getInjectable({ instantiate: (di: DiContainer) => { const observableHistory = di.inject(observableHistoryInjectable); - return async ( + return ( extension: LensRendererExtension, extensionInstallationCount: number, ) => {