1
0
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:
Sebastian Malton 2022-12-22 11:39:44 -05:00
parent eb279f370d
commit 9d70be6174
2 changed files with 19 additions and 21 deletions

View File

@ -8,10 +8,12 @@ import "./kube-event-icon.scss";
import React from "react";
import { Icon } from "../icon";
import type { KubeObject } from "../../../common/k8s-api/kube-object";
import { eventStore } from "./legacy-store";
import { cssNames } from "../../utils";
import type { KubeEvent } from "../../../common/k8s-api/endpoints/events.api";
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 {
object: KubeObject;
@ -19,22 +21,23 @@ export interface KubeEventIconProps {
filterEvents?: (events: KubeEvent[]) => KubeEvent[];
}
interface Dependencies {
eventStore: EventStore;
}
const defaultProps: Partial<KubeEventIconProps> = {
showWarningsOnly: true,
};
export class KubeEventIcon extends React.Component<KubeEventIconProps> {
static defaultProps = defaultProps as object;
class NonInjectedKubeEventIcon extends React.Component<KubeEventIconProps & Dependencies> {
get showWarningsOnly() {
return this.props.showWarningsOnly ?? true;
}
render() {
const { object, showWarningsOnly, filterEvents } = this.props;
const { object, filterEvents, eventStore } = this.props;
const events = eventStore.getEventsByObject(object);
let warnings = events.filter(evt => evt.isWarning());
if (filterEvents) warnings = filterEvents(warnings);
if (!events.length || (showWarningsOnly && !warnings.length)) {
if (!events.length || (this.showWarningsOnly && !warnings.length)) {
return null;
}
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),
}),
});

View File

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