From b935dbca785b45ff68f2467089fcdcbe46f1cd72 Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Tue, 22 Mar 2022 15:01:19 +0200 Subject: [PATCH] Introduce a legacy-helper to make gradual refactoring of inheritors of Singleton easier Signed-off-by: Iku-turso --- ...obal-singleton-object-for-extension-api.ts | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/extensions/as-legacy-globals-for-extension-api/as-legacy-global-singleton-object-for-extension-api.ts diff --git a/src/extensions/as-legacy-globals-for-extension-api/as-legacy-global-singleton-object-for-extension-api.ts b/src/extensions/as-legacy-globals-for-extension-api/as-legacy-global-singleton-object-for-extension-api.ts new file mode 100644 index 0000000000..b9ed0f826e --- /dev/null +++ b/src/extensions/as-legacy-globals-for-extension-api/as-legacy-global-singleton-object-for-extension-api.ts @@ -0,0 +1,36 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import type { Injectable } from "@ogre-tools/injectable"; +import { asLegacyGlobalForExtensionApi } from "./as-legacy-global-object-for-extension-api"; +import { getLegacyGlobalDiForExtensionApi } from "./legacy-global-di-for-extension-api"; +import loggerInjectable from "../../common/logger.injectable"; + +export const asLegacyGlobalSingletonForExtensionApi = < + Instance, + InstantiationParameter = void, +>( + injectable: Injectable, + instantiationParameter?: InstantiationParameter, + ) => { + const instance = asLegacyGlobalForExtensionApi( + injectable, + instantiationParameter, + ); + + return { + createInstance: () => instance, + + getInstance: () => instance, + + resetInstance: () => { + const di = getLegacyGlobalDiForExtensionApi(); + const logger = di.inject(loggerInjectable); + + logger.warn( + `resetInstance() for a legacy global singleton of "${injectable.id}" does nothing.`, + ); + }, + }; +};