All files / publisher-admin/pages/Releases ReleasesTable.tsx

85.71% Statements 6/7
100% Branches 2/2
66.66% Functions 2/3
83.33% Lines 5/6

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                                          16x 16x 16x       18x                       16x                                                      
import { useState } from "react";
import { MainTable } from "@canonical/react-components";
import ShareBadgeModal from "./ShareBadgeModal";
import {
  generateReleaseChannelRows,
  ShareBadgeDetails,
} from "../../utils/generateReleaseChannelRows";
 
type ReleasesTableProps = {
  releaseMap: ReleaseChannel[];
  arch: string;
  packageName: string;
  packageTitle?: string;
};
 
export default function ReleasesTable({
  releaseMap,
  arch,
  packageName,
  packageTitle,
}: ReleasesTableProps) {
  const [expandedChannel, setExpandedChannel] = useState<string | null>(null);
  const [showAll, setShowAll] = useState<boolean>(false);
  const [selectedBadge, setSelectedBadge] = useState<ShareBadgeDetails | null>(
    null
  );
 
  const rows = releaseMap.flatMap((releaseChannel) =>
    generateReleaseChannelRows(
      releaseChannel,
      arch,
      expandedChannel,
      setExpandedChannel,
      showAll,
      setShowAll,
      setSelectedBadge
    )
  );
 
  return (
    <>
      <MainTable
        role="table"
        className="u-table-layout--auto"
        headers={[
          { content: "Release Channel" },
          { content: "Revision" },
          { content: "Release Date" },
          { content: "Resources" },
          { content: "Platform" },
          { content: "Share" },
        ]}
        rows={rows}
      />
      {selectedBadge && (
        <ShareBadgeModal
          close={() => setSelectedBadge(null)}
          packageName={packageName}
          packageTitle={packageTitle}
          releaseChannel={selectedBadge.releaseChannel}
          revision={selectedBadge.revision}
        />
      )}
    </>
  );
}