From 0b39cc10448dc14fdbb78732eec0ca484e3f84cf Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Tue, 4 Oct 2022 10:16:31 +0300 Subject: [PATCH] Extract some operation system actions from application menu as injectables Co-authored-by: Janne Savolainen Signed-off-by: Iku-turso --- .../main/application-menu-items.injectable.ts | 8 ----- .../application-menu-item-injection-token.ts | 8 ++++- ...menu-operation-system-action-injectable.ts | 25 +++++++++++++ .../operation-system-actions.injectable.ts | 36 +++++++++++++++++++ .../separators/separators.injectable.ts | 12 +++++++ 5 files changed, 80 insertions(+), 9 deletions(-) create mode 100644 src/features/application-menu/main/menu-items/get-application-menu-operation-system-action-injectable.ts create mode 100644 src/features/application-menu/main/menu-items/primary-for-mac/operation-system-actions/operation-system-actions.injectable.ts diff --git a/src/features/application-menu/main/application-menu-items.injectable.ts b/src/features/application-menu/main/application-menu-items.injectable.ts index ea157e6150..2abc7b1d28 100644 --- a/src/features/application-menu/main/application-menu-items.injectable.ts +++ b/src/features/application-menu/main/application-menu-items.injectable.ts @@ -25,8 +25,6 @@ import processCheckingForUpdatesInjectable from "../../application-update/main/p import openLinkInBrowserInjectable from "../../../common/utils/open-link-in-browser.injectable"; import appNameInjectable from "../../../common/vars/app-name.injectable"; import productNameInjectable from "../../../common/vars/product-name.injectable"; - - import applicationMenuItemInjectionToken from "./menu-items/application-menu-item-injection-token"; function ignoreIf(check: boolean, menuItems: MenuItemOpts[]) { @@ -78,12 +76,6 @@ const applicationMenuItemsInjectable = getInjectable({ label: appName, id: "root", submenu: [ - { role: "services" }, - { type: "separator" }, - { role: "hide" }, - { role: "hideOthers" }, - { role: "unhide" }, - { type: "separator" }, { label: "Quit", accelerator: "Cmd+Q", diff --git a/src/features/application-menu/main/menu-items/application-menu-item-injection-token.ts b/src/features/application-menu/main/menu-items/application-menu-item-injection-token.ts index 116c0b5d58..811c252239 100644 --- a/src/features/application-menu/main/menu-items/application-menu-item-injection-token.ts +++ b/src/features/application-menu/main/menu-items/application-menu-item-injection-token.ts @@ -21,7 +21,13 @@ export interface Separator extends Shared { type: "separator"; } -const applicationMenuItemInjectionToken = getInjectionToken({ +export interface OperationSystemAction extends Shared { + role: "services" | "hide" | "hideOthers" | "unhide"; +} + +const applicationMenuItemInjectionToken = getInjectionToken< + ApplicationMenuItem | Separator | OperationSystemAction +>({ id: "application-menu-item-injection-token", }); diff --git a/src/features/application-menu/main/menu-items/get-application-menu-operation-system-action-injectable.ts b/src/features/application-menu/main/menu-items/get-application-menu-operation-system-action-injectable.ts new file mode 100644 index 0000000000..b6451a3af5 --- /dev/null +++ b/src/features/application-menu/main/menu-items/get-application-menu-operation-system-action-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 type { OperationSystemAction } from "./application-menu-item-injection-token"; +import applicationMenuItemInjectionToken from "./application-menu-item-injection-token"; + +const getApplicationMenuOperationSystemActionInjectable = ({ + id, + role, + ...rest +}: { id: string } & OperationSystemAction) => + getInjectable({ + id: `application-menu-operation-system-action/${id}`, + + instantiate: () => ({ + ...rest, + role, + }), + + injectionToken: applicationMenuItemInjectionToken, + }); + +export { getApplicationMenuOperationSystemActionInjectable }; diff --git a/src/features/application-menu/main/menu-items/primary-for-mac/operation-system-actions/operation-system-actions.injectable.ts b/src/features/application-menu/main/menu-items/primary-for-mac/operation-system-actions/operation-system-actions.injectable.ts new file mode 100644 index 0000000000..e6459742ff --- /dev/null +++ b/src/features/application-menu/main/menu-items/primary-for-mac/operation-system-actions/operation-system-actions.injectable.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 { + getApplicationMenuOperationSystemActionInjectable, +} from "../../get-application-menu-operation-system-action-injectable"; + +export const actionForServices = getApplicationMenuOperationSystemActionInjectable({ + id: "services", + parentId: "primary-for-mac", + orderNumber: 80, + role: "services", +}); + +export const actionForHide = getApplicationMenuOperationSystemActionInjectable({ + id: "hide", + parentId: "primary-for-mac", + orderNumber: 100, + role: "hide", +}); + +export const actionForHideOthers = getApplicationMenuOperationSystemActionInjectable({ + id: "hide-others", + parentId: "primary-for-mac", + orderNumber: 110, + role: "hideOthers", +}); + +export const actionForUnhide = getApplicationMenuOperationSystemActionInjectable({ + id: "unhide", + parentId: "primary-for-mac", + orderNumber: 120, + role: "unhide", +}); diff --git a/src/features/application-menu/main/menu-items/primary-for-mac/separators/separators.injectable.ts b/src/features/application-menu/main/menu-items/primary-for-mac/separators/separators.injectable.ts index f927fc526d..963d830ac4 100644 --- a/src/features/application-menu/main/menu-items/primary-for-mac/separators/separators.injectable.ts +++ b/src/features/application-menu/main/menu-items/primary-for-mac/separators/separators.injectable.ts @@ -18,3 +18,15 @@ export const separator2 = getApplicationMenuSeparatorInjectable({ parentId: "primary-for-mac", orderNumber: 70, }); + +export const separator3 = getApplicationMenuSeparatorInjectable({ + id: "separator-3", + parentId: "primary-for-mac", + orderNumber: 90, +}); + +export const separator4 = getApplicationMenuSeparatorInjectable({ + id: "separator-4", + parentId: "primary-for-mac", + orderNumber: 130, +});