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:
parent
5cae38406a
commit
7acebc3696
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
@ -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;
|
||||||
@ -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";
|
||||||
|
|||||||
@ -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,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user