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