MaintenanceModeContent.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { useTranslation } from 'react-i18next';
  4. import AppContainer from '~/client/services/AppContainer';
  5. import { toastError } from '~/client/util/apiNotification';
  6. import { withUnstatedContainers } from './UnstatedUtils';
  7. const MaintenanceModeContent = (props) => {
  8. const { t } = useTranslation();
  9. const { appContainer } = props;
  10. const isUserLoggedIn = appContainer.currentUser != null;
  11. const logoutHandler = async() => {
  12. try {
  13. appContainer.apiv3Post('/logout');
  14. window.location.reload();
  15. }
  16. catch (err) {
  17. toastError(err);
  18. }
  19. };
  20. return (
  21. <div className="text-left">
  22. <p>
  23. <i className="icon-arrow-right"></i>
  24. <a href="/admin">{ t('maintenance_mode.admin_page') }</a>
  25. </p>
  26. {isUserLoggedIn
  27. ? (
  28. <p>
  29. <i className="icon-arrow-right"></i>
  30. <a href="#" onClick={logoutHandler} id="maintanounse-mode-logout">{ t('maintenance_mode.logout') }</a>
  31. </p>
  32. )
  33. : (
  34. <p>
  35. <i className="icon-arrow-right"></i>
  36. <a href="/login">{ t('maintenance_mode.login') }</a>
  37. </p>
  38. )
  39. }
  40. </div>
  41. );
  42. };
  43. MaintenanceModeContent.propTypes = {
  44. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  45. };
  46. export default withUnstatedContainers(MaintenanceModeContent, [AppContainer]);