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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 7x 7x 7x 7x 7x 7x 7x 7x 7x 4x 4x 7x 7x 7x 7x 7x 7x 22x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 22x 22x 22x 22x 22x 22x 22x 22x 2x 2x 22x 2x 2x 19x 19x 19x 19x 19x 19x 19x 19x 1x | import React from "react";
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import AnnouncementForm from "main/components/Announcement/AnnouncementForm";
import { Navigate } from "react-router";
import { toast } from "react-toastify";
import { useBackend, useBackendMutation } from "main/utils/useBackend";
import { datetimeLocalToIsoDateTime } from "main/utils/announcementUtils";
import { useParams } from "react-router";
const AdminEditAnnouncementsPage = () => {
const { commonsId, announcementId } = useParams();
// Stryker disable all
const { data: commonsPlus } = useBackend(
[`/api/commons/plus?id=${commonsId}`],
{
method: "GET",
url: "/api/commons/plus",
params: {
id: commonsId,
},
},
);
const { data: announcement } = useBackend(
[`/api/announcements/getbyid?id=${announcementId}`],
{
method: "GET",
url: "/api/announcements/getbyid",
params: {
id: announcementId,
},
},
);
// Stryker restore all
const commonsName = commonsPlus?.commons.name;
const objectToAxiosParams = (editedAnnouncement) => {
const idToUse = editedAnnouncement?.id ?? announcementId;
const endDate = editedAnnouncement?.endDate;
const params = {
id: idToUse,
commonsId,
startDate: datetimeLocalToIsoDateTime(editedAnnouncement?.startDate),
announcementText: editedAnnouncement?.announcementText,
};
if (endDate) {
params.endDate = datetimeLocalToIsoDateTime(endDate);
}
return {
url: "/api/announcements/put",
method: "PUT",
params,
};
};
const onSuccess = (editedAnnouncement) => {
toast(
<div>
Announcement successfully edited!
<br />
{`commonsId: ${editedAnnouncement.id}`}
<br />
{`startDate: ${editedAnnouncement.startDate}`}
<br />
{`endDate: ${editedAnnouncement.endDate}`}
<br />
{`announcementText: ${editedAnnouncement.announcementText}`}
</div>,
);
};
// Stryker disable all
const mutation = useBackendMutation(
objectToAxiosParams,
{ onSuccess },
// Stryker disable next-line all : hard to set up test for caching
[`/api/announcements?id=${announcementId}`],
);
// Stryker restore all
const submitAction = async (data) => {
mutation.mutate(data);
};
if (mutation.isSuccess) {
return <Navigate to={`/admin/announcements/${commonsId}`} />;
}
return (
<BasicLayout>
<h2>Edit Announcement for Commons {commonsName}</h2>
<AnnouncementForm
initialContents={announcement}
submitAction={submitAction}
buttonLabel="Update"
/>
</BasicLayout>
);
};
export default AdminEditAnnouncementsPage;
|