@pagerduty/backstage-plugin
Version:
A Backstage plugin that integrates towards PagerDuty
53 lines (50 loc) • 1.79 kB
JavaScript
import { jsx, jsxs } from 'react/jsx-runtime';
import { useEffect } from 'react';
import { List } from '@material-ui/core';
import { ChangeEventListItem } from './ChangeEventListItem.esm.js';
import { ChangeEventEmptyState } from './ChangeEventEmptyState.esm.js';
import { ChangeEventForbiddenState } from './ChangeEventForbiddenState.esm.js';
import useAsyncFn from 'react-use/lib/useAsyncFn';
import { pagerDutyApiRef } from '../../api/client.esm.js';
import { useApi } from '@backstage/core-plugin-api';
import { Progress } from '@backstage/core-components';
import { Alert } from '@material-ui/lab';
const ChangeEvents = ({ serviceId, account, refreshEvents }) => {
const api = useApi(pagerDutyApiRef);
const [{ value: changeEvents, loading, error }, getChangeEvents] = useAsyncFn(
async () => {
const { change_events } = await api.getChangeEventsByServiceId(
serviceId,
account
);
return change_events;
}
);
useEffect(() => {
getChangeEvents();
}, [refreshEvents, getChangeEvents]);
if (error) {
if (error.message.includes("Forbidden")) {
return /* @__PURE__ */ jsx(ChangeEventForbiddenState, {});
}
return /* @__PURE__ */ jsxs(Alert, { severity: "error", children: [
"Error encountered while fetching information. ",
error.message
] });
}
if (loading) {
return /* @__PURE__ */ jsx(Progress, {});
}
if (!changeEvents?.length) {
return /* @__PURE__ */ jsx(ChangeEventEmptyState, {});
}
return /* @__PURE__ */ jsx(List, { dense: true, children: changeEvents.map((changeEvent, index) => /* @__PURE__ */ jsx(
ChangeEventListItem,
{
changeEvent
},
changeEvent.id + index
)) });
};
export { ChangeEvents };
//# sourceMappingURL=ChangeEvents.esm.js.map