From a7121d2cbe931a1bea7422d0163a8eb45251a218 Mon Sep 17 00:00:00 2001 From: Jim Ehrismann Date: Mon, 12 Sep 2022 20:16:36 -0400 Subject: [PATCH] modified welcome page injectables to allow for the page component to come from an extension Signed-off-by: Jim Ehrismann --- package.json | 3 +- .../default-welcome-route.injectable.ts | 26 +++++++++++++++++ .../welcome/welcome-route.injectable.ts | 15 ++++++---- .../welcome/setting-welcome-page.test.ts | 28 +++++++++++++++++++ ...ult-welcome-route-component.injectable.ts} | 10 +++---- 5 files changed, 71 insertions(+), 11 deletions(-) create mode 100644 src/common/front-end-routing/routes/welcome/default-welcome-route.injectable.ts create mode 100644 src/features/welcome/setting-welcome-page.test.ts rename src/renderer/components/+welcome/{welcome-route-component.injectable.ts => default-welcome-route-component.injectable.ts} (58%) diff --git a/package.json b/package.json index 34df5c68e5..e9c99c87a2 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,8 @@ "bundledKubectlVersion": "1.23.3", "bundledHelmVersion": "3.7.2", "sentryDsn": "", - "contentSecurityPolicy": "script-src 'unsafe-eval' 'self'; frame-src http://*.localhost:*/; img-src * data:" + "contentSecurityPolicy": "script-src 'unsafe-eval' 'self'; frame-src http://*.localhost:*/; img-src * data:", + "welcomeRoute": "/welcome" }, "engines": { "node": ">=16 <17" diff --git a/src/common/front-end-routing/routes/welcome/default-welcome-route.injectable.ts b/src/common/front-end-routing/routes/welcome/default-welcome-route.injectable.ts new file mode 100644 index 0000000000..d0018dc539 --- /dev/null +++ b/src/common/front-end-routing/routes/welcome/default-welcome-route.injectable.ts @@ -0,0 +1,26 @@ +/** + * 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 { computed } from "mobx"; +import packageJsonInjectable from "../../../vars/package-json.injectable"; +import { frontEndRouteInjectionToken } from "../../front-end-route-injection-token"; + +const defaultWelcomeRouteInjectable = getInjectable({ + id: "default-welcome-route", + + instantiate: (di) => { + const packageJson = di.inject(packageJsonInjectable); + + return { + path: "/welcome", + clusterFrame: false, + isEnabled: computed(() => packageJson.config.welcomeRoute === "/welcome"), + }; + }, + + injectionToken: frontEndRouteInjectionToken, +}); + +export default defaultWelcomeRouteInjectable; diff --git a/src/common/front-end-routing/routes/welcome/welcome-route.injectable.ts b/src/common/front-end-routing/routes/welcome/welcome-route.injectable.ts index 75d722ab46..a5b5c10ba9 100644 --- a/src/common/front-end-routing/routes/welcome/welcome-route.injectable.ts +++ b/src/common/front-end-routing/routes/welcome/welcome-route.injectable.ts @@ -4,16 +4,21 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { computed } from "mobx"; +import packageJsonInjectable from "../../../vars/package-json.injectable"; import { frontEndRouteInjectionToken } from "../../front-end-route-injection-token"; const welcomeRouteInjectable = getInjectable({ id: "welcome-route", - instantiate: () => ({ - path: "/welcome", - clusterFrame: false, - isEnabled: computed(() => true), - }), + instantiate: (di) => { + const packageJson = di.inject(packageJsonInjectable); + + return { + path: packageJson.config.welcomeRoute, + clusterFrame: false, + isEnabled: computed(() => true), + }; + }, injectionToken: frontEndRouteInjectionToken, }); diff --git a/src/features/welcome/setting-welcome-page.test.ts b/src/features/welcome/setting-welcome-page.test.ts new file mode 100644 index 0000000000..0373f08bff --- /dev/null +++ b/src/features/welcome/setting-welcome-page.test.ts @@ -0,0 +1,28 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +export {}; + +describe("setting the welcome page", () => { + describe("given no extension sets the welcome page", () => { + it("sets the default welcome page", () => { + + }); + + it("navigates to the default welcome page", () => { + + }); + }); + + describe("given an extension sets a custom welcome page", () => { + it("sets the custom welcome page", () => { + + }); + + it("navigates to the custom welcome page", () => { + + }); + }); +}); diff --git a/src/renderer/components/+welcome/welcome-route-component.injectable.ts b/src/renderer/components/+welcome/default-welcome-route-component.injectable.ts similarity index 58% rename from src/renderer/components/+welcome/welcome-route-component.injectable.ts rename to src/renderer/components/+welcome/default-welcome-route-component.injectable.ts index 65fa0dfb00..5472c49787 100644 --- a/src/renderer/components/+welcome/welcome-route-component.injectable.ts +++ b/src/renderer/components/+welcome/default-welcome-route-component.injectable.ts @@ -4,18 +4,18 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { Welcome } from "./welcome"; -import welcomeRouteInjectable from "../../../common/front-end-routing/routes/welcome/welcome-route.injectable"; +import defaultWelcomeRouteInjectable from "../../../common/front-end-routing/routes/welcome/default-welcome-route.injectable"; import { routeSpecificComponentInjectionToken } from "../../routes/route-specific-component-injection-token"; -const welcomeRouteComponentInjectable = getInjectable({ - id: "welcome-route-component", +const defaultWelcomeRouteComponentInjectable = getInjectable({ + id: "default-welcome-route-component", instantiate: (di) => ({ - route: di.inject(welcomeRouteInjectable), + route: di.inject(defaultWelcomeRouteInjectable), Component: Welcome, }), injectionToken: routeSpecificComponentInjectionToken, }); -export default welcomeRouteComponentInjectable; +export default defaultWelcomeRouteComponentInjectable;