app/panels/DeliverablesPanel.tsx (38 lines of code) (raw):

import React, { useContext, useEffect, useState } from "react"; import { ProjectsPanelProps, usePanelStyles } from "./PanelsCommon"; import { UserContext } from "@guardian/pluto-headers"; import { Paper } from "@material-ui/core"; import PanelLauncher from "./PanelLauncher"; import { GetMyRecentOpenProjects } from "../services/PlutoCore"; import clsx from "clsx"; const DeliverablesPanel: React.FC<ProjectsPanelProps> = (props) => { const panelClasses = usePanelStyles(); const [recentOpenProjects, setRecentOpenProjects] = useState<PlutoProject[]>( [] ); useEffect(() => { GetMyRecentOpenProjects(5) .then((results) => { const [projects, events] = results; setRecentOpenProjects(projects); if (props.onLoaded) props.onLoaded(projects.length > 0); }) .catch((err) => { console.error(err); }); }, []); return ( <Paper className={clsx(props.className, panelClasses.panel)}> <PanelLauncher buttonLabel="Search" onClick={() => window.location.assign("/deliverables/search")} caption="Search for deliverables" /> {recentOpenProjects.map((proj, idx) => ( <PanelLauncher key={idx} buttonLabel="Deliverables" onClick={() => window.location.assign(`/deliverables/project/${proj.id}`) } caption={`Add deliverables to ${proj.title}`} /> ))} </Paper> ); }; export default DeliverablesPanel;