src/components/BranchLink.js (29 lines of code) (raw):

import React, { useState, useEffect } from "react"; import { Link } from "react-router-dom"; import axios from "axios"; import { is_failure, is_pending } from "../utils/JobStatusUtils"; import ResultIcon from "./ResultIcon"; export default function BranchLink({ jsonUrl, link, children }) { const [commits, setCommits] = useState({}); useEffect(() => { axios.get(jsonUrl).then((response) => { setCommits(response.data); }); }, [jsonUrl]); let status = "success"; for (const job of commits[0]?.jobs ?? []) { if (is_failure(job.status)) { status = "failure"; break; } if (is_pending(job.status)) { status = "pending;"; } } return ( <Link to={link}> {children} <ResultIcon result={status} /> </Link> ); }