/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import React from "react"; import type { KubeObjectMenuProps } from "../kube-object-menu"; import type { CronJob } from "../../../common/k8s-api/endpoints"; import { cronJobApi } from "../../../common/k8s-api/endpoints"; import { MenuItem } from "../menu"; import { CronJobTriggerDialog } from "./cronjob-trigger-dialog"; import { Icon } from "../icon"; import { Notifications } from "../notifications"; import type { OpenConfirmDialog } from "../confirm-dialog/open.injectable"; import { withInjectables } from "@ogre-tools/injectable-react"; import openConfirmDialogInjectable from "../confirm-dialog/open.injectable"; export interface CronJobMenuProps extends KubeObjectMenuProps {} interface Dependencies { openConfirmDialog: OpenConfirmDialog; } const NonInjectedCronJobMenu = ({ object, toolbar, openConfirmDialog, }: Dependencies & CronJobMenuProps) => ( <> CronJobTriggerDialog.open(object)}> Trigger {object.isSuspend() ? ( openConfirmDialog({ ok: async () => { try { await cronJobApi.resume({ namespace: object.getNs(), name: object.getName() }); } catch (err) { Notifications.checkedError(err, "Unknown error occured while resuming CronJob"); } }, labelOk: `Resume`, message: (

{"Resume CronJob "} {object.getName()} ?

), })} > Resume
) : ( openConfirmDialog({ ok: async () => { try { await cronJobApi.suspend({ namespace: object.getNs(), name: object.getName() }); } catch (err) { Notifications.checkedError(err, "Unknown error occured while suspending CronJob"); } }, labelOk: `Suspend`, message: (

{"Suspend CronJob "} {object.getName()} ?

), })} > Suspend
) } ); export const CronJobMenu = withInjectables(NonInjectedCronJobMenu, { getProps: (di, props) => ({ ...props, openConfirmDialog: di.inject(openConfirmDialogInjectable), }), });