PersonalContainer.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { Container } from 'unstated';
  2. import loggerFactory from '~/utils/logger';
  3. import { apiv3Put } from '../util/apiv3-client';
  4. // eslint-disable-next-line no-unused-vars
  5. const logger = loggerFactory('growi:services:PersonalContainer');
  6. /**
  7. * Service container for personal settings page (PersonalSettings.jsx)
  8. * @extends {Container} unstated Container
  9. */
  10. export default class PersonalContainer extends Container {
  11. constructor(appContainer) {
  12. super();
  13. this.appContainer = appContainer;
  14. this.state = {
  15. retrieveError: null,
  16. name: '',
  17. email: '',
  18. isEmailPublished: false,
  19. lang: 'en_US',
  20. isGravatarEnabled: false,
  21. externalAccounts: [],
  22. apiToken: '',
  23. slackMemberId: '',
  24. };
  25. }
  26. /**
  27. * Workaround for the mangling in production build to break constructor.name
  28. */
  29. static getClassName() {
  30. return 'PersonalContainer';
  31. }
  32. /**
  33. * Disassociate LDAP account
  34. */
  35. async disassociateLdapAccount(account) {
  36. try {
  37. await apiv3Put('/personal-setting/disassociate-ldap', account);
  38. }
  39. catch (err) {
  40. this.setState({ retrieveError: err });
  41. logger.error(err);
  42. throw new Error('Failed to disassociate ldap account');
  43. }
  44. }
  45. }