1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/src/renderer/components/kube-detail-params/toggle-details.injectable.ts
Sebastian Malton fd86ea0d97 Convert all of kube-details-params/ and navigate/ to injectable
- This fixes a runtime error that was encountered during testing

Signed-off-by: Sebastian Malton <sebastian@malton.name>
2022-05-04 08:47:20 -04:00

43 lines
1.5 KiB
TypeScript

/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import hideDetailsInjectable from "./hide-details.injectable";
import kubeSelectedUrlParamInjectable from "./kube-selected-url.injectable";
import showDetailsInjectable from "./show-details.injectable";
export interface ToggleDetails {
/**
* @param selfLink The selfLink of the kube object to toggle the details panal of
* @param resetSelected If true then the selected kube object (for the current list view) will be reset
* @default resetSelected true
*/
(selfLink: string, resetSelected?: boolean): void;
/**
* @deprecated Future versions will not support passing in `selfLink` that is `undefined`
*/
(selfLink: string | undefined, resetSelected?: boolean): void;
}
const toggleDetailsInjectable = getInjectable({
id: "toggle-details",
instantiate: (di): ToggleDetails => {
const showDetails = di.inject(showDetailsInjectable);
const hideDetails = di.inject(hideDetailsInjectable);
const kubeSelectedUrlParam = di.inject(kubeSelectedUrlParamInjectable);
return (selfLink, resetSelected = true) => {
const current = kubeSelectedUrlParam.get() === selfLink;
if (current || !selfLink) {
hideDetails();
} else {
showDetails(selfLink, resetSelected);
}
};
},
});
export default toggleDetailsInjectable;