mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Use deleteNamespaceInjectable
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
148a036248
commit
cef1c52421
@ -0,0 +1,28 @@
|
||||
/**
|
||||
* 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 type { Namespace } from "../../../common/k8s-api/endpoints";
|
||||
import removeSubnamespaceInjectable from "./remove-subnamespace.injectable";
|
||||
import namespaceStoreInjectable from "./store.injectable";
|
||||
|
||||
const deleteNamespaceInjectable = getInjectable({
|
||||
id: "delete-namespace",
|
||||
|
||||
instantiate: (di) => {
|
||||
const namespaceStore = di.inject(namespaceStoreInjectable);
|
||||
const removeSubnamespace = di.inject(removeSubnamespaceInjectable);
|
||||
|
||||
return async (namespace: Namespace) => {
|
||||
if (namespace.isSubnamespace()) {
|
||||
return await removeSubnamespace(namespace.getName());
|
||||
}
|
||||
|
||||
return await namespaceStore.remove(namespace);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export default deleteNamespaceInjectable;
|
||||
@ -13,7 +13,7 @@ import { Icon } from "../icon";
|
||||
import { MenuItem } from "../menu";
|
||||
import type { MenuActionsProps } from "../menu/menu-actions";
|
||||
import { MenuActions } from "../menu/menu-actions";
|
||||
import removeSubnamespaceInjectable from "./remove-subnamespace.injectable";
|
||||
import deleteNamespaceInjectable from "./delete-namespace.injectable";
|
||||
import type { NamespaceStore } from "./store";
|
||||
import namespaceStoreInjectable from "./store.injectable";
|
||||
|
||||
@ -22,22 +22,17 @@ export interface NamespaceMenuProps extends MenuActionsProps {
|
||||
}
|
||||
|
||||
interface Dependencies {
|
||||
readonly removeSubnamespace: (name: string) => Promise<void>;
|
||||
readonly namespaceStore: NamespaceStore;
|
||||
readonly createEditResourceTab: (kubeObject: KubeObject) => void;
|
||||
readonly withConfirmation: WithConfirmation;
|
||||
readonly deleteNamespace: (namespace: Namespace) => Promise<void>;
|
||||
}
|
||||
|
||||
function NonInjectedNamespaceMenu(props: NamespaceMenuProps & Dependencies) {
|
||||
const { namespace, removeSubnamespace, namespaceStore, createEditResourceTab, withConfirmation } = props;
|
||||
const { namespace, namespaceStore, deleteNamespace, createEditResourceTab, withConfirmation } = props;
|
||||
|
||||
const remove = async () => {
|
||||
if (namespace.isSubnamespace()) {
|
||||
await removeSubnamespace(namespace.getName());
|
||||
} else {
|
||||
await namespaceStore.remove(namespace);
|
||||
}
|
||||
|
||||
deleteNamespace(namespace);
|
||||
namespaceStore.clearSelected();
|
||||
};
|
||||
|
||||
@ -70,9 +65,9 @@ function NonInjectedNamespaceMenu(props: NamespaceMenuProps & Dependencies) {
|
||||
export const NamespaceMenu = withInjectables<Dependencies, NamespaceMenuProps>(NonInjectedNamespaceMenu, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
removeSubnamespace: di.inject(removeSubnamespaceInjectable),
|
||||
namespaceStore: di.inject(namespaceStoreInjectable),
|
||||
createEditResourceTab: di.inject(createEditResourceTabInjectable),
|
||||
withConfirmation: di.inject(withConfirmationInjectable),
|
||||
deleteNamespace: di.inject(deleteNamespaceInjectable),
|
||||
}),
|
||||
});
|
||||
@ -20,6 +20,8 @@ import { SubnamespaceBadge } from "./subnamespace-badge";
|
||||
import { NamespaceMenu } from "./namespace-menu";
|
||||
import type { OpenConfirmDialog } from "../confirm-dialog/open.injectable";
|
||||
import openConfirmDialogInjectable from "../confirm-dialog/open.injectable";
|
||||
import type { Namespace } from "../../../common/k8s-api/endpoints";
|
||||
import deleteNamespaceInjectable from "./delete-namespace.injectable";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -32,21 +34,24 @@ interface Dependencies {
|
||||
namespaceStore: NamespaceStore;
|
||||
openAddNamespaceDialog: () => void;
|
||||
openConfirmDialog: OpenConfirmDialog;
|
||||
deleteNamespace: (namespace: Namespace) => Promise<void>;
|
||||
}
|
||||
|
||||
const NonInjectedNamespacesRoute = ({ namespaceStore, openAddNamespaceDialog, openConfirmDialog }: Dependencies) => {
|
||||
const NonInjectedNamespacesRoute = ({ namespaceStore, openAddNamespaceDialog, openConfirmDialog, deleteNamespace }: Dependencies) => {
|
||||
function onConfirm() {
|
||||
namespaceStore.removeSelectedItems();
|
||||
const namespaces = namespaceStore.selectedItems;
|
||||
|
||||
namespaces.forEach(deleteNamespace);
|
||||
}
|
||||
|
||||
function openRemoveNamespaceDialog() {
|
||||
const openRemoveNamespaceDialog = () => {
|
||||
const namespaces = namespaceStore.selectedItems;
|
||||
const message = (
|
||||
<div>
|
||||
<>
|
||||
Remove following namespaces?
|
||||
{" "}
|
||||
<div style={{ overflow: "auto", maxHeight: "200px" }}>
|
||||
<div className="confirm-dialog-scrollable-content">
|
||||
{namespaces.map(namespace => (
|
||||
<li key={namespace.getId()}>{namespace.getName()}</li>
|
||||
))}
|
||||
@ -127,5 +132,6 @@ export const NamespacesRoute = withInjectables<Dependencies>(NonInjectedNamespac
|
||||
namespaceStore: di.inject(namespaceStoreInjectable),
|
||||
openAddNamespaceDialog: di.inject(openAddNamepaceDialogInjectable),
|
||||
openConfirmDialog: di.inject(openConfirmDialogInjectable),
|
||||
deleteNamespace: di.inject(deleteNamespaceInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user