ManageExternalAccount.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import React, { useCallback, useEffect } from 'react';
  2. import { useTranslation } from 'next-i18next';
  3. import Link from 'next/link';
  4. import AdminExternalAccountsContainer from '~/client/services/AdminExternalAccountsContainer';
  5. import { toastError } from '~/client/util/toastr';
  6. import PaginationWrapper from '../PaginationWrapper';
  7. import { withUnstatedContainers } from '../UnstatedUtils';
  8. import ExternalAccountTable from './Users/ExternalAccountTable';
  9. type ManageExternalAccountProps = {
  10. adminExternalAccountsContainer: AdminExternalAccountsContainer,
  11. }
  12. const ManageExternalAccount = (props: ManageExternalAccountProps): JSX.Element => {
  13. const { t } = useTranslation();
  14. const { adminExternalAccountsContainer } = props;
  15. const { activePage, totalAccounts, pagingLimit } = adminExternalAccountsContainer.state;
  16. const externalAccountPageHandler = useCallback(async(selectedPage) => {
  17. try {
  18. await adminExternalAccountsContainer.retrieveExternalAccountsByPagingNum(selectedPage);
  19. }
  20. catch (err) {
  21. toastError(err);
  22. }
  23. }, [adminExternalAccountsContainer]);
  24. // for Next routing
  25. useEffect(() => {
  26. externalAccountPageHandler(1);
  27. }, [externalAccountPageHandler]);
  28. const pager = (
  29. <PaginationWrapper
  30. activePage={activePage}
  31. changePage={externalAccountPageHandler}
  32. totalItemsCount={totalAccounts}
  33. pagingLimit={pagingLimit}
  34. align="center"
  35. size="sm"
  36. />
  37. );
  38. return (
  39. <>
  40. <p>
  41. <Link
  42. href="/admin/users"
  43. prefetch={false}
  44. className="btn btn-outline-secondary"
  45. >
  46. <i className="icon-fw ti ti-arrow-left" aria-hidden="true"></i>
  47. {t('admin:user_management.back_to_user_management')}
  48. </Link>
  49. </p>
  50. <h2>{t('admin:user_management.external_account_list')}</h2>
  51. {(totalAccounts !== 0) ? (
  52. <>
  53. {pager}
  54. <ExternalAccountTable />
  55. {pager}
  56. </>
  57. )
  58. : (
  59. <>
  60. { t('admin:user_management.external_account_none') }
  61. </>
  62. )
  63. }
  64. </>
  65. );
  66. };
  67. const ManageExternalAccountWrapper = withUnstatedContainers(ManageExternalAccount, [AdminExternalAccountsContainer]);
  68. export default ManageExternalAccountWrapper;