import { createFileRoute, redirect } from "@tanstack/react-router";
import { listAccountContainers, stopAccountContainerFn } from "~/fns/containers";
import { useAction } from "~/hooks/use-action";
import { PageContainer } from "~/ui/PageContainer";
import { ContainerSessionList } from "~/components/containers/ContainerSessionList";
import { Heading } from "~/ui/Heading";
export const Route = createFileRoute("/orgs/$org/containers")({
beforeLoad: ({ context }) => {
if (!context.viewer) throw redirect({ to: "/login" });
},
loader: ({ params }) => listAccountContainers({ data: { org: params.org } }),
component: OrgContainersPage,
});
function OrgContainersPage() {
const overview = Route.useLoaderData();
const params = Route.useParams();
const stop = useAction(stopAccountContainerFn);
return (
<PageContainer className="max-w-4xl space-y-4">
<Heading>{overview.account} editor containers</Heading>
<p className="text-sm text-gray-400">
Containers billed to this organization. Owners can stop any of them; the member who started one is shown.
</p>
<ContainerSessionList
overview={overview}
showAccount
canStop
error={stop.error}
pending={stop.pending}
onStop={(sessionId) => stop.run({ data: { org: params.org, sessionId } })}
/>
</PageContainer>
);
}