1+ import { faRailway , faVercel , Icon } from "@rivet-gg/icons" ;
12import type { Rivet } from "@rivetkit/engine-api-full" ;
2- import { formatRelative } from "date-fns" ;
33import {
44 Button ,
55 DiscreteCopyButton ,
@@ -11,15 +11,14 @@ import {
1111 TableHeader ,
1212 TableRow ,
1313 Text ,
14- WithTooltip ,
1514} from "@/components" ;
1615
1716interface RunnerConfigsTableProps {
1817 isLoading ?: boolean ;
1918 isError ?: boolean ;
2019 hasNextPage ?: boolean ;
2120 fetchNextPage ?: ( ) => void ;
22- configs : Rivet . RunnerConfig [ ] ;
21+ configs : [ string , Rivet . RunnerConfig ] [ ] ;
2322}
2423
2524export function RunnerConfigsTable ( {
@@ -70,8 +69,8 @@ export function RunnerConfigsTable({
7069 < RowSkeleton />
7170 </ >
7271 ) : null }
73- { configs ?. map ( ( config ) => (
74- < Row { ...config } key = { config . metadata } />
72+ { configs ?. map ( ( [ id , config ] ) => (
73+ < Row name = { id } { ...config } key = { id } />
7574 ) ) }
7675
7776 { ! isLoading && hasNextPage ? (
@@ -112,34 +111,43 @@ function RowSkeleton() {
112111 ) ;
113112}
114113
115- function Row ( config : Rivet . RunnerConfig ) {
114+ function Row ( { name , ... config } : { name : string } & Rivet . RunnerConfig ) {
116115 return (
117- < TableRow key = { runner . runnerId } >
116+ < TableRow >
118117 < TableCell >
119- < WithTooltip
120- content = { config }
121- trigger = {
122- < DiscreteCopyButton value = { runner . runnerId } >
123- { runner . runnerId . slice ( 0 , 8 ) }
124- </ DiscreteCopyButton >
125- }
126- />
118+ < DiscreteCopyButton value = { name } > { name } </ DiscreteCopyButton >
127119 </ TableCell >
128120 < TableCell >
129- { config . metadata &&
130- typeof config . metadata === "object" &&
131- "provider" in config . metadata
132- ? ( config . metadata . provider as string )
133- : "unknown" }
121+ < Provider metadata = { config . metadata } />
134122 </ TableCell >
135123 < TableCell > -</ TableCell >
136- < TableCell > { runner . datacenter } </ TableCell >
137-
138- < TableCell >
139- { runner . remainingSlots } /{ runner . totalSlots }
140- </ TableCell >
124+ < TableCell > { config . serverless ?. url } </ TableCell >
141125
142- < TableCell > { formatRelative ( runner . createTs , new Date ( ) ) } </ TableCell >
126+ < TableCell > </ TableCell >
143127 </ TableRow >
144128 ) ;
145129}
130+
131+ function Provider ( { metadata } : { metadata : unknown } ) {
132+ if ( ! metadata || typeof metadata !== "object" ) {
133+ return < span > Unknown</ span > ;
134+ }
135+ if ( "provider" in metadata && typeof metadata . provider === "string" ) {
136+ if ( metadata . provider === "vercel" ) {
137+ return (
138+ < >
139+ < Icon icon = { faVercel } className = "mr-1" /> Vercel
140+ </ >
141+ ) ;
142+ }
143+ if ( metadata . provider === "railway" ) {
144+ return (
145+ < >
146+ < Icon icon = { faRailway } className = "mr-1" /> Railway
147+ </ >
148+ ) ;
149+ }
150+ return < span > { metadata . provider || "-" } </ span > ;
151+ }
152+ return < span > Unknown</ span > ;
153+ }
0 commit comments