From 7acebc36961fa4bc12dac3ee4b1889ee83a9addb Mon Sep 17 00:00:00 2001 From: Jim Ehrismann Date: Thu, 9 Jun 2022 20:11:21 -0400 Subject: [PATCH] refactored to include AutoUpdateComponent in the statusBarItemsInjectable Signed-off-by: Jim Ehrismann --- .../progress-of-update-download.injectable.ts | 3 +-- ...registered-status-bar-items.injectable.ts} | 6 ++--- ...le.tsx => status-bar-items.injectable.tsx} | 23 +++++++++++-------- .../components/status-bar/status-bar.test.tsx | 2 +- .../components/status-bar/status-bar.tsx | 13 ++++------- 5 files changed, 24 insertions(+), 23 deletions(-) rename src/renderer/components/status-bar/{status-bar-items.injectable.ts => registered-status-bar-items.injectable.ts} (78%) rename src/renderer/components/status-bar/{registered-status-bar-items.injectable.tsx => status-bar-items.injectable.tsx} (70%) diff --git a/src/common/application-update/progress-of-update-download/progress-of-update-download.injectable.ts b/src/common/application-update/progress-of-update-download/progress-of-update-download.injectable.ts index fe7a5d2f3f..26ecd1d618 100644 --- a/src/common/application-update/progress-of-update-download/progress-of-update-download.injectable.ts +++ b/src/common/application-update/progress-of-update-download/progress-of-update-download.injectable.ts @@ -3,11 +3,10 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import type { JsonObject } from "type-fest"; import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable"; import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token"; -export interface ProgressOfDownload extends JsonObject { +export interface ProgressOfDownload { percentage: number; } diff --git a/src/renderer/components/status-bar/status-bar-items.injectable.ts b/src/renderer/components/status-bar/registered-status-bar-items.injectable.ts similarity index 78% rename from src/renderer/components/status-bar/status-bar-items.injectable.ts rename to src/renderer/components/status-bar/registered-status-bar-items.injectable.ts index 05a22b86a7..b9b9234089 100644 --- a/src/renderer/components/status-bar/status-bar-items.injectable.ts +++ b/src/renderer/components/status-bar/registered-status-bar-items.injectable.ts @@ -6,8 +6,8 @@ import { getInjectable } from "@ogre-tools/injectable"; import { computed } from "mobx"; import rendererExtensionsInjectable from "../../../extensions/renderer-extensions.injectable"; -const statusBarItemsInjectable = getInjectable({ - id: "status-bar-items", +const registeredStatusBarItemsInjectable = getInjectable({ + id: "registered-status-bar-items", instantiate: (di) => { const extensions = di.inject(rendererExtensionsInjectable); @@ -18,4 +18,4 @@ const statusBarItemsInjectable = getInjectable({ }, }); -export default statusBarItemsInjectable; +export default registeredStatusBarItemsInjectable; diff --git a/src/renderer/components/status-bar/registered-status-bar-items.injectable.tsx b/src/renderer/components/status-bar/status-bar-items.injectable.tsx similarity index 70% rename from src/renderer/components/status-bar/registered-status-bar-items.injectable.tsx rename to src/renderer/components/status-bar/status-bar-items.injectable.tsx index 976d36451c..bc4474a7dc 100644 --- a/src/renderer/components/status-bar/registered-status-bar-items.injectable.tsx +++ b/src/renderer/components/status-bar/status-bar-items.injectable.tsx @@ -10,9 +10,10 @@ import type { StatusBarItemProps, StatusBarRegistration, } from "./status-bar-registration"; -import statusBarItemsInjectable from "./status-bar-items.injectable"; +import registeredStatusBarItemsInjectable from "./registered-status-bar-items.injectable"; +import { AutoUpdateComponent } from "./auto-update-status-bar-item"; -export interface RegisteredStatusBarItems { +export interface StatusBarItems { right: React.ComponentType[]; left: React.ComponentType[]; } @@ -21,13 +22,17 @@ interface Dependencies { registrations: IComputedValue; } -function getRegisteredStatusBarItems({ registrations }: Dependencies): IComputedValue { +function getStatusBarItems({ registrations }: Dependencies): IComputedValue { return computed(() => { - const res: RegisteredStatusBarItems = { + const res: StatusBarItems = { left: [], right: [], }; + // add Lens specific components + res.left.push(AutoUpdateComponent); + + // add extension-registered components for (const registration of registrations.get()) { if (!registration || typeof registration !== "object") { continue; @@ -66,13 +71,13 @@ function getRegisteredStatusBarItems({ registrations }: Dependencies): IComputed }); } -const registeredStatusBarItemsInjectable = getInjectable({ - id: "registered-status-bar-items", +const statusBarItemsInjectable = getInjectable({ + id: "status-bar-items", - instantiate: (di) => getRegisteredStatusBarItems({ - registrations: di.inject(statusBarItemsInjectable), + instantiate: (di) => getStatusBarItems({ + registrations: di.inject(registeredStatusBarItemsInjectable), }), }); -export default registeredStatusBarItemsInjectable; +export default statusBarItemsInjectable; diff --git a/src/renderer/components/status-bar/status-bar.test.tsx b/src/renderer/components/status-bar/status-bar.test.tsx index 53920d45c7..26483f7a2e 100644 --- a/src/renderer/components/status-bar/status-bar.test.tsx +++ b/src/renderer/components/status-bar/status-bar.test.tsx @@ -12,7 +12,7 @@ import { renderFor } from "../test-utils/renderFor"; import type { IObservableArray } from "mobx"; import { computed, observable } from "mobx"; import type { DiContainer } from "@ogre-tools/injectable"; -import statusBarItemsInjectable from "./status-bar-items.injectable"; +import statusBarItemsInjectable from "./registered-status-bar-items.injectable"; import type { StatusBarRegistration } from "./status-bar-registration"; import { LensRendererExtension } from "../../../extensions/lens-renderer-extension"; import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable"; diff --git a/src/renderer/components/status-bar/status-bar.tsx b/src/renderer/components/status-bar/status-bar.tsx index 038f78e32e..6f3fb152c0 100644 --- a/src/renderer/components/status-bar/status-bar.tsx +++ b/src/renderer/components/status-bar/status-bar.tsx @@ -8,21 +8,18 @@ import styles from "./status-bar.module.scss"; import React from "react"; import { observer } from "mobx-react"; import { withInjectables } from "@ogre-tools/injectable-react"; -import type { RegisteredStatusBarItems } from "./registered-status-bar-items.injectable"; -import registeredStatusBarItemsInjectable from "./registered-status-bar-items.injectable"; +import type { StatusBarItems } from "./status-bar-items.injectable"; +import statusBarItemsInjectable from "./status-bar-items.injectable"; import type { IComputedValue } from "mobx"; -import { AutoUpdateComponent } from "./auto-update-status-bar-item"; export interface StatusBarProps {} interface Dependencies { - items: IComputedValue; + items: IComputedValue; } const NonInjectedStatusBar = observer(({ items }: Dependencies & StatusBarProps) => { - const { left: leftItems, right } = items.get(); - - const left = [AutoUpdateComponent, ...leftItems]; + const { left, right } = items.get(); return (
@@ -47,7 +44,7 @@ const NonInjectedStatusBar = observer(({ items }: Dependencies & StatusBarProps) export const StatusBar = withInjectables(NonInjectedStatusBar, { getProps: (di, props) => ({ - items: di.inject(registeredStatusBarItemsInjectable), + items: di.inject(statusBarItemsInjectable), ...props, }), });