AdminImportContainer.js 4.5 KB

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