AdminImportContainer.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import { Container } from 'unstated';
  2. import loggerFactory from '@alias/logger';
  3. import { toastSuccess, toastError } from '../util/apiNotification';
  4. const logger = loggerFactory('growi:appSettings');
  5. /**
  6. * Service container for admin app setting page (AppSettings.jsx)
  7. * @extends {Container} unstated Container
  8. */
  9. export default class AdminImportContainer extends Container {
  10. constructor(appContainer) {
  11. super();
  12. this.appContainer = appContainer;
  13. this.dummyEsaTeamName = 0;
  14. this.dummyEsaTeamNameForError = 1;
  15. this.state = {
  16. retrieveError: null,
  17. // set dummy value tile for using suspense
  18. esaTeamName: this.dummyEsaTeamName,
  19. esaAccessToken: '',
  20. qiitaTeamName: '',
  21. qiitaAccessToken: '',
  22. };
  23. this.esaHandleSubmit = this.esaHandleSubmit.bind(this);
  24. this.esaHandleSubmitTest = this.esaHandleSubmitTest.bind(this);
  25. this.esaHandleSubmitUpdate = this.esaHandleSubmitUpdate.bind(this);
  26. this.qiitaHandleSubmit = this.qiitaHandleSubmit.bind(this);
  27. this.qiitaHandleSubmitTest = this.qiitaHandleSubmitTest.bind(this);
  28. this.qiitaHandleSubmitUpdate = this.qiitaHandleSubmitUpdate.bind(this);
  29. this.handleInputValue = this.handleInputValue.bind(this);
  30. }
  31. /**
  32. * Workaround for the mangling in production build to break constructor.name
  33. */
  34. static getClassName() {
  35. return 'AdminImportContainer';
  36. }
  37. /**
  38. * retrieve app sttings data
  39. */
  40. async retrieveImportSettingsData() {
  41. const response = await this.appContainer.apiv3.get('/import/');
  42. const {
  43. importSettingsParams,
  44. } = response.data;
  45. this.setState({
  46. esaTeamName: importSettingsParams.esaTeamName,
  47. esaAccessToken: importSettingsParams.esaAccessToken,
  48. qiitaTeamName: importSettingsParams.qiitaTeamName,
  49. qiitaAccessToken: importSettingsParams.qiitaAccessToken,
  50. });
  51. }
  52. handleInputValue(event) {
  53. this.setState({
  54. [event.target.name]: event.target.value,
  55. });
  56. }
  57. async esaHandleSubmit() {
  58. try {
  59. const params = {
  60. 'importer:esa:team_name': this.state.esaTeamName,
  61. 'importer:esa:access_token': this.state.esaAccessToken,
  62. };
  63. await this.appContainer.apiPost('/admin/import/esa', params);
  64. toastSuccess('Import posts from esa success.');
  65. }
  66. catch (err) {
  67. logger.error(err);
  68. toastError(err, 'Error occurred in importing pages from esa.io');
  69. }
  70. }
  71. async esaHandleSubmitTest() {
  72. try {
  73. const params = {
  74. 'importer:esa:team_name': this.state.esaTeamName,
  75. 'importer:esa:access_token': this.state.esaAccessToken,
  76. };
  77. await this.appContainer.apiPost('/admin/import/testEsaAPI', params);
  78. toastSuccess('Test connection to esa success.');
  79. }
  80. catch (error) {
  81. toastError(error, 'Test connection to esa failed.');
  82. }
  83. }
  84. async esaHandleSubmitUpdate() {
  85. const params = {
  86. 'importer:esa:team_name': this.state.esaTeamName,
  87. 'importer:esa:access_token': this.state.esaAccessToken,
  88. };
  89. try {
  90. await this.appContainer.apiPost('/admin/settings/importerEsa', params);
  91. toastSuccess('Updated');
  92. }
  93. catch (err) {
  94. logger.error(err);
  95. toastError(err, 'Errors');
  96. }
  97. }
  98. async qiitaHandleSubmit() {
  99. try {
  100. const params = {
  101. 'importer:qiita:team_name': this.state.qiitaTeamName,
  102. 'importer:qiita:access_token': this.state.qiitaAccessToken,
  103. };
  104. await this.appContainer.apiPost('/admin/import/qiita', params);
  105. toastSuccess('Import posts from qiita:team success.');
  106. }
  107. catch (err) {
  108. logger.error(err);
  109. toastError(err, 'Error occurred in importing pages from qiita:team');
  110. }
  111. }
  112. async qiitaHandleSubmitTest() {
  113. try {
  114. const params = {
  115. 'importer:qiita:team_name': this.state.qiitaTeamName,
  116. 'importer:qiita:access_token': this.state.qiitaAccessToken,
  117. };
  118. await this.appContainer.apiPost('/admin/import/testQiitaAPI', params);
  119. toastSuccess('Test connection to qiita:team success.');
  120. }
  121. catch (err) {
  122. logger.error(err);
  123. toastError(err, 'Test connection to qiita:team failed.');
  124. }
  125. }
  126. async qiitaHandleSubmitUpdate() {
  127. const params = {
  128. 'importer:qiita:team_name': this.state.qiitaTeamName,
  129. 'importer:qiita:access_token': this.state.qiitaAccessToken,
  130. };
  131. try {
  132. await this.appContainer.apiPost('/admin/settings/importerQiita', params);
  133. toastSuccess('Updated');
  134. }
  135. catch (err) {
  136. logger.error(err);
  137. toastError(err, 'Errors');
  138. }
  139. }
  140. }