diff --git a/src/renderer/components/+events/kube-event-icon.tsx b/src/renderer/components/+events/kube-event-icon.tsx index 7b4754fcb1..659a65ae39 100644 --- a/src/renderer/components/+events/kube-event-icon.tsx +++ b/src/renderer/components/+events/kube-event-icon.tsx @@ -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 = { - showWarningsOnly: true, -}; - -export class KubeEventIcon extends React.Component { - static defaultProps = defaultProps as object; +class NonInjectedKubeEventIcon extends React.Component { + 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 { ); } } + +export const KubeEventIcon = withInjectables(NonInjectedKubeEventIcon, { + getProps: (di, props) => ({ + ...props, + eventStore: di.inject(eventStoreInjectable), + }), +}); diff --git a/src/renderer/components/+events/legacy-store.ts b/src/renderer/components/+events/legacy-store.ts deleted file mode 100644 index 2a7378e12c..0000000000 --- a/src/renderer/components/+events/legacy-store.ts +++ /dev/null @@ -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);