ApiErrorMessage.jsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. const ApiErrorMessage = (props) => {
  5. const {
  6. t, errorCode, errorMessage, linkPath,
  7. } = props;
  8. function renderMessageByErrorCode() {
  9. switch (errorCode) {
  10. case 'already_exists':
  11. return (
  12. <>
  13. <strong><i className="icon-fw icon-ban"></i>{ t('page_api_error.already_exists') }</strong>
  14. <small><a href={linkPath}>{linkPath} <i className="icon-login"></i></a></small>
  15. </>
  16. );
  17. default:
  18. return null;
  19. }
  20. }
  21. if (errorCode != null) {
  22. return (
  23. <span className="text-danger">
  24. {renderMessageByErrorCode()}
  25. </span>
  26. );
  27. }
  28. if (errorMessage != null) {
  29. return (
  30. <span className="text-danger">
  31. {errorMessage}
  32. </span>
  33. );
  34. }
  35. // render null if no error has occurred
  36. return null;
  37. // TODO GW-79 Set according to error message
  38. // <div>
  39. // <span className="text-danger msg msg-notfound_or_forbidden">
  40. // <strong><i className="icon-fw icon-ban"></i>{ t('page_api_error.notfound_or_forbidden') }</strong>
  41. // </span>
  42. // <span className="text-danger msg msg-user_not_admin">
  43. // <strong><i className="icon-fw icon-ban"></i>{ t('page_api_error.user_not_admin') }</strong>
  44. // </span>
  45. // <span className="text-warning msg msg-outdated">
  46. // <strong><i className="icon-fw icon-bulb"></i> { t('page_api_error.outdated') }</strong>
  47. // {/* <a href="javascript:location.reload();"> */}
  48. // <i className="fa fa-angle-double-right"></i> { t('Load latest') }
  49. // {/* </a> */}
  50. // </span>
  51. // <span className="text-danger msg msg-invalid_path">
  52. // <strong><i className="icon-fw icon-ban"></i> Invalid path</strong>
  53. // </span>
  54. // <span className="text-danger msg msg-unknown">
  55. // <strong><i className="icon-fw icon-ban"></i> Unknown error occured</strong>
  56. // </span>
  57. // </div>
  58. };
  59. ApiErrorMessage.propTypes = {
  60. t: PropTypes.func.isRequired, // i18next
  61. errorCode: PropTypes.string,
  62. errorMessage: PropTypes.string,
  63. linkPath: PropTypes.string,
  64. };
  65. export default withTranslation()(ApiErrorMessage);