ManageExternalAccount.tsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. <p>
  40. <Link
  41. href="/admin/users"
  42. prefetch={false}
  43. className="btn btn-outline-secondary"
  44. >
  45. <i className="icon-fw ti ti-arrow-left" aria-hidden="true"></i>
  46. {t('admin:user_management.back_to_user_management')}
  47. </Link>
  48. </p>
  49. <h2>{t('admin:user_management.external_account_list')}</h2>
  50. {(totalAccounts !== 0) ? (
  51. <>
  52. {pager}
  53. <ExternalAccountTable />
  54. {pager}
  55. </>
  56. )
  57. : (
  58. <>
  59. { t('admin:user_management.external_account_none') }
  60. </>
  61. )
  62. }
  63. </>;
  64. };
  65. const ManageExternalAccountWrapper = withUnstatedContainers(ManageExternalAccount, [AdminExternalAccountsContainer]);
  66. export default ManageExternalAccountWrapper;