diff --git a/src/extensions/extension-discovery/extension-discovery.test.ts b/src/extensions/extension-discovery/extension-discovery.test.ts index 9a549e4e71..f3630addaf 100644 --- a/src/extensions/extension-discovery/extension-discovery.test.ts +++ b/src/extensions/extension-discovery/extension-discovery.test.ts @@ -10,7 +10,7 @@ import type { ExtensionDiscovery } from "../extension-discovery/extension-discov import installExtensionInjectable from "../extension-installer/install-extension/install-extension.injectable"; import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable"; import { delay } from "../../renderer/utils"; -import { observable, when } from "mobx"; +import { observable, runInAction, when } from "mobx"; import readJsonFileInjectable from "../../common/fs/read-json-file.injectable"; import pathExistsInjectable from "../../common/fs/path-exists.injectable"; import watchInjectable from "../../common/fs/watch/watch.injectable"; @@ -101,7 +101,7 @@ describe("ExtensionDiscovery", () => { }, manifestPath: "/some-directory-for-user-data/node_modules/my-extension/package.json", }); - letTestFinish.set(true); + runInAction(() => letTestFinish.set(true)); }); addHandler(joinPaths(extensionDiscovery.localFolderPath, "/my-extension/package.json")); diff --git a/src/extensions/extension-discovery/extension-discovery.ts b/src/extensions/extension-discovery/extension-discovery.ts index 63a4f78f09..c7781d78a6 100644 --- a/src/extensions/extension-discovery/extension-discovery.ts +++ b/src/extensions/extension-discovery/extension-discovery.ts @@ -31,6 +31,7 @@ import type { GetBasenameOfPath } from "../../common/path/get-basename.injectabl import type { GetDirnameOfPath } from "../../common/path/get-dirname.injectable"; import type { GetRelativePath } from "../../common/path/get-relative-path.injectable"; import type { RemovePath } from "../../common/fs/remove-path.injectable"; +import type TypedEventEmitter from "typed-emitter"; interface Dependencies { readonly extensionLoader: ExtensionLoader; @@ -94,6 +95,11 @@ interface LoadFromFolderOptions { isBundled?: boolean; } +interface ExtensionDiscoveryEvents { + add: (ext: InstalledExtension) => void; + remove: (extId: LensExtensionId) => void; +} + /** * Discovers installed bundled and local extensions from the filesystem. * Also watches for added and removed local extensions by watching the directory. @@ -117,7 +123,7 @@ export class ExtensionDiscovery { return when(() => this.isLoaded); } - public events = new EventEmitter(); + public readonly events: TypedEventEmitter = new EventEmitter(); constructor(protected readonly dependencies: Dependencies) { makeObservable(this);