1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

fixes & responding to comments

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2023-01-05 18:13:24 +02:00
parent 4615fcef1d
commit fe554cb5f8
4 changed files with 35 additions and 17 deletions

View File

@ -31,7 +31,6 @@ export class IngressClassApi extends KubeApi<IngressClass> {
}, { }, {
headers: { headers: {
"content-type": "application/strategic-merge-patch+json", "content-type": "application/strategic-merge-patch+json",
// "content-type": "application/merge-patch+json",
}, },
}); });
} }
@ -85,7 +84,7 @@ export class IngressClass extends KubeObject<IngressClassMetadata, IngressClassS
} }
getCtrlNs() { getCtrlNs() {
return this.spec?.parameters?.namespace as string; return this.spec?.parameters?.namespace;
} }
getCtrlKind() { getCtrlKind() {

View File

@ -90,7 +90,7 @@ export const apiResourceRecord: Record<KubeResource, KubeApiResourceData> = {
ingressclasses: { ingressclasses: {
kind: "IngressClass", kind: "IngressClass",
group: "networking.k8s.io", group: "networking.k8s.io",
namespaced: true, namespaced: false,
}, },
jobs: { jobs: {
kind: "Job", kind: "Job",

View File

@ -19,27 +19,47 @@ import { MenuItem } from "../menu";
import type { IngressClass } from "../../../common/k8s-api/endpoints/ingress-class.api"; import type { IngressClass } from "../../../common/k8s-api/endpoints/ingress-class.api";
import type { KubeObjectMenuProps } from "../kube-object-menu"; import type { KubeObjectMenuProps } from "../kube-object-menu";
import { Icon } from "../icon"; import { Icon } from "../icon";
import hideDetailsInjectable from "../kube-detail-params/hide-details.injectable";
export interface IngressClassMenuProps extends KubeObjectMenuProps<IngressClass> { export interface IngressClassMenuProps extends KubeObjectMenuProps<IngressClass> {
setDefault(item: IngressClass): void;
} }
export function NonInjectedIngressClassMenu({ object, toolbar, ...props }: IngressClassMenuProps) { export interface Dependencies {
setDefault: (item: IngressClass) => void;
hideDetails: () => void;
}
export function NonInjectedIngressClassMenu(
{
object,
toolbar,
setDefault,
hideDetails,
}: IngressClassMenuProps & Dependencies) {
function markItemAsDefaultIngressClass() {
setDefault(object);
hideDetails();
}
return ( return (
<MenuItem onClick={() => props.setDefault(object)}> <>
<Icon <MenuItem onClick={markItemAsDefaultIngressClass}>
material="star" <Icon
tooltip="Set as default" material="star"
interactive={toolbar} /> tooltip="Set as default"
<span className="title">Set as default</span> interactive={toolbar} />
</MenuItem> <span className="title">Set as default</span>
</MenuItem>
</>
); );
} }
export const IngressClassMenu = withInjectables<{}, IngressClassMenuProps>(NonInjectedIngressClassMenu, { export const IngressClassMenu = withInjectables<Dependencies, IngressClassMenuProps>(NonInjectedIngressClassMenu, {
getProps: (di, props) => ({ getProps: (di, props) => ({
...props, ...props,
setDefault: di.inject(ingressClassSetDefaultInjectable), setDefault: di.inject(ingressClassSetDefaultInjectable),
hideDetails: di.inject(hideDetailsInjectable),
}), }),
}); });

View File

@ -12,17 +12,16 @@ export const ingressClassSetDefaultInjectable = getInjectable({
id: "ingressClassSetDefaultInjectable", id: "ingressClassSetDefaultInjectable",
instantiate(di) { instantiate(di) {
return async (currentItem: IngressClass) => { const api = di.inject(ingressClassApiInjectable);
const api = di.inject(ingressClassApiInjectable); const store = di.inject(ingressClassStoreInjectable);
const store = di.inject(ingressClassStoreInjectable);
return async (currentItem: IngressClass) => {
const defaultIngressClassesUpdate = store.items const defaultIngressClassesUpdate = store.items
.filter((item: IngressClass) => item.isDefault && currentItem !== item) .filter((item: IngressClass) => item.isDefault && currentItem !== item)
.map(item => api.setAsDefault({ name: item.getName() }, false)); .map(item => api.setAsDefault({ name: item.getName() }, false));
await Promise.all(defaultIngressClassesUpdate); await Promise.all(defaultIngressClassesUpdate);
await api.setAsDefault({ name: currentItem.getName() }); await api.setAsDefault({ name: currentItem.getName() });
await store.reloadAll({ force: true });
}; };
}, },