"use client"; import { ActionIcon, Anchor, Button, Card, Flex, Group, ScrollArea, Stack, Text } from "@mantine/core"; import { IconCircleCheck, IconCircleX, IconReportSearch, IconTestPipe } from "@tabler/icons-react"; import combineClasses from "clsx"; import { clientApi } from "@homarr/api/client"; import { useRequiredBoard } from "@homarr/boards/context"; import { useI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../definition"; import classes from "./component.module.css"; export default function IndexerManagerWidget({ options, integrationIds, width, height, }: WidgetComponentProps<"indexerManager">) { const t = useI18n(); const { data: indexersData = [] } = clientApi.widget.indexerManager.getIndexersStatus.useQuery({ integrationIds }); const utils = clientApi.useUtils(); const { mutate: testAll, isPending } = clientApi.widget.indexerManager.testAllIndexers.useMutation({ onSettled: () => void utils.widget.indexerManager.getIndexersStatus.invalidate(), }); const board = useRequiredBoard(); const hasSmallWidth = width < 256; const hasSmallHeight = height < 256; return ( {t("widget.indexerManager.title")} {hasSmallHeight && ( { testAll({ integrationIds }); }} > )} {indexersData.map(({ integrationId, indexers }) => ( {(indexers ?? []).map((indexer) => ( {indexer.name} {indexer.status === false || indexer.enabled === false ? ( ) : ( )} ))} ))} {!hasSmallHeight && ( )} ); }