UNPKG

@pagerduty/backstage-plugin

Version:

A Backstage plugin that integrates towards PagerDuty

66 lines (63 loc) 2.04 kB
import React from 'react'; import { makeStyles, createStyles, List, ListSubheader } from '@material-ui/core'; import { EscalationUsersEmptyState } from './EscalationUsersEmptyState.esm.js'; import { EscalationUsersForbiddenState } from './EscalationUsersForbiddenState.esm.js'; import { EscalationUser } from './EscalationUser.esm.js'; import useAsync from 'react-use/lib/useAsync'; import { pagerDutyApiRef } from '../../api/client.esm.js'; import { Alert } from '@material-ui/lab'; import { useApi } from '@backstage/core-plugin-api'; import { Progress } from '@backstage/core-components'; const useStyles = makeStyles( () => createStyles({ listStyle: { marginLeft: "-15px" } }) ); const EscalationPolicy = ({ policyId, policyUrl, policyName, account }) => { const api = useApi(pagerDutyApiRef); const classes = useStyles(); const { value: users, loading, error } = useAsync(async () => { return await api.getOnCallByPolicyId(policyId, account); }); if (error) { if (error.message.includes("Forbidden")) { return /* @__PURE__ */ React.createElement(List, { dense: true, subheader: /* @__PURE__ */ React.createElement(ListSubheader, null, "ON CALL") }, /* @__PURE__ */ React.createElement(EscalationUsersForbiddenState, null)); } return /* @__PURE__ */ React.createElement(Alert, { severity: "error" }, "Error encountered while fetching information. ", error.message); } if (loading) { return /* @__PURE__ */ React.createElement(Progress, null); } if (!users?.length) { return /* @__PURE__ */ React.createElement(EscalationUsersEmptyState, null); } return /* @__PURE__ */ React.createElement( List, { dense: true, className: classes.listStyle }, users.map((user, index) => /* @__PURE__ */ React.createElement( EscalationUser, { key: index, user, policyUrl, policyName } )) ); }; export { EscalationPolicy }; //# sourceMappingURL=EscalationPolicy.esm.js.map