ManageExternalAccount.jsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import React, { Fragment } from 'react';
  2. import PropTypes from 'prop-types';
  3. import { useTranslation } from 'next-i18next';
  4. import AdminExternalAccountsContainer from '~/client/services/AdminExternalAccountsContainer';
  5. import AppContainer from '~/client/services/AppContainer';
  6. import { toastError } from '~/client/util/apiNotification';
  7. import PaginationWrapper from '../PaginationWrapper';
  8. import { withUnstatedContainers } from '../UnstatedUtils';
  9. import ExternalAccountTable from './Users/ExternalAccountTable';
  10. class ManageExternalAccount extends React.Component {
  11. constructor(props) {
  12. super(props);
  13. this.handleExternalAccountPage = this.handleExternalAccountPage.bind(this);
  14. }
  15. UNSAFE_UNSAFE_componentWillMount() {
  16. this.handleExternalAccountPage(1);
  17. }
  18. async handleExternalAccountPage(selectedPage) {
  19. try {
  20. await this.props.adminExternalAccountsContainer.retrieveExternalAccountsByPagingNum(selectedPage);
  21. }
  22. catch (err) {
  23. toastError(err);
  24. }
  25. }
  26. render() {
  27. const { t, adminExternalAccountsContainer } = this.props;
  28. const { activePage, totalAccounts, pagingLimit } = adminExternalAccountsContainer.state;
  29. const pager = (
  30. <PaginationWrapper
  31. activePage={activePage}
  32. changePage={this.handleExternalAccountPage}
  33. totalItemsCount={totalAccounts}
  34. pagingLimit={pagingLimit}
  35. align="center"
  36. size="sm"
  37. />
  38. );
  39. return (
  40. <Fragment>
  41. <p>
  42. <a className="btn btn-outline-secondary" href="/admin/users">
  43. <i className="icon-fw ti-arrow-left" aria-hidden="true"></i>
  44. {t('admin:user_management.back_to_user_management')}
  45. </a>
  46. </p>
  47. <h2>{t('admin:user_management.external_account_list')}</h2>
  48. {(totalAccounts !== 0) ? (
  49. <>
  50. {pager}
  51. <ExternalAccountTable />
  52. {pager}
  53. </>
  54. )
  55. : (
  56. <>
  57. {t('admin:user_management.external_account_none')}
  58. </>
  59. )}
  60. </Fragment>
  61. );
  62. }
  63. }
  64. ManageExternalAccount.propTypes = {
  65. t: PropTypes.func.isRequired, // i18next
  66. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  67. adminExternalAccountsContainer: PropTypes.instanceOf(AdminExternalAccountsContainer).isRequired,
  68. };
  69. const ManageExternalAccountWrapperFC = (props) => {
  70. const { t } = useTranslation();
  71. return <ManageExternalAccount t={t} {...props} />;
  72. };
  73. const ManageExternalAccountWrapper = withUnstatedContainers(ManageExternalAccountWrapperFC, [AppContainer, AdminExternalAccountsContainer]);
  74. export default ManageExternalAccountWrapper;