Skip to content

Commit dc4b693

Browse files
authored
Merge pull request #12 from Visual-Regression-Tracker/23-build-status
23 build status
2 parents 83e2e76 + 9b201ce commit dc4b693

File tree

10 files changed

+354
-54
lines changed

10 files changed

+354
-54
lines changed

src/App.jsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,17 @@ import Header from "./components/Header";
44
import { AuthProvider } from "./contexts/auth.context";
55
import { ProjectProvider } from "./contexts/project.context";
66
import Router from "./Router";
7+
import { BuildProvider } from "./contexts/build.context";
78

89
function App() {
910
return (
1011
<div className="App">
1112
<AuthProvider>
1213
<ProjectProvider>
13-
<Header />
14-
<Router />
14+
<BuildProvider>
15+
<Header />
16+
<Router />
17+
</BuildProvider>
1518
</ProjectProvider>
1619
</AuthProvider>
1720
</div>

src/components/BuildList.tsx

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,18 @@ import {
99
Theme,
1010
createStyles,
1111
Chip,
12+
Typography,
13+
Grid,
1214
} from "@material-ui/core";
1315
import { Delete } from "@material-ui/icons";
14-
import { Build } from "../types";
15-
import { buildsService } from "../services";
1616
import { useHistory } from "react-router-dom";
17-
18-
interface IBuildList {
19-
builds: Build[];
20-
setBuilds: React.Dispatch<React.SetStateAction<Build[]>>;
21-
selectedBuildId: string | undefined;
22-
}
17+
import {
18+
useBuildState,
19+
useBuildDispatch,
20+
deleteBuild,
21+
selectBuild,
22+
} from "../contexts/build.context";
23+
import { BuildStatusChip } from "./BuildStatusChip";
2324

2425
const useStyles = makeStyles((theme: Theme) =>
2526
createStyles({
@@ -34,22 +35,21 @@ const useStyles = makeStyles((theme: Theme) =>
3435
})
3536
);
3637

37-
const BuildList: FunctionComponent<IBuildList> = ({
38-
builds,
39-
setBuilds,
40-
selectedBuildId,
41-
}) => {
38+
const BuildList: FunctionComponent = () => {
4239
const classes = useStyles();
4340
const history = useHistory();
41+
const { buildList, selectedBuildId } = useBuildState();
42+
const buildDispatch = useBuildDispatch();
4443

4544
return (
4645
<List>
47-
{builds.map((build) => (
46+
{buildList.map((build) => (
4847
<ListItem
4948
key={build.id}
5049
selected={selectedBuildId === build.id}
5150
button
5251
onClick={() => {
52+
selectBuild(buildDispatch, build.id);
5353
history.push({
5454
search: "buildId=" + build.id,
5555
});
@@ -59,18 +59,39 @@ const BuildList: FunctionComponent<IBuildList> = ({
5959
}}
6060
>
6161
<ListItemText
62-
primary={`#${build.id}`}
63-
secondary={`Date: ${build.createdAt}`}
62+
disableTypography
63+
primary={
64+
<Grid container>
65+
<Grid item>
66+
<Typography variant="subtitle2">{`#${build.id}`}</Typography>
67+
</Grid>
68+
</Grid>
69+
}
70+
secondary={
71+
<Grid container direction="column">
72+
<Grid item>
73+
<Typography variant="caption" color="textPrimary">
74+
{build.createdAt}
75+
</Typography>
76+
</Grid>
77+
<Grid item>
78+
<Grid container justify="space-between">
79+
<Grid item>
80+
<Chip size="small" label={build.branchName} />
81+
</Grid>
82+
<Grid item>
83+
<BuildStatusChip status={build.status} />
84+
</Grid>
85+
</Grid>
86+
</Grid>
87+
</Grid>
88+
}
6489
/>
65-
<Chip size="small" label={build.branchName} />
90+
6691
<ListItemSecondaryAction className={classes.listItemSecondaryAction}>
6792
<IconButton
6893
onClick={() => {
69-
buildsService.remove(build.id).then((isRemoved) => {
70-
if (isRemoved) {
71-
setBuilds(builds.filter((item) => item.id !== build.id));
72-
}
73-
});
94+
deleteBuild(buildDispatch, build.id);
7495
}}
7596
>
7697
<Delete />

src/components/BuildStatusChip.tsx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import React from "react";
2+
import { Chip } from "@material-ui/core";
3+
import { BuildStatus } from "../types/buildStatus";
4+
5+
export const BuildStatusChip: React.FunctionComponent<{
6+
status: BuildStatus;
7+
}> = ({ status }) => {
8+
let color: "inherit" | "primary" | "secondary" | "default" | undefined;
9+
let variant: "default" | "outlined" | undefined;
10+
switch (status) {
11+
case BuildStatus.passed:
12+
color = "primary";
13+
variant = "outlined";
14+
break;
15+
case BuildStatus.unresolved:
16+
color = "secondary";
17+
break;
18+
case BuildStatus.failed:
19+
color = "secondary";
20+
variant = "outlined";
21+
break;
22+
default:
23+
color = undefined;
24+
variant = undefined;
25+
}
26+
return <Chip variant={variant} color={color} label={status} size="small" />;
27+
};

src/components/TestDetailsModal.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import { TestRunDetails } from "./TestRunDetails";
3737
import useImage from "use-image";
3838
import { routes } from "../constants";
3939
import { NoImagePlaceholder } from "./NoImageAvailable";
40+
import { useBuildDispatch, updateBuild } from "../contexts/build.context";
4041

4142
const useStyles = makeStyles((theme) => ({
4243
imageContainer: {
@@ -65,6 +66,7 @@ const TestDetailsModal: React.FunctionComponent<{
6566
}> = ({ testRun, updateTestRun }) => {
6667
const classes = useStyles();
6768
const history = useHistory();
69+
const buildDispatch = useBuildDispatch();
6870

6971
const stageWidth = (window.innerWidth / 2) * 0.9;
7072
const stageHeigth = window.innerHeight;
@@ -172,6 +174,7 @@ const TestDetailsModal: React.FunctionComponent<{
172174
onClick={() =>
173175
testRunService.approve(testRun.id).then((testRun) => {
174176
updateTestRun(testRun);
177+
updateBuild(buildDispatch, testRun);
175178
})
176179
}
177180
>
@@ -180,9 +183,10 @@ const TestDetailsModal: React.FunctionComponent<{
180183
<Button
181184
color="secondary"
182185
onClick={() =>
183-
testRunService
184-
.reject(testRun.id)
185-
.then((testRun) => updateTestRun(testRun))
186+
testRunService.reject(testRun.id).then((testRun) => {
187+
updateTestRun(testRun);
188+
updateBuild(buildDispatch, testRun);
189+
})
186190
}
187191
>
188192
Reject

0 commit comments

Comments
 (0)