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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 3x 3x 3x 3x 3x 3x 2x 2x 3x 3x 3x 3x 3x 3x 11x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 11x 11x 11x 11x 11x 11x 11x 11x 1x 1x 11x 1x 1x 10x 10x 10x 10x 10x 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 AdminCreateAnnouncementsPage = () => {
const { commonsId } = useParams();
// Stryker disable all
const { data: commonsPlus } = useBackend(
[`/api/commons/plus?id=${commonsId}`],
{
method: "GET",
url: "/api/commons/plus",
params: {
id: commonsId,
},
},
);
// Stryker restore all
const commonsName = commonsPlus?.commons.name;
const objectToAxiosParams = (newAnnouncement) => {
const params = {
commonsId,
startDate: datetimeLocalToIsoDateTime(newAnnouncement.startDate),
announcementText: newAnnouncement.announcementText,
};
if (newAnnouncement.endDate) {
params.endDate = datetimeLocalToIsoDateTime(newAnnouncement.endDate);
}
return {
url: "/api/announcements/post",
method: "POST",
params,
};
};
const onSuccess = (newAnnouncement) => {
toast(
<div>
Announcement successfully created!
<br />
{`commonsId: ${newAnnouncement.id}`}
<br />
{`startDate: ${newAnnouncement.startDate}`}
<br />
{`endDate: ${newAnnouncement.endDate}`}
<br />
{`announcementText: ${newAnnouncement.announcementText}`}
</div>,
);
};
// Stryker disable all
const mutation = useBackendMutation(
objectToAxiosParams,
{ onSuccess },
// Stryker disable next-line all : hard to set up test for caching
["/api/announcements/all"],
);
// Stryker restore all
const submitAction = async (data) => {
mutation.mutate(data);
};
if (mutation.isSuccess) {
return <Navigate to={`/admin/announcements/${commonsId}`} />;
}
return (
<BasicLayout>
<h2>Create Announcement for Commons {commonsName}</h2>
<AnnouncementForm submitAction={submitAction} />
</BasicLayout>
);
};
export default AdminCreateAnnouncementsPage;
|