export function AuditLogging()

in public/apps/configuration/panels/audit-logging/audit-logging.tsx [135:230]


export function AuditLogging(props: AuditLoggingProps) {
  const [configuration, setConfiguration] = React.useState<AuditLoggingSettings>({});

  const onSwitchChange = async () => {
    try {
      const updatedConfiguration = { ...configuration };
      updatedConfiguration.enabled = !updatedConfiguration.enabled;

      await updateAuditLogging(props.coreStart.http, updatedConfiguration);

      setConfiguration(updatedConfiguration);
    } catch (e) {
      console.error(e);
    }
  };

  React.useEffect(() => {
    const fetchData = async () => {
      try {
        const auditLogging = await getAuditLogging(props.coreStart.http);
        setConfiguration(auditLogging);
      } catch (e) {
        // TODO: switch to better error handling.
        console.log(e);
      }
    };

    fetchData();
  }, [props.coreStart.http, props.fromType]);

  const statusPanel = renderStatusPanel(onSwitchChange, configuration.enabled || false);

  let content;

  if (!configuration.enabled) {
    content = statusPanel;
  } else {
    content = (
      <>
        {statusPanel}
        <EuiSpacer />

        <EuiPanel>
          <EuiFlexGroup>
            <EuiFlexItem>
              <EuiTitle>
                <h3>General settings</h3>
              </EuiTitle>
            </EuiFlexItem>
            <EuiFlexItem grow={false}>
              <EuiButton
                data-test-subj="general-settings-configure"
                onClick={() => {
                  window.location.href =
                    buildHashUrl(ResourceType.auditLogging) + SUB_URL_FOR_GENERAL_SETTINGS_EDIT;
                }}
              >
                Configure
              </EuiButton>
            </EuiFlexItem>
          </EuiFlexGroup>
          <EuiHorizontalRule margin="m" />
          {renderGeneralSettings(configuration)}
        </EuiPanel>

        <EuiSpacer />

        <EuiPanel>
          <EuiFlexGroup>
            <EuiFlexItem>
              <EuiTitle>
                <h3>Compliance settings</h3>
              </EuiTitle>
            </EuiFlexItem>
            <EuiFlexItem grow={false}>
              <EuiButton
                data-test-subj="compliance-settings-configure"
                onClick={() => {
                  window.location.href =
                    buildHashUrl(ResourceType.auditLogging) + SUB_URL_FOR_COMPLIANCE_SETTINGS_EDIT;
                }}
              >
                Configure
              </EuiButton>
            </EuiFlexItem>
          </EuiFlexGroup>

          <EuiHorizontalRule margin="m" />
          {renderComplianceSettings(configuration)}
        </EuiPanel>
      </>
    );
  }

  return <div className="panel-restrict-width">{content}</div>;
}