import { useState } from "react"; import { Trans, useLingui } from "@lingui/react/macro"; import { Box, Button, Code, Collapse, Group, Stack, Text, UnstyledButton, } from "@mantine/core"; import { useQueryClient } from "@tanstack/react-query"; import { useServerMutation } from "@/lib/tanstack-query/hooks"; import { resolveClientErrorGroup } from "../../server"; import { telemetryKeys } from "../../queries"; import type { ClientErrorGroup } from "../../types"; import { RelativeTime } from "../shared"; export const ErrorGroupRow = ({ group }: { group: ClientErrorGroup }) => { const { t } = useLingui(); const [expanded, setExpanded] = useState(false); const queryClient = useQueryClient(); const resolveMutation = useServerMutation({ mutationFn: (variables: { groupHash: string; resolved: boolean }) => resolveClientErrorGroup({ data: variables }), successMessage: group.resolved ? t`Error group reopened` : t`Error group resolved`, onSuccess: () => { queryClient.invalidateQueries({ queryKey: telemetryKeys.all }); }, }); return ( setExpanded((prev) => !prev)} style={{ borderRadius: 0 }} > {group.count.toLocaleString()}× {group.sample.message} {group.sample.source && ( {group.sample.source} )} {group.resolved && ( Resolved )} {group.sample.path && ( {group.sample.path} )} {group.sample.stack && ( {group.sample.stack} )} ); }; export default ErrorGroupRow;