MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / ToolkitsPage

Function ToolkitsPage

packages/plugins/toolkits/src/page.tsx:1371–1478  ·  view source on GitHub ↗
(props: PluginPageProps)

Source from the content-addressed store, hash-verified

1369}
1370
1371export function ToolkitsPage(props: PluginPageProps) {
1372 const navigate = useNavigate();
1373 const organizationSlug = useOrganizationSlug();
1374 const ownerDisplay = useOwnerDisplay();
1375 const integrationPlugins = useIntegrationPlugins();
1376 const toolkits = useAtomValue(toolkitsAtom);
1377 const tools = useAtomValue(toolsAllAtom);
1378 const integrations = useAtomValue(integrationsOptimisticAtom);
1379 const doCreateToolkit = useAtomSet(createToolkit, { mode: "promiseExit" });
1380 const doRemoveToolkit = useAtomSet(removeToolkit, { mode: "promiseExit" });
1381 const selectedToolkitSlug = props.params.toolkitSlug ?? null;
1382
1383 const toolkitRows = AsyncResult.isSuccess(toolkits) ? toolkits.value.toolkits : [];
1384 const selectedToolkit =
1385 selectedToolkitSlug === null ? null : toolkitByRouteSlug(toolkitRows, selectedToolkitSlug);
1386
1387 const toolRows = AsyncResult.isSuccess(tools) ? (tools.value as readonly ToolRow[]) : [];
1388 const integrationRows = AsyncResult.isSuccess(integrations)
1389 ? (integrations.value as readonly Integration[])
1390 : [];
1391 const toolkitsReady = AsyncResult.isSuccess(toolkits);
1392 const toolkitsFailed = AsyncResult.isFailure(toolkits);
1393 const toolsReady = AsyncResult.isSuccess(tools);
1394 const toolsFailed = AsyncResult.isFailure(tools);
1395 const navigateToIndex = () =>
1396 navigate({
1397 to: "/{-$orgSlug}/toolkits",
1398 });
1399
1400 const createToolkitHandler = async (input: { owner: Owner; name: string }) => {
1401 await doCreateToolkit({
1402 payload: input,
1403 reactivityKeys: toolkitWriteKeys,
1404 });
1405 };
1406
1407 const removeToolkitHandler = async (toolkit: ToolkitResponse) => {
1408 await doRemoveToolkit({
1409 params: { toolkitId: toolkit.id },
1410 reactivityKeys: toolkitWriteKeys,
1411 });
1412 await navigateToIndex();
1413 };
1414
1415 return (
1416 <div className="flex min-h-0 flex-1 flex-col overflow-hidden">
1417 {selectedToolkitSlug === null ? (
1418 <div className="flex h-12 shrink-0 items-center gap-3 border-b border-border bg-background/95 px-4 backdrop-blur-sm">
1419 <div className="flex min-w-0 items-center gap-3">
1420 <h1 className="truncate text-sm font-semibold text-foreground">Toolkits</h1>
1421 {AsyncResult.isSuccess(toolkits) && (
1422 <span className="hidden text-xs tabular-nums text-muted-foreground sm:block">
1423 {toolkitRows.length} {toolkitRows.length === 1 ? "toolkit" : "toolkits"}
1424 </span>
1425 )}
1426 </div>
1427 </div>
1428 ) : null}

Callers

nothing calls this directly

Calls 5

useOrganizationSlugFunction · 0.90
useOwnerDisplayFunction · 0.90
useIntegrationPluginsFunction · 0.90
toolkitByRouteSlugFunction · 0.85
navigateToIndexFunction · 0.85

Tested by

no test coverage detected