@@ -2,23 +2,24 @@ import { useEffect, useMemo, useState } from "react";
22
33import type { RepositorySummary } from "@verge/contracts" ;
44
5- import { NavLink , StatusPill } from "./components/common.js" ;
5+ import { NavLink } from "./components/common.js" ;
66import { useAppRoute } from "./hooks/use-app-route.js" ;
7+ import { useCommitListData } from "./hooks/use-commit-list-data.js" ;
78import { useCommitDetailData } from "./hooks/use-commit-detail-data.js" ;
8- import { useOverviewData } from "./hooks/use-overview-data.js" ;
99import { useRunDetailData } from "./hooks/use-run-detail-data.js" ;
1010import { useRunsPageData } from "./hooks/use-runs-page-data.js" ;
11+ import { useStepSpecs } from "./hooks/use-step-specs.js" ;
1112import {
1213 buildCommitPath ,
13- buildRepositoryOverviewPath ,
14+ buildRepositoryCommitsPath ,
1415 buildRepositoryRunsPath ,
1516 buildRunPath ,
1617 buildStepPath ,
1718 navigate ,
1819} from "./lib/routing.js" ;
1920import { statusTone } from "./lib/format.js" ;
21+ import { CommitsPage } from "./pages/CommitsPage.js" ;
2022import { CommitDetailPage } from "./pages/CommitDetailPage.js" ;
21- import { OverviewPage } from "./pages/OverviewPage.js" ;
2223import { RunDetailPage } from "./pages/RunDetailPage.js" ;
2324import { RunsPage } from "./pages/RunsPage.js" ;
2425import { StepDetailPage } from "./pages/StepDetailPage.js" ;
@@ -32,7 +33,8 @@ export const App = () => {
3233 const [ preferredRepositorySlug , setPreferredRepositorySlug ] = useState < string | null > ( null ) ;
3334 const [ repositoriesError , setRepositoriesError ] = useState < string | null > ( null ) ;
3435 const currentRepositorySlug = route . repositorySlug ?? preferredRepositorySlug ;
35- const { health, processSpecs, error : overviewError } = useOverviewData ( currentRepositorySlug ) ;
36+ const { commitsPage, error : commitsError } = useCommitListData ( route , currentRepositorySlug ) ;
37+ const { stepSpecs, error : stepSpecsError } = useStepSpecs ( currentRepositorySlug ) ;
3638 const { runsPage, error : runsError } = useRunsPageData ( route , currentRepositorySlug ) ;
3739 const { run, treemap, step, error : runError , treemapError } = useRunDetailData ( route ) ;
3840 const {
@@ -105,8 +107,8 @@ export const App = () => {
105107 return ;
106108 }
107109
108- if ( route . name === "overview " ) {
109- navigate ( buildRepositoryOverviewPath ( fallbackRepositorySlug ) ) ;
110+ if ( route . name === "commits " ) {
111+ navigate ( buildRepositoryCommitsPath ( fallbackRepositorySlug , { page : route . page } ) ) ;
110112 return ;
111113 }
112114
@@ -147,7 +149,6 @@ export const App = () => {
147149 } ) ;
148150 } , [ route ] ) ;
149151
150- const activeRunCount = useMemo ( ( ) => health ?. activeRuns . length ?? 0 , [ health ] ) ;
151152 const selectedRepository = useMemo (
152153 ( ) => repositories . find ( ( repository ) => repository . slug === currentRepositorySlug ) ?? null ,
153154 [ currentRepositorySlug , repositories ] ,
@@ -217,11 +218,19 @@ export const App = () => {
217218 ) ;
218219 } ;
219220
221+ const changeCommitsPage = ( page : number ) : void => {
222+ if ( route . name !== "commits" || ! selectedRepositorySlug ) {
223+ return ;
224+ }
225+
226+ navigate ( buildRepositoryCommitsPath ( selectedRepositorySlug , { page } ) ) ;
227+ } ;
228+
220229 const navigateToRepository = ( nextRepositorySlug : string ) : void => {
221230 setPreferredRepositorySlug ( nextRepositorySlug ) ;
222231
223- if ( route . name === "overview " ) {
224- navigate ( buildRepositoryOverviewPath ( nextRepositorySlug ) ) ;
232+ if ( route . name === "commits " ) {
233+ navigate ( buildRepositoryCommitsPath ( nextRepositorySlug , { page : route . page } ) ) ;
225234 return ;
226235 }
227236
@@ -249,12 +258,12 @@ export const App = () => {
249258 repositoriesError ??
250259 submitError ??
251260 ( route . name === "runs"
252- ? runsError
261+ ? ( stepSpecsError ?? runsError )
253262 : route . name === "run" || route . name === "step"
254263 ? runError
255264 : route . name === "commit"
256265 ? commitError
257- : overviewError ) ;
266+ : commitsError ) ;
258267
259268 return (
260269 < main className = "appShell" >
@@ -286,57 +295,46 @@ export const App = () => {
286295 </ div >
287296 < nav className = "topnav" >
288297 < NavLink
289- active = { route . name === "overview" }
290- href = {
291- selectedRepositorySlug ? buildRepositoryOverviewPath ( selectedRepositorySlug ) : "/"
292- }
293- label = "Overview"
298+ active = { route . name === "commits" || route . name === "commit" }
299+ href = { selectedRepositorySlug ? buildRepositoryCommitsPath ( selectedRepositorySlug ) : "/" }
300+ label = "Commits"
294301 />
295302 < NavLink
296- active = {
297- route . name === "runs" ||
298- route . name === "run" ||
299- route . name === "step" ||
300- route . name === "commit"
301- }
303+ active = { route . name === "runs" || route . name === "run" || route . name === "step" }
302304 href = {
303305 selectedRepositorySlug ? buildRepositoryRunsPath ( selectedRepositorySlug ) : "/runs"
304306 }
305307 label = "Runs"
306308 />
307309 </ nav >
308- < div className = "topbarMeta" >
309- < StatusPill status = { activeRunCount > 0 ? "running" : "passed" } />
310- < span className = "secondaryText" > { activeRunCount } active</ span >
311- </ div >
312310 </ header >
313311
314312 { error ? < div className = "errorBanner" > { error } </ div > : null }
315313
316- { route . name === "overview " ? (
317- < OverviewPage
314+ { route . name === "commits " ? (
315+ < CommitsPage
318316 repositorySlug = { selectedRepositorySlug }
319- health = { health }
320- processSpecs = { processSpecs }
317+ commitsPage = { commitsPage }
318+ onPageChange = { changeCommitsPage }
319+ />
320+ ) : null }
321+
322+ { route . name === "runs" ? (
323+ < RunsPage
324+ repositorySlug = { selectedRepositorySlug }
325+ runsPage = { runsPage }
326+ processSpecs = { stepSpecs }
321327 commitSha = { commitSha }
322328 branch = { branch }
323329 changedFiles = { changedFiles }
324330 resumeFromCheckpoint = { resumeFromCheckpoint }
325331 submitting = { submitting }
332+ draftFilters = { draftFilters }
326333 onCommitShaChange = { setCommitSha }
327334 onBranchChange = { setBranch }
328335 onChangedFilesChange = { setChangedFiles }
329336 onResumeFromCheckpointChange = { setResumeFromCheckpoint }
330337 onSubmit = { ( ) => void submitManualRun ( ) }
331- />
332- ) : null }
333-
334- { route . name === "runs" ? (
335- < RunsPage
336- repositorySlug = { selectedRepositorySlug }
337- runsPage = { runsPage }
338- processSpecs = { processSpecs }
339- draftFilters = { draftFilters }
340338 onDraftFilterChange = { ( key , value ) => {
341339 setDraftFilters ( ( current ) => ( { ...current , [ key ] : value } ) ) ;
342340 } }
0 commit comments