import React, { useEffect, useState } from "react"; import { Link } from "react-router-dom"; import { Table, TableBody, TableCell, TableContainer, TableFooter, TableHead, TablePagination, TableRow, Tooltip, Typography, } from "@material-ui/core"; import EditIcon from "@material-ui/icons/Edit"; import SendIcon from "@material-ui/icons/Send"; import VisibilityIcon from "@material-ui/icons/Visibility"; import useStyles from "../../useStyles"; import { UpdatesProvider, useUpdatesContext, } from "../../Contexts/UpdatesContext"; import { useUserContext } from "../../Contexts/UserContext"; import { tsLocalDateTimeString } from "../../../utils/dates"; import { Roles, hasRole } from "../../../utils/roles"; const UpdatePackagesList = () => { const classes = useStyles(); const [pageSize, setPageSize] = useState(5); const [pageIndex, setPageIndex] = useState(0); const { getPackages, packages, totalPackages } = useUpdatesContext(); const { token: { idToken: { jwtToken: token }, }, groups, } = useUserContext(); useEffect(() => { getPackages({ limit: pageSize, offset: pageSize * pageIndex }, token); // eslint-disable-next-line }, [pageIndex, pageSize, token]); const handleChangePageIndex = (event, newIndex) => { setPageIndex(newIndex); }; const handleChangePageSize = (event) => { setPageSize(parseInt(event.target.value, 10)); setPageIndex(0); }; const Actions = (row) => { let actions = []; if (hasRole([Roles.CREATE, Roles.READ], groups)) { actions.push({ tip: `Status "${row.package_name} ${row.version}"`, link: `/carupdate-status/${row.id}`, icon: ( ), }); } if (hasRole([Roles.CREATE], groups)) { actions = actions.concat([ { tip: `Edit "${row.package_name} ${row.version}"`, link: `/update/${row.id}`, icon: ( ), }, { tip: `Deploy "${row.package_name} ${row.version}"`, link: `/carupdate-deploy/${row.id}`, icon: ( ), }, ]); } if (actions.length === 0) return "No actions"; return actions.map((action) => ( {action.icon} )); }; return (
Updates ID Name Version Created Actions {packages.map((row) => ( {row.id} {row.package_name} {row.version} {tsLocalDateTimeString(row.timestamp)} {Actions(row)} ))}
); }; const UpdatePackagesForm = () => ( ); export default UpdatePackagesForm;