From 9a7741f7cd0253f7f8e618704f9133326368f156 Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Wed, 27 Apr 2022 11:12:56 +0300 Subject: [PATCH] Reimplement setup for catalog syncing using runnables instead of non-OCP in index.ts Co-authored-by: Mikko Aspiala Signed-off-by: Janne Savolainen --- .../catalog-sync-to-renderer.injectable.ts | 27 +++++++++++++++++++ ...-when-root-frame-is-rendered.injectable.ts | 25 +++++++++++++++++ ...c-when-application-is-closed.injectable.ts | 25 +++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 src/main/catalog-sync-to-renderer/catalog-sync-to-renderer.injectable.ts create mode 100644 src/main/catalog-sync-to-renderer/start-catalog-sync-when-root-frame-is-rendered.injectable.ts create mode 100644 src/main/catalog-sync-to-renderer/stop-catalog-sync-when-application-is-closed.injectable.ts diff --git a/src/main/catalog-sync-to-renderer/catalog-sync-to-renderer.injectable.ts b/src/main/catalog-sync-to-renderer/catalog-sync-to-renderer.injectable.ts new file mode 100644 index 0000000000..f939e7f675 --- /dev/null +++ b/src/main/catalog-sync-to-renderer/catalog-sync-to-renderer.injectable.ts @@ -0,0 +1,27 @@ +/** + * 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 catalogEntityRegistryInjectable from "../catalog/catalog-entity-registry.injectable"; +import { startCatalogSyncToRenderer } from "../catalog-pusher"; + +const catalogSyncToRendererInjectable = getInjectable({ + id: "catalog-sync-to-renderer", + + instantiate: (di) => { + const catalogEntityRegistry = di.inject(catalogEntityRegistryInjectable); + + let disposer: () => void; + + return { + start: () => { + disposer = startCatalogSyncToRenderer(catalogEntityRegistry); + }, + + stop: () => disposer?.(), + }; + }, +}); + +export default catalogSyncToRendererInjectable; diff --git a/src/main/catalog-sync-to-renderer/start-catalog-sync-when-root-frame-is-rendered.injectable.ts b/src/main/catalog-sync-to-renderer/start-catalog-sync-when-root-frame-is-rendered.injectable.ts new file mode 100644 index 0000000000..1936e17da6 --- /dev/null +++ b/src/main/catalog-sync-to-renderer/start-catalog-sync-when-root-frame-is-rendered.injectable.ts @@ -0,0 +1,25 @@ +/** + * 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 "../start-main-application/on-root-frame-render/on-root-frame-render-injection-token"; +import catalogSyncToRendererInjectable from "./catalog-sync-to-renderer.injectable"; + +const startCatalogSyncWhenRootFrameIsRenderedInjectable = getInjectable({ + id: "start-catalog-sync-when-root-frame-is-rendered", + + instantiate: (di) => { + const catalogSyncToRenderer = di.inject(catalogSyncToRendererInjectable); + + return { + run: () => { + catalogSyncToRenderer.start(); + }, + }; + }, + + injectionToken: onRootFrameRenderInjectionToken, +}); + +export default startCatalogSyncWhenRootFrameIsRenderedInjectable; diff --git a/src/main/catalog-sync-to-renderer/stop-catalog-sync-when-application-is-closed.injectable.ts b/src/main/catalog-sync-to-renderer/stop-catalog-sync-when-application-is-closed.injectable.ts new file mode 100644 index 0000000000..649fa6b6f4 --- /dev/null +++ b/src/main/catalog-sync-to-renderer/stop-catalog-sync-when-application-is-closed.injectable.ts @@ -0,0 +1,25 @@ +/** + * 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 catalogSyncToRendererInjectable from "./catalog-sync-to-renderer.injectable"; +import { onApplicationCloseInjectionToken } from "../start-main-application/on-application-close/on-application-close-injection-token"; + +const stopCatalogSyncWhenApplicationIsClosedInjectable = getInjectable({ + id: "stop-catalog-sync-when-application-is-closed", + + instantiate: (di) => { + const catalogSyncToRenderer = di.inject(catalogSyncToRendererInjectable); + + return { + run: () => { + catalogSyncToRenderer.stop(); + }, + }; + }, + + injectionToken: onApplicationCloseInjectionToken, +}); + +export default stopCatalogSyncWhenApplicationIsClosedInjectable;