import * as React from 'react'; import { Accordion, AccordionButton, AccordionIcon, AccordionItem, AccordionPanel, Box, Button, Center, Heading, IconButton, Spinner, Tooltip, useClipboard, useColorMode, useDisclosure, } from '@chakra-ui/react'; import { JsonViewer } from '@textea/json-viewer'; import { ListDashes } from 'phosphor-react'; import { useTranslation } from 'react-i18next'; import { RefreshButton } from 'components/Buttons/RefreshButton'; import FormattedDate from 'components/InformationDisplays/FormattedDate'; import { LoadingOverlay } from 'components/LoadingOverlay'; import { Modal } from 'components/Modals/Modal'; import { useGetDeviceCapabilities } from 'hooks/Network/Devices'; type Props = { serialNumber: string; }; const ViewCapabilitiesModal = ({ serialNumber }: Props) => { const { t } = useTranslation(); const { isOpen, onOpen, onClose } = useDisclosure(); const getCapabilities = useGetDeviceCapabilities({ serialNumber }); const { hasCopied, onCopy, setValue } = useClipboard( JSON.stringify(getCapabilities.data?.capabilities ?? {}, null, 2), ); const { colorMode } = useColorMode(); React.useEffect(() => { if (getCapabilities.data) { setValue(JSON.stringify(getCapabilities.data.capabilities, null, 2)); } }, [getCapabilities.data]); return ( <> } onClick={onOpen} colorScheme="pink" mr={2} /> {hasCopied ? `${t('common.copied')}!` : t('common.copy')} > } onClose={onClose} > {!getCapabilities.data && getCapabilities.isFetching && ( )} {getCapabilities.data && ( {t('controller.devices.last_modified')}: {t('common.preview')} {t('analytics.raw_data')} {JSON.stringify(getCapabilities.data.capabilities, null, 2)} )} > ); }; export default ViewCapabilitiesModal;
{JSON.stringify(getCapabilities.data.capabilities, null, 2)}