diff --git a/app/routes/_data.machines.$id/route.tsx b/app/routes/_data.machines.$id/route.tsx index 2b3388f..85b08be 100644 --- a/app/routes/_data.machines.$id/route.tsx +++ b/app/routes/_data.machines.$id/route.tsx @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ import { ActionFunctionArgs, LoaderFunctionArgs } from '@remix-run/node' import { Link, useLoaderData } from '@remix-run/react' +import { useMemo } from 'react' import Attribute from '~/components/Attribute' import Card from '~/components/Card' @@ -69,6 +70,22 @@ export default function Page() { tags.unshift('Expired') } + // This is much easier with Object.groupBy but it's too new for us + const { exit, subnet } = routes.reduce((acc, route) => { + if (route.prefix === '::/0' || route.prefix === '0.0.0.0/0') { + acc.exit.push(route) + return acc + } + + acc.subnet.push(route) + return acc + }, { exit: [], subnet: [] }) + + const exitEnabled = useMemo(() => { + if (exit.length !== 2) return false + return exit[0].enabled && exit[1].enabled + }, [exit]) + return (
@@ -151,10 +168,26 @@ export default function Page() { : undefined}
+ Exit Node +
+ + {exitEnabled ? 'Enabled' : 'Disabled'} +- {route.enabled ? 'Enabled' : 'Disabled'} -
-- {route.isPrimary ? 'Primary' : 'Secondary'} -
+ ++ {route.enabled ? 'Enabled' : 'Disabled'} +
++ {route.isPrimary ? 'Primary' : 'Secondary'} +
+