1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

refactored to include AutoUpdateComponent in the statusBarItemsInjectable

Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
This commit is contained in:
Jim Ehrismann 2022-06-09 20:11:21 -04:00
parent 5cae38406a
commit 7acebc3696
5 changed files with 24 additions and 23 deletions

View File

@ -3,11 +3,10 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import type { JsonObject } from "type-fest";
import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable"; import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable";
import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token"; import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token";
export interface ProgressOfDownload extends JsonObject { export interface ProgressOfDownload {
percentage: number; percentage: number;
} }

View File

@ -6,8 +6,8 @@ import { getInjectable } from "@ogre-tools/injectable";
import { computed } from "mobx"; import { computed } from "mobx";
import rendererExtensionsInjectable from "../../../extensions/renderer-extensions.injectable"; import rendererExtensionsInjectable from "../../../extensions/renderer-extensions.injectable";
const statusBarItemsInjectable = getInjectable({ const registeredStatusBarItemsInjectable = getInjectable({
id: "status-bar-items", id: "registered-status-bar-items",
instantiate: (di) => { instantiate: (di) => {
const extensions = di.inject(rendererExtensionsInjectable); const extensions = di.inject(rendererExtensionsInjectable);
@ -18,4 +18,4 @@ const statusBarItemsInjectable = getInjectable({
}, },
}); });
export default statusBarItemsInjectable; export default registeredStatusBarItemsInjectable;

View File

@ -10,9 +10,10 @@ import type {
StatusBarItemProps, StatusBarItemProps,
StatusBarRegistration, StatusBarRegistration,
} from "./status-bar-registration"; } 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<StatusBarItemProps>[]; right: React.ComponentType<StatusBarItemProps>[];
left: React.ComponentType<StatusBarItemProps>[]; left: React.ComponentType<StatusBarItemProps>[];
} }
@ -21,13 +22,17 @@ interface Dependencies {
registrations: IComputedValue<StatusBarRegistration[]>; registrations: IComputedValue<StatusBarRegistration[]>;
} }
function getRegisteredStatusBarItems({ registrations }: Dependencies): IComputedValue<RegisteredStatusBarItems> { function getStatusBarItems({ registrations }: Dependencies): IComputedValue<StatusBarItems> {
return computed(() => { return computed(() => {
const res: RegisteredStatusBarItems = { const res: StatusBarItems = {
left: [], left: [],
right: [], right: [],
}; };
// add Lens specific components
res.left.push(AutoUpdateComponent);
// add extension-registered components
for (const registration of registrations.get()) { for (const registration of registrations.get()) {
if (!registration || typeof registration !== "object") { if (!registration || typeof registration !== "object") {
continue; continue;
@ -66,13 +71,13 @@ function getRegisteredStatusBarItems({ registrations }: Dependencies): IComputed
}); });
} }
const registeredStatusBarItemsInjectable = getInjectable({ const statusBarItemsInjectable = getInjectable({
id: "registered-status-bar-items", id: "status-bar-items",
instantiate: (di) => getRegisteredStatusBarItems({ instantiate: (di) => getStatusBarItems({
registrations: di.inject(statusBarItemsInjectable), registrations: di.inject(registeredStatusBarItemsInjectable),
}), }),
}); });
export default registeredStatusBarItemsInjectable; export default statusBarItemsInjectable;

View File

@ -12,7 +12,7 @@ import { renderFor } from "../test-utils/renderFor";
import type { IObservableArray } from "mobx"; import type { IObservableArray } from "mobx";
import { computed, observable } from "mobx"; import { computed, observable } from "mobx";
import type { DiContainer } from "@ogre-tools/injectable"; 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 type { StatusBarRegistration } from "./status-bar-registration";
import { LensRendererExtension } from "../../../extensions/lens-renderer-extension"; import { LensRendererExtension } from "../../../extensions/lens-renderer-extension";
import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable"; import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";

View File

@ -8,21 +8,18 @@ import styles from "./status-bar.module.scss";
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { withInjectables } from "@ogre-tools/injectable-react"; import { withInjectables } from "@ogre-tools/injectable-react";
import type { RegisteredStatusBarItems } from "./registered-status-bar-items.injectable"; import type { StatusBarItems } from "./status-bar-items.injectable";
import registeredStatusBarItemsInjectable from "./registered-status-bar-items.injectable"; import statusBarItemsInjectable from "./status-bar-items.injectable";
import type { IComputedValue } from "mobx"; import type { IComputedValue } from "mobx";
import { AutoUpdateComponent } from "./auto-update-status-bar-item";
export interface StatusBarProps {} export interface StatusBarProps {}
interface Dependencies { interface Dependencies {
items: IComputedValue<RegisteredStatusBarItems>; items: IComputedValue<StatusBarItems>;
} }
const NonInjectedStatusBar = observer(({ items }: Dependencies & StatusBarProps) => { const NonInjectedStatusBar = observer(({ items }: Dependencies & StatusBarProps) => {
const { left: leftItems, right } = items.get(); const { left, right } = items.get();
const left = [AutoUpdateComponent, ...leftItems];
return ( return (
<div className={styles.StatusBar}> <div className={styles.StatusBar}>
@ -47,7 +44,7 @@ const NonInjectedStatusBar = observer(({ items }: Dependencies & StatusBarProps)
export const StatusBar = withInjectables<Dependencies, StatusBarProps>(NonInjectedStatusBar, { export const StatusBar = withInjectables<Dependencies, StatusBarProps>(NonInjectedStatusBar, {
getProps: (di, props) => ({ getProps: (di, props) => ({
items: di.inject(registeredStatusBarItemsInjectable), items: di.inject(statusBarItemsInjectable),
...props, ...props,
}), }),
}); });