diff --git a/src/App.jsx b/src/App.jsx index 8a15e89b..86429ec4 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -4,14 +4,17 @@ import Header from "./components/Header"; import { AuthProvider } from "./contexts/auth.context"; import { ProjectProvider } from "./contexts/project.context"; import Router from "./Router"; +import { BuildProvider } from "./contexts/build.context"; function App() { return (
-
- + +
+ +
diff --git a/src/components/BuildList.tsx b/src/components/BuildList.tsx index 6328a41b..0586a0b5 100644 --- a/src/components/BuildList.tsx +++ b/src/components/BuildList.tsx @@ -9,17 +9,18 @@ import { Theme, createStyles, Chip, + Typography, + Grid, } from "@material-ui/core"; import { Delete } from "@material-ui/icons"; -import { Build } from "../types"; -import { buildsService } from "../services"; import { useHistory } from "react-router-dom"; - -interface IBuildList { - builds: Build[]; - setBuilds: React.Dispatch>; - selectedBuildId: string | undefined; -} +import { + useBuildState, + useBuildDispatch, + deleteBuild, + selectBuild, +} from "../contexts/build.context"; +import { BuildStatusChip } from "./BuildStatusChip"; const useStyles = makeStyles((theme: Theme) => createStyles({ @@ -34,22 +35,21 @@ const useStyles = makeStyles((theme: Theme) => }) ); -const BuildList: FunctionComponent = ({ - builds, - setBuilds, - selectedBuildId, -}) => { +const BuildList: FunctionComponent = () => { const classes = useStyles(); const history = useHistory(); + const { buildList, selectedBuildId } = useBuildState(); + const buildDispatch = useBuildDispatch(); return ( - {builds.map((build) => ( + {buildList.map((build) => ( { + selectBuild(buildDispatch, build.id); history.push({ search: "buildId=" + build.id, }); @@ -59,18 +59,39 @@ const BuildList: FunctionComponent = ({ }} > + + {`#${build.id}`} + + + } + secondary={ + + + + {build.createdAt} + + + + + + + + + + + + + + } /> - + { - buildsService.remove(build.id).then((isRemoved) => { - if (isRemoved) { - setBuilds(builds.filter((item) => item.id !== build.id)); - } - }); + deleteBuild(buildDispatch, build.id); }} > diff --git a/src/components/BuildStatusChip.tsx b/src/components/BuildStatusChip.tsx new file mode 100644 index 00000000..d276d3e4 --- /dev/null +++ b/src/components/BuildStatusChip.tsx @@ -0,0 +1,27 @@ +import React from "react"; +import { Chip } from "@material-ui/core"; +import { BuildStatus } from "../types/buildStatus"; + +export const BuildStatusChip: React.FunctionComponent<{ + status: BuildStatus; +}> = ({ status }) => { + let color: "inherit" | "primary" | "secondary" | "default" | undefined; + let variant: "default" | "outlined" | undefined; + switch (status) { + case BuildStatus.passed: + color = "primary"; + variant = "outlined"; + break; + case BuildStatus.unresolved: + color = "secondary"; + break; + case BuildStatus.failed: + color = "secondary"; + variant = "outlined"; + break; + default: + color = undefined; + variant = undefined; + } + return ; +}; diff --git a/src/components/TestDetailsModal.tsx b/src/components/TestDetailsModal.tsx index 19c81d9b..fe759a82 100644 --- a/src/components/TestDetailsModal.tsx +++ b/src/components/TestDetailsModal.tsx @@ -37,6 +37,7 @@ import { TestRunDetails } from "./TestRunDetails"; import useImage from "use-image"; import { routes } from "../constants"; import { NoImagePlaceholder } from "./NoImageAvailable"; +import { useBuildDispatch, updateBuild } from "../contexts/build.context"; const useStyles = makeStyles((theme) => ({ imageContainer: { @@ -65,6 +66,7 @@ const TestDetailsModal: React.FunctionComponent<{ }> = ({ testRun, updateTestRun }) => { const classes = useStyles(); const history = useHistory(); + const buildDispatch = useBuildDispatch(); const stageWidth = (window.innerWidth / 2) * 0.9; const stageHeigth = window.innerHeight; @@ -172,6 +174,7 @@ const TestDetailsModal: React.FunctionComponent<{ onClick={() => testRunService.approve(testRun.id).then((testRun) => { updateTestRun(testRun); + updateBuild(buildDispatch, testRun); }) } > @@ -180,9 +183,10 @@ const TestDetailsModal: React.FunctionComponent<{