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.
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
@ -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;
|
||||
@ -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";
|
||||
|
||||
@ -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,
|
||||
}),
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user