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 104 105 106 107 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 6x 2x 2x 6x 1x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 18x 2x 2x 2x 2x 2x 18x 18x 18x 18x 2x 2x 18x 4x 4x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x | import React from "react";
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import AnnouncementForm from "main/components/Announcement/AnnouncementForm";
import { Navigate, useParams } from "react-router";
import { toast } from "react-toastify";
import { useQueryClient } from "react-query";
import { useBackend, useBackendMutation } from "main/utils/useBackend";
import { toBackendDateTime } from "main/utils/announcementUtils";
const nonBlankParam = (params, key, value) => {
if (value) {
params[key] = value;
}
};
export default function AdminEditAnnouncementsPage() {
const { commonsId, id } = useParams();
const queryClient = useQueryClient();
// 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=${id}`],
{
method: "GET",
url: "/api/announcements/getbyid",
params: {
id,
},
},
undefined,
{ refetchOnMount: "always" },
);
// Stryker restore all
const objectToAxiosParams = (updatedAnnouncement) => {
const params = {
id,
commonsId,
announcementText: updatedAnnouncement.announcementText,
};
nonBlankParam(
params,
"startDate",
toBackendDateTime(updatedAnnouncement.startDate),
);
nonBlankParam(
params,
"endDate",
toBackendDateTime(updatedAnnouncement.endDate),
);
return {
url: "/api/announcements/put",
method: "PUT",
params,
};
};
const onSuccess = () => {
toast(`Announcement updated - id: ${id}`);
queryClient.invalidateQueries(
`/api/announcements/getbycommonsid?commonsId=${commonsId}`,
);
queryClient.invalidateQueries(`/api/announcements/getbyid?id=${id}`);
};
// Stryker disable all
const mutation = useBackendMutation(objectToAxiosParams, { onSuccess });
// Stryker restore all
const submitAction = async (data) => {
mutation.mutate(data);
};
if (mutation.isSuccess) {
return <Navigate to={`/admin/announcements/${commonsId}`} />;
}
const commonsName = commonsPlus?.commons.name;
return (
<BasicLayout>
<div className="pt-2">
<h1>Edit Announcement for Commons {commonsName}</h1>
{announcement && (
<AnnouncementForm
initialContents={announcement}
submitAction={submitAction}
buttonLabel="Update"
/>
)}
</div>
</BasicLayout>
);
}
|