1
import React, { useState, FC } from 'react';
2
import { Button } from 'reactstrap';
3
import CopyToClipboard from 'react-copy-to-clipboard';
5
import { withStatusIndicator } from '../../components/withStatusIndicator';
6
import { useFetch } from '../../hooks/useFetch';
7
import { usePathPrefix } from '../../contexts/PathPrefixContext';
8
import { API_PATH } from '../../constants/constants';
10
type YamlConfig = { yaml?: string };
12
interface ConfigContentProps {
17
const YamlContent = ({ yaml }: YamlConfig) => <pre className="config-yaml">{yaml}</pre>;
18
YamlContent.displayName = 'Config';
20
const ConfigWithStatusIndicator = withStatusIndicator(YamlContent);
22
export const ConfigContent: FC<ConfigContentProps> = ({ error, data }) => {
23
const [copied, setCopied] = useState(false);
24
const config = data && data.yaml;
30
text={config ? config : ''}
31
onCopy={(_, result) => {
33
setTimeout(setCopied, 1500);
36
<Button color="light" disabled={!config}>
37
{copied ? 'Copied' : 'Copy to clipboard'}
41
<ConfigWithStatusIndicator error={error} isLoading={!config} yaml={config} />
46
const Config: FC = () => {
47
const pathPrefix = usePathPrefix();
48
const { response, error } = useFetch<YamlConfig>(`${pathPrefix}/${API_PATH}/status/config`);
49
return <ConfigContent error={error} data={response.data} />;