AlertSiteUrlUndefined.tsx 957 B

1234567891011121314151617181920212223242526272829303132333435
  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. }
  10. catch {
  11. return false;
  12. }
  13. };
  14. export const AlertSiteUrlUndefined = (): JSX.Element => {
  15. const { t } = useTranslation('commons');
  16. const siteUrl = useSiteUrl();
  17. if (typeof siteUrl === 'string' && isValidUrl(siteUrl)) {
  18. return <></>;
  19. }
  20. return (
  21. <div className="alert alert-danger rounded-0 d-edit-none mb-0 px-4 py-2">
  22. <span className="material-symbols-outlined">error</span>
  23. {
  24. t('alert.siteUrl_is_not_set', { link: t('headers.app_settings') })
  25. } &gt;&gt; <a href="/admin/app">{t('headers.app_settings')}<span className="material-symbols-outlined">login</span></a>
  26. </div>
  27. );
  28. };
  29. AlertSiteUrlUndefined.displayName = 'AlertSiteUrlUndefined';