Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 1x 1x 1x 1x 1x 1x 1x 15x 15x 15x 15x 15x 15x 1x 1x 15x 15x 15x 15x 15x 15x 15x 15x 1x 1x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 9x 9x 9x 9x 9x 14x 14x 14x 14x 14x 14x | import React from "react";
import OurTable, { ButtonColumn } from "main/components/OurTable";
import { useBackendMutation } from "main/utils/useBackend";
import {
cellToAxiosParamsDelete,
onDeleteSuccess,
} from "main/utils/announcementUtils";
import { useNavigate } from "react-router";
import { hasRole } from "main/utils/currentUser";
export default function AnnouncementTable({
announcements,
currentUser,
commonsId,
}) {
const navigate = useNavigate();
const editCallback = (cell) => {
navigate(`/admin/announcements/${commonsId}/edit/${cell.row.values.id}`);
};
// Stryker disable all : hard to test query caching
const deleteMutation = useBackendMutation(
cellToAxiosParamsDelete,
{ onSuccess: onDeleteSuccess },
[`/api/announcements/getbycommonsid?commonsId=${commonsId}`],
);
// Stryker restore all
// Stryker disable next-line all : tested through useBackendMutation behavior
const deleteCallback = (cell) => {
deleteMutation.mutate(cell);
};
const columns = [
{
Header: "id",
accessor: "id",
},
{
Header: "Start Date ISO Format",
accessor: "startDate",
},
{
Header: "End Date ISO Format",
accessor: "endDate",
},
{
Header: "Announcement",
accessor: "announcementText",
},
];
if (hasRole(currentUser, "ROLE_ADMIN")) {
columns.push(
ButtonColumn("Edit", "primary", editCallback, "AnnouncementTable"),
);
columns.push(
ButtonColumn("Delete", "danger", deleteCallback, "AnnouncementTable"),
);
}
return (
<OurTable
data={announcements}
columns={columns}
testid={"AnnouncementTable"}
/>
);
}
|