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.
*/
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;
}

View File

@ -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;

View File

@ -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<StatusBarItemProps>[];
left: React.ComponentType<StatusBarItemProps>[];
}
@ -21,13 +22,17 @@ interface Dependencies {
registrations: IComputedValue<StatusBarRegistration[]>;
}
function getRegisteredStatusBarItems({ registrations }: Dependencies): IComputedValue<RegisteredStatusBarItems> {
function getStatusBarItems({ registrations }: Dependencies): IComputedValue<StatusBarItems> {
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;

View File

@ -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";

View File

@ -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<RegisteredStatusBarItems>;
items: IComputedValue<StatusBarItems>;
}
const NonInjectedStatusBar = observer(({ items }: Dependencies & StatusBarProps) => {
const { left: leftItems, right } = items.get();
const left = [AutoUpdateComponent, ...leftItems];
const { left, right } = items.get();
return (
<div className={styles.StatusBar}>
@ -47,7 +44,7 @@ const NonInjectedStatusBar = observer(({ items }: Dependencies & StatusBarProps)
export const StatusBar = withInjectables<Dependencies, StatusBarProps>(NonInjectedStatusBar, {
getProps: (di, props) => ({
items: di.inject(registeredStatusBarItemsInjectable),
items: di.inject(statusBarItemsInjectable),
...props,
}),
});