import { BrowserServices } from "../../models/interfaces"; import { ServerResponse } from "../../../server/models/types"; import { ActionType, ActionTypeMapName } from "../../pages/Notifications/constant"; import { ILronConfig } from "../../pages/Notifications/interface"; import { CoreStart } from "opensearch-dashboards/public"; export const GetLronConfig = async (props: { services: BrowserServices; actionType: ActionType; }): Promise< ServerResponse<{ lron_configs: { lron_config: ILronConfig; }[]; total_number: number; }> > => { return props.services.commonService.apiCaller<{ lron_configs: { lron_config: ILronConfig; }[]; total_number: number; }>({ endpoint: "transport.request", data: { method: "GET", path: `/_plugins/_im/lron/${encodeURIComponent(`LRON:${ActionTypeMapName[props.actionType]}`)}`, }, }); }; export const checkPermissionForSubmitLRONConfig = async (props: { services: BrowserServices }) => { const result = await props.services.commonService.apiCaller({ endpoint: "transport.request", data: { method: "PUT", path: `/_plugins/_im/lron/${encodeURIComponent(`LRON:${ActionTypeMapName.REINDEX}`)}?dry_run=true`, body: { lron_config: { lron_condition: {}, action_name: ActionTypeMapName[ActionType.REINDEX], channels: [ { id: "test", }, ], }, }, }, }); return result?.ok; }; export const associateWithTask = async (props: { services: BrowserServices; coreServices: CoreStart; taskId: string; lronConfig: ILronConfig; }) => { const result = await props.services.commonService.apiCaller({ endpoint: "transport.request", data: { method: "PUT", path: `/_plugins/_im/lron/${encodeURIComponent(`LRON:${props.taskId}`)}`, body: { lron_config: { ...props.lronConfig, task_id: props.taskId, } as ILronConfig, }, }, }); if (!result.ok) { props.coreServices.notifications.toasts.addDanger(result.error); } return result?.ok; }; export const ifSetDefaultNotification = (lronConfig?: ILronConfig) => { return !!(lronConfig?.lron_condition?.failure || lronConfig?.lron_condition?.success); }; export const getPermissionValue = (permissionForViewLRON: boolean, permissionForCreateLRON: boolean, hasDefaultNotification: boolean) => { const getValue = (val: boolean) => (val ? "1" : "0"); return `${getValue(permissionForViewLRON)}${getValue(permissionForCreateLRON)}${getValue(hasDefaultNotification)}`; };