AdminExternalAccountsContainer.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import { Container } from 'unstated';
  2. import loggerFactory from '@alias/logger';
  3. // eslint-disable-next-line no-unused-vars
  4. const logger = loggerFactory('growi:services:UserGroupDetailContainer');
  5. /**
  6. * Service container for admin users page (Users.jsx)
  7. * @extends {Container} unstated Container
  8. */
  9. export default class AdminExternalAccountContainer extends Container {
  10. constructor(appContainer) {
  11. super();
  12. this.appContainer = appContainer;
  13. this.state = {
  14. exteranalAccounts: [],
  15. totalAccounts: 0,
  16. activePage: 1,
  17. pagingLimit: Infinity,
  18. };
  19. }
  20. /**
  21. * Workaround for the mangling in production build to break constructor.name
  22. */
  23. static getClassName() {
  24. return 'AdminExternalAccountsContainer';
  25. }
  26. /**
  27. * update external-account
  28. *
  29. * @memberOf AdminExternalAccountsContainer
  30. * @param {object} param update param for external account
  31. * @return {object} response object
  32. */
  33. async updateExternalAccount(param) {
  34. const res = await this.appContainer.apiv3.put(`/users/external-account/${this.state.externalAccounts._id}`, param);
  35. const { exteranalAccounts } = res.data;
  36. await this.setState({ exteranalAccounts });
  37. return res;
  38. }
  39. /**
  40. * syncExternalAccounts of selectedPage
  41. * @memberOf AdminExternalAccountsContainer
  42. * @param {number} selectedPage
  43. */
  44. async retrieveExternalAccountsByPagingNum(selectedPage) {
  45. const params = { page: selectedPage };
  46. const { data } = await this.appContainer.apiv3.get('/users/external-accounts', params);
  47. if (data.paginateResult == null) {
  48. throw new Error('data must conclude \'paginateResult\' property.');
  49. }
  50. const { docs: exteranalAccounts, totalDocs: totalAccounts, limit: pagingLimit } = data.paginateResult;
  51. this.setState({
  52. exteranalAccounts,
  53. totalAccounts,
  54. pagingLimit,
  55. activePage: selectedPage,
  56. });
  57. }
  58. /**
  59. * remove external account
  60. *
  61. * @memberOf AdminExternalAccountsContainer
  62. * @param {string} externalAccountId id of the External Account to be removed
  63. */
  64. async removeExternal(externalAccountId) {
  65. const res = await this.appContainer.apiv3.delete(`/users/external-accounts/${externalAccountId}/remove`);
  66. const externalAccountData = res.data.exteranalAccount;
  67. return externalAccountData;
  68. }
  69. }