From c132ceaf2b4694a1bc52757db84a525e95c7bde9 Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Tue, 16 Aug 2022 11:06:06 +0300 Subject: [PATCH] Extract top menu item for navigating to back as OCP Co-authored-by: Janne Savolainen Signed-off-by: Iku-turso --- .../go-back.global-override-for-injectable.ts | 8 ++++ .../go-back}/go-back.injectable.ts | 4 +- ...igation-to-back-top-bar-item.injectable.ts | 23 +++++++++++ .../navigation-to-back/navigation-to-back.tsx | 39 +++++++++++++++++++ .../prev-enabled.injectable.ts | 2 +- .../layout/top-bar/top-bar.test.tsx | 2 +- .../components/layout/top-bar/top-bar.tsx | 14 ------- src/renderer/getDiForUnitTesting.tsx | 2 - 8 files changed, 74 insertions(+), 20 deletions(-) create mode 100644 src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/go-back/go-back.global-override-for-injectable.ts rename src/renderer/components/layout/top-bar/{ => top-bar-items/navigation-to-back/go-back}/go-back.injectable.ts (75%) create mode 100644 src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/navigation-to-back-top-bar-item.injectable.ts create mode 100644 src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/navigation-to-back.tsx rename src/renderer/components/layout/top-bar/{ => top-bar-items/navigation-to-back}/prev-enabled.injectable.ts (89%) diff --git a/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/go-back/go-back.global-override-for-injectable.ts b/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/go-back/go-back.global-override-for-injectable.ts new file mode 100644 index 0000000000..f0d421a883 --- /dev/null +++ b/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/go-back/go-back.global-override-for-injectable.ts @@ -0,0 +1,8 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import goBackInjectable from "./go-back.injectable"; +import { getGlobalOverrideForFunction } from "../../../../../../../common/test-utils/get-global-override-for-function"; + +export default getGlobalOverrideForFunction(goBackInjectable); diff --git a/src/renderer/components/layout/top-bar/go-back.injectable.ts b/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/go-back/go-back.injectable.ts similarity index 75% rename from src/renderer/components/layout/top-bar/go-back.injectable.ts rename to src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/go-back/go-back.injectable.ts index 88a804bd9f..e0f1ed3666 100644 --- a/src/renderer/components/layout/top-bar/go-back.injectable.ts +++ b/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/go-back/go-back.injectable.ts @@ -3,8 +3,8 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import { WindowAction } from "../../../../common/ipc/window"; -import { requestWindowAction } from "../../../ipc"; +import { WindowAction } from "../../../../../../../common/ipc/window"; +import { requestWindowAction } from "../../../../../../ipc"; const goBackInjectable = getInjectable({ id: "go-back", diff --git a/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/navigation-to-back-top-bar-item.injectable.ts b/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/navigation-to-back-top-bar-item.injectable.ts new file mode 100644 index 0000000000..ff4f941000 --- /dev/null +++ b/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/navigation-to-back-top-bar-item.injectable.ts @@ -0,0 +1,23 @@ +/** + * 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 topBarItemInjectionToken from "../top-bar-item-injection-token"; +import { NavigationToBack } from "./navigation-to-back"; + +const navigationToBackTopBarItemInjectable = getInjectable({ + id: "navigation-to-back-top-bar-item", + + instantiate: () => ({ + id: "navigation-to-back", + isShown: computed(() => true), + orderNumber: 30, + Component: NavigationToBack, + }), + + injectionToken: topBarItemInjectionToken, +}); + +export default navigationToBackTopBarItemInjectable; diff --git a/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/navigation-to-back.tsx b/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/navigation-to-back.tsx new file mode 100644 index 0000000000..ebb4f4b620 --- /dev/null +++ b/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/navigation-to-back.tsx @@ -0,0 +1,39 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import React from "react"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import type { IComputedValue } from "mobx"; +import { Icon } from "../../../../icon"; +import topBarPrevEnabledInjectable from "./prev-enabled.injectable"; +import goBackInjectable from "./go-back/go-back.injectable"; +import { observer } from "mobx-react"; + +interface Dependencies { + prevEnabled: IComputedValue; + goBack: () => void; +} + +const NonInjectedNavigationToBack = observer(({ + prevEnabled, + goBack, +}: Dependencies) => ( + +)); + +export const NavigationToBack = withInjectables( + NonInjectedNavigationToBack, + + { + getProps: (di) => ({ + prevEnabled: di.inject(topBarPrevEnabledInjectable), + goBack: di.inject(goBackInjectable), + }), + }, +); diff --git a/src/renderer/components/layout/top-bar/prev-enabled.injectable.ts b/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/prev-enabled.injectable.ts similarity index 89% rename from src/renderer/components/layout/top-bar/prev-enabled.injectable.ts rename to src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/prev-enabled.injectable.ts index fcdf318e34..56012ffd13 100644 --- a/src/renderer/components/layout/top-bar/prev-enabled.injectable.ts +++ b/src/renderer/components/layout/top-bar/top-bar-items/navigation-to-back/prev-enabled.injectable.ts @@ -4,7 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { computed } from "mobx"; -import topBarStateInjectable from "./state.injectable"; +import topBarStateInjectable from "../../state.injectable"; const topBarPrevEnabledInjectable = getInjectable({ id: "top-bar-prev-enabled", diff --git a/src/renderer/components/layout/top-bar/top-bar.test.tsx b/src/renderer/components/layout/top-bar/top-bar.test.tsx index 8b4f1fb03a..586a135880 100644 --- a/src/renderer/components/layout/top-bar/top-bar.test.tsx +++ b/src/renderer/components/layout/top-bar/top-bar.test.tsx @@ -15,7 +15,7 @@ import topBarItemsInjectable from "./top-bar-items/top-bar-items.injectable"; import { computed, observable } from "mobx"; import rendererExtensionsInjectable from "../../../../extensions/renderer-extensions.injectable"; import closeWindowInjectable from "./close-window.injectable"; -import goBackInjectable from "./go-back.injectable"; +import goBackInjectable from "./top-bar-items/navigation-to-back/go-back/go-back.injectable"; import goForwardInjectable from "./go-forward.injectable"; import maximizeWindowInjectable from "./maximize-window.injectable"; import openAppContextMenuInjectable from "./top-bar-items/context-menu/open-app-context-menu/open-app-context-menu.injectable"; diff --git a/src/renderer/components/layout/top-bar/top-bar.tsx b/src/renderer/components/layout/top-bar/top-bar.tsx index 11c9f4ac61..ceafc4361b 100644 --- a/src/renderer/components/layout/top-bar/top-bar.tsx +++ b/src/renderer/components/layout/top-bar/top-bar.tsx @@ -15,9 +15,7 @@ import type { TopBarRegistration } from "./top-bar-registration"; import isLinuxInjectable from "../../../../common/vars/is-linux.injectable"; import isWindowsInjectable from "../../../../common/vars/is-windows.injectable"; import { UpdateButton } from "../../../../features/application-update/child-features/application-update-using-top-bar/renderer/update-button"; -import topBarPrevEnabledInjectable from "./prev-enabled.injectable"; import topBarNextEnabledInjectable from "./next-enabled.injectable"; -import goBackInjectable from "./go-back.injectable"; import goForwardInjectable from "./go-forward.injectable"; import closeWindowInjectable from "./close-window.injectable"; import maximizeWindowInjectable from "./maximize-window.injectable"; @@ -33,9 +31,7 @@ interface Dependencies { items2: IComputedValue; isWindows: boolean; isLinux: boolean; - prevEnabled: IComputedValue; nextEnabled: IComputedValue; - goBack: () => void; goForward: () => void; minimizeWindow: () => void; toggleMaximizeWindow: () => void; @@ -48,9 +44,7 @@ const NonInjectedTopBar = observer(({ items2, isWindows, isLinux, - prevEnabled, nextEnabled, - goBack, goForward, closeWindow, minimizeWindow, @@ -79,12 +73,6 @@ const NonInjectedTopBar = observer(({ return ; })} - (NonInjectedTopBar, { items2: di.inject(topBarItems2Injectable), isLinux: di.inject(isLinuxInjectable), isWindows: di.inject(isWindowsInjectable), - prevEnabled: di.inject(topBarPrevEnabledInjectable), nextEnabled: di.inject(topBarNextEnabledInjectable), - goBack: di.inject(goBackInjectable), goForward: di.inject(goForwardInjectable), closeWindow: di.inject(closeWindowInjectable), minimizeWindow: di.inject(maximizeWindowInjectable), diff --git a/src/renderer/getDiForUnitTesting.tsx b/src/renderer/getDiForUnitTesting.tsx index ca66a18914..7881f84def 100644 --- a/src/renderer/getDiForUnitTesting.tsx +++ b/src/renderer/getDiForUnitTesting.tsx @@ -38,7 +38,6 @@ import platformInjectable from "../common/vars/platform.injectable"; import startTopbarStateSyncInjectable from "./components/layout/top-bar/start-state-sync.injectable"; import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx"; import watchHistoryStateInjectable from "./remote-helpers/watch-history-state.injectable"; -import goBackInjectable from "./components/layout/top-bar/go-back.injectable"; import goForwardInjectable from "./components/layout/top-bar/go-forward.injectable"; import closeWindowInjectable from "./components/layout/top-bar/close-window.injectable"; import maximizeWindowInjectable from "./components/layout/top-bar/maximize-window.injectable"; @@ -148,7 +147,6 @@ export const getDiForUnitTesting = ( di.override(environmentVariablesInjectable, () => ({})); di.override(watchHistoryStateInjectable, () => () => () => {}); - di.override(goBackInjectable, () => () => {}); di.override(goForwardInjectable, () => () => {}); di.override(closeWindowInjectable, () => () => {}); di.override(maximizeWindowInjectable, () => () => {});