import {Fragment} from 'react';

import LoadingIndicator from 'sentry/components/loadingIndicator';
import {t} from 'sentry/locale';
import {useApiQuery} from 'sentry/utils/queryClient';

type Data = {
  groups: [groupName: string, grouppedWarnings: string[]][];
  warnings: string[];
};

function AdminWarnings() {
  const {data, isLoading, isError} = useApiQuery<Data>(['/internal/warnings/'], {
    staleTime: 0,
  });

  if (isLoading) {
    return <LoadingIndicator />;
  }

  if (!data || isError) {
    return null;
  }

  const {groups, warnings} = data;

  return (
    <div>
      <h3>{t('System Warnings')}</h3>
      {!warnings && !groups && t('There are no warnings at this time')}

      {groups.map(([groupName, groupedWarnings]) => (
        <Fragment key={groupName}>
          <h4>{groupName}</h4>
          <ul>
            {groupedWarnings.map((warning, i) => (
              <li key={i}>{warning}</li>
            ))}
          </ul>
        </Fragment>
      ))}

      {warnings.length > 0 && (
        <Fragment>
          <h4>{t('Miscellaneous')}</h4>
          <ul>
            {warnings.map((warning, i) => (
              <li key={i}>{warning}</li>
            ))}
          </ul>
        </Fragment>
      )}
    </div>
  );
}

export default AdminWarnings;