import React, { useEffect, useState } from "react"; import { Button, Icon, Spinner, Stack, Tag, Text, Tooltip, useColorMode } from "@chakra-ui/core"; import useAxios from "axios-hooks"; import format from "string-format"; import useConfig from "~/components/HyperglassProvider"; format.extend(String.prototype, {}); const labelBg = { dark: "secondary", light: "secondary" }; const labelBgSuccess = { dark: "success", light: "success" }; const ResolvedTarget = React.forwardRef(({ fqdnTarget, setTarget, queryTarget }, ref) => { const { colorMode } = useColorMode(); const config = useConfig(); const labelBgStatus = { true: labelBgSuccess[colorMode], false: labelBg[colorMode] }; const dnsUrl = config.web.dns_provider.url; const params4 = { url: dnsUrl, params: { name: fqdnTarget, type: "A" }, headers: { accept: "application/dns-json" }, timeout: 1000 }; const params6 = { url: dnsUrl, params: { name: fqdnTarget, type: "AAAA" }, headers: { accept: "application/dns-json" }, timeout: 1000 }; const [{ data: data4, loading: loading4, error: error4 }] = useAxios(params4); const [{ data: data6, loading: loading6, error: error6 }] = useAxios(params6); const handleOverride = overridden => { setTarget({ field: "query_target", value: overridden }); }; const isSelected = value => { return labelBgStatus[value === queryTarget]; }; useEffect(() => { if (data6 && data6.Answer && data6.Answer[0].type === 28) { handleOverride(data6.Answer[0].data); } else if (data4 && data4.Answer && data4.Answer[0].type === 1 && !data6?.Answer) { handleOverride(data4.Answer[0].data); } }, [data4, data6]); return ( {loading4 || error4 || (data4?.Answer?.[0] && ( {loading4 && } {error4 && } {data4?.Answer?.[0] && ( {data4.Answer[0].data} )} ))} {loading6 || error6 || (data6?.Answer?.[0] && ( {loading6 && } {error6 && } {data6?.Answer?.[0] && ( {data6.Answer[0].data} )} ))} ); }); ResolvedTarget.displayName = "ResolvedTarget"; export default ResolvedTarget;