@pagerduty/backstage-plugin
Version:
A Backstage plugin that integrates towards PagerDuty
66 lines (63 loc) • 2.04 kB
JavaScript
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