All files / pages AdminAnnouncementsPage.jsx

100% Statements 54/54
100% Branches 4/4
100% Functions 1/1
100% Lines 54/54

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 731x 1x 1x 1x 1x 1x 1x 1x   1x 14x   14x 14x 14x 14x 14x 14x 14x 14x 14x 14x     14x 14x 14x 14x 14x 14x 14x 14x 14x     14x 14x   14x   14x 14x 14x 14x 14x 14x   14x 14x 14x 14x 14x 14x   14x 14x 14x 14x 14x         14x 14x 14x 14x         14x  
import React from "react";
import Button from "react-bootstrap/Button";
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import { Row, Col } from "react-bootstrap";
import { useParams } from "react-router";
import { useBackend } from "main/utils/useBackend";
import { useCurrentUser } from "main/utils/currentUser";
import AnnouncementTable from "main/components/Announcement/AnnouncementTable";
 
export default function AdminAnnouncementsPage() {
  const { commonsId } = useParams();
 
  // Stryker disable all
  const { data: commonsPlus } = useBackend(
    [`/api/commons/plus?id=${commonsId}`],
    {
      method: "GET",
      url: "/api/commons/plus",
      params: {
        id: commonsId,
      },
    },
  );
 
  const { data: announcementsResponse } = useBackend(
    [`/api/announcements/getbycommonsid?commonsId=${commonsId}`],
    {
      method: "GET",
      url: "/api/announcements/getbycommonsid",
      params: {
        commonsId: commonsId,
      },
    },
  );
 
  const { data: currentUser } = useCurrentUser();
  const announcements = announcementsResponse?.content ?? [];
 
  const commonsName = commonsPlus?.commons.name;
 
  // Stryker disable all - styles that don't need to be mut tested
  const buttonStyle = {
    display: "flex",
    justifyContent: "flex-end",
  };
  // Stryker restore all
 
  return (
    <BasicLayout>
      <div className="pt-2">
        <Row className="pt-5 pb-3" style={{ gap: "30px" }}>
          <Col md="auto">
            <h2>Announcements for Commons: {commonsName}</h2>
          </Col>
          <Col style={buttonStyle}>
            <Button
              variant="primary"
              href={`/admin/announcements/${commonsId}/create`}
            >
              Create Announcement
            </Button>
          </Col>
        </Row>
        <AnnouncementTable
          announcements={announcements}
          currentUser={currentUser}
          commonsId={commonsId}
        />
      </div>
    </BasicLayout>
  );
}