AdminImportContainer.js 4.2 KB

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