import { useEffect, useState } from "react"; import { Link } from "react-router-dom"; import { fetchBuilds, statusLabel, type Build } from "../api/client"; import { getBuildDuration, isBuildFinished } from "../lib/duration"; export default function BuildList() { const [builds, setBuilds] = useState([]); const [error, setError] = useState(null); useEffect(() => { fetchBuilds() .then(setBuilds) .catch((err) => setError(err instanceof Error ? err.message : "加载失败"), ); }, []); return ( <>

构建记录

最近 20 条构建任务。

{error ?

{error}

: null} {!error && builds.length === 0 ? (

暂无构建记录。

) : null} {builds.length > 0 ? (
    {builds.map((build) => (
  • {build.appName} ({build.appNameEn})
    v{build.appVersion} · {statusLabel(build.status)} {isBuildFinished(build.status) ? ` · 耗时 ${getBuildDuration(build).text}` : null}{" "} · {new Date(build.createdAt).toLocaleString()}
  • ))}
) : null}
); }