AlertSiteUrlUndefined.tsx 985 B

123456789101112131415161718192021222324252627282930313233343536
  1. import type { JSX } from 'react';
  2. import { useTranslation } from 'next-i18next';
  3. import { useSiteUrl } from '~/states/global';
  4. const isValidUrl = (str: string): boolean => {
  5. try {
  6. // eslint-disable-next-line no-new
  7. new URL(str);
  8. return true;
  9. } catch {
  10. return false;
  11. }
  12. };
  13. export const AlertSiteUrlUndefined = (): JSX.Element => {
  14. const { t } = useTranslation('commons');
  15. const siteUrl = useSiteUrl();
  16. if (typeof siteUrl === 'string' && isValidUrl(siteUrl)) {
  17. return <></>;
  18. }
  19. return (
  20. <div className="alert alert-danger rounded-0 d-edit-none mb-0 px-4 py-2">
  21. <span className="material-symbols-outlined">error</span>
  22. {t('alert.siteUrl_is_not_set', { link: t('headers.app_settings') })}{' '}
  23. &gt;&gt;{' '}
  24. <a href="/admin/app">
  25. {t('headers.app_settings')}
  26. <span className="material-symbols-outlined">login</span>
  27. </a>
  28. </div>
  29. );
  30. };
  31. AlertSiteUrlUndefined.displayName = 'AlertSiteUrlUndefined';