mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Remove usages of legacy global eventStore
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
eb279f370d
commit
9d70be6174
@ -8,10 +8,12 @@ import "./kube-event-icon.scss";
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { Icon } from "../icon";
|
import { Icon } from "../icon";
|
||||||
import type { KubeObject } from "../../../common/k8s-api/kube-object";
|
import type { KubeObject } from "../../../common/k8s-api/kube-object";
|
||||||
import { eventStore } from "./legacy-store";
|
|
||||||
import { cssNames } from "../../utils";
|
import { cssNames } from "../../utils";
|
||||||
import type { KubeEvent } from "../../../common/k8s-api/endpoints/events.api";
|
import type { KubeEvent } from "../../../common/k8s-api/endpoints/events.api";
|
||||||
import { KubeObjectAge } from "../kube-object/age";
|
import { KubeObjectAge } from "../kube-object/age";
|
||||||
|
import type { EventStore } from "./store";
|
||||||
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
|
import eventStoreInjectable from "./store.injectable";
|
||||||
|
|
||||||
export interface KubeEventIconProps {
|
export interface KubeEventIconProps {
|
||||||
object: KubeObject;
|
object: KubeObject;
|
||||||
@ -19,22 +21,23 @@ export interface KubeEventIconProps {
|
|||||||
filterEvents?: (events: KubeEvent[]) => KubeEvent[];
|
filterEvents?: (events: KubeEvent[]) => KubeEvent[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface Dependencies {
|
||||||
|
eventStore: EventStore;
|
||||||
|
}
|
||||||
|
|
||||||
const defaultProps: Partial<KubeEventIconProps> = {
|
class NonInjectedKubeEventIcon extends React.Component<KubeEventIconProps & Dependencies> {
|
||||||
showWarningsOnly: true,
|
get showWarningsOnly() {
|
||||||
};
|
return this.props.showWarningsOnly ?? true;
|
||||||
|
}
|
||||||
export class KubeEventIcon extends React.Component<KubeEventIconProps> {
|
|
||||||
static defaultProps = defaultProps as object;
|
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { object, showWarningsOnly, filterEvents } = this.props;
|
const { object, filterEvents, eventStore } = this.props;
|
||||||
const events = eventStore.getEventsByObject(object);
|
const events = eventStore.getEventsByObject(object);
|
||||||
let warnings = events.filter(evt => evt.isWarning());
|
let warnings = events.filter(evt => evt.isWarning());
|
||||||
|
|
||||||
if (filterEvents) warnings = filterEvents(warnings);
|
if (filterEvents) warnings = filterEvents(warnings);
|
||||||
|
|
||||||
if (!events.length || (showWarningsOnly && !warnings.length)) {
|
if (!events.length || (this.showWarningsOnly && !warnings.length)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const event = [...warnings, ...events][0]; // get latest event
|
const event = [...warnings, ...events][0]; // get latest event
|
||||||
@ -58,3 +61,10 @@ export class KubeEventIcon extends React.Component<KubeEventIconProps> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const KubeEventIcon = withInjectables<Dependencies, KubeEventIconProps>(NonInjectedKubeEventIcon, {
|
||||||
|
getProps: (di, props) => ({
|
||||||
|
...props,
|
||||||
|
eventStore: di.inject(eventStoreInjectable),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|||||||
@ -1,12 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { asLegacyGlobalForExtensionApi } from "../../../extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api";
|
|
||||||
import eventStoreInjectable from "./store.injectable";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(eventStoreInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const eventStore = asLegacyGlobalForExtensionApi(eventStoreInjectable);
|
|
||||||
Loading…
Reference in New Issue
Block a user