diff --git a/src/main/protocol-handler/lens-protocol-router-main/lens-protocol-router-main.ts b/src/main/protocol-handler/lens-protocol-router-main/lens-protocol-router-main.ts index c6bd1b92df..d436a297c1 100644 --- a/src/main/protocol-handler/lens-protocol-router-main/lens-protocol-router-main.ts +++ b/src/main/protocol-handler/lens-protocol-router-main/lens-protocol-router-main.ts @@ -46,6 +46,9 @@ interface Dependencies { export class LensProtocolRouterMain extends proto.LensProtocolRouter { private missingExtensionHandlers: FallbackHandler[] = []; + /** + * @deprecated This is used to solve out-of-place temporal dependency. Remove, and solve otherwise. + */ @observable rendererLoaded = false; protected disposers = disposer(); diff --git a/src/main/start-main-application/after-application-is-ready/implementations/setup-listener-for-root-frame-rendering.injectable.ts b/src/main/start-main-application/after-application-is-ready/implementations/setup-listener-for-root-frame-rendering.injectable.ts index 9229d4ad51..fec3818ec5 100644 --- a/src/main/start-main-application/after-application-is-ready/implementations/setup-listener-for-root-frame-rendering.injectable.ts +++ b/src/main/start-main-application/after-application-is-ready/implementations/setup-listener-for-root-frame-rendering.injectable.ts @@ -5,7 +5,6 @@ import { getInjectable } from "@ogre-tools/injectable"; import { ipcMainOn } from "../../../../common/ipc"; import { IpcRendererNavigationEvents } from "../../../../renderer/navigation/events"; -import lensProtocolRouterMainInjectable from "../../../protocol-handler/lens-protocol-router-main/lens-protocol-router-main.injectable"; import { onRootFrameRenderInjectionToken } from "../../on-root-frame-render/on-root-frame-render-injection-token"; import { afterApplicationIsReadyInjectionToken } from "../after-application-is-ready-injection-token"; import { runManyFor } from "../../run-many-for"; @@ -14,7 +13,6 @@ const setupListenerForRootFrameRenderingInjectable = getInjectable({ id: "setup-listener-for-root-frame-rendering", instantiate: (di) => { - const lensProtocolRouterMain = di.inject(lensProtocolRouterMainInjectable); const runMany = runManyFor(di); const runOnRootFrameRender = runMany( @@ -24,10 +22,7 @@ const setupListenerForRootFrameRenderingInjectable = getInjectable({ return { run: () => { ipcMainOn(IpcRendererNavigationEvents.LOADED, async () => { - await runOnRootFrameRender(); - - lensProtocolRouterMain.rendererLoaded = true; }); }, }; diff --git a/src/main/start-main-application/on-application-soft-quit/implementations/make-protocol-router-not-have-loaded-renderer.injectable.ts b/src/main/start-main-application/on-application-soft-quit/implementations/flag-renderer-as-not-loaded.ts similarity index 63% rename from src/main/start-main-application/on-application-soft-quit/implementations/make-protocol-router-not-have-loaded-renderer.injectable.ts rename to src/main/start-main-application/on-application-soft-quit/implementations/flag-renderer-as-not-loaded.ts index ca0034ef39..1b7564c0e8 100644 --- a/src/main/start-main-application/on-application-soft-quit/implementations/make-protocol-router-not-have-loaded-renderer.injectable.ts +++ b/src/main/start-main-application/on-application-soft-quit/implementations/flag-renderer-as-not-loaded.ts @@ -3,20 +3,22 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; +import { runInAction } from "mobx"; import lensProtocolRouterMainInjectable from "../../../protocol-handler/lens-protocol-router-main/lens-protocol-router-main.injectable"; import { onApplicationSoftQuitInjectionToken } from "../on-application-soft-quit-injection-token"; -const makeProtocolRouterNotHaveLoadedRendererInjectable = getInjectable({ - id: "make-protocol-router-not-have-loaded-renderer", +const flagRendererAsNotLoaded = getInjectable({ + id: "stop-deep-linking", instantiate: (di) => { const lensProtocolRouterMain = di.inject(lensProtocolRouterMainInjectable); return { run: () => { - // This is set to false here so that LPRM can wait to send future lens:// - // requests until after it loads again - lensProtocolRouterMain.rendererLoaded = false; + runInAction(() => { + // Todo: remove this kludge which enables out-of-place temporal dependency. + lensProtocolRouterMain.rendererLoaded = false; + }); }, }; }, @@ -24,4 +26,4 @@ const makeProtocolRouterNotHaveLoadedRendererInjectable = getInjectable({ injectionToken: onApplicationSoftQuitInjectionToken, }); -export default makeProtocolRouterNotHaveLoadedRendererInjectable; +export default flagRendererAsNotLoaded; diff --git a/src/main/start-main-application/on-root-frame-render/implementations/flag-renderer-as-loaded.ts b/src/main/start-main-application/on-root-frame-render/implementations/flag-renderer-as-loaded.ts new file mode 100644 index 0000000000..5c757d6f44 --- /dev/null +++ b/src/main/start-main-application/on-root-frame-render/implementations/flag-renderer-as-loaded.ts @@ -0,0 +1,29 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { onRootFrameRenderInjectionToken } from "../on-root-frame-render-injection-token"; +import lensProtocolRouterMainInjectable from "../../../protocol-handler/lens-protocol-router-main/lens-protocol-router-main.injectable"; +import { runInAction } from "mobx"; + +const flagRendererAsLoaded = getInjectable({ + id: "flag-renderer-as-loaded", + + instantiate: (di) => { + const lensProtocolRouterMain = di.inject(lensProtocolRouterMainInjectable); + + return { + run: () => { + runInAction(() => { + // Todo: remove this kludge which enables out-of-place temporal dependency. + lensProtocolRouterMain.rendererLoaded = true; + }); + }, + }; + }, + + injectionToken: onRootFrameRenderInjectionToken, +}); + +export default flagRendererAsLoaded;