AdminSlackIntegrationLegacyContainer.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import { isServer } from '@growi/core/dist/utils';
  2. import { Container } from 'unstated';
  3. import { apiv3Get, apiv3Put } from '../util/apiv3-client';
  4. /**
  5. * Service container for admin LegacySlackIntegration setting page (LegacySlackIntegration.jsx)
  6. * @extends {Container} unstated Container
  7. */
  8. export default class AdminSlackIntegrationLegacyContainer extends Container {
  9. constructor(appContainer) {
  10. super();
  11. if (isServer()) {
  12. return;
  13. }
  14. this.appContainer = appContainer;
  15. this.state = {
  16. isSlackbotConfigured: false,
  17. retrieveError: null,
  18. selectSlackOption: 'Incoming Webhooks',
  19. webhookUrl: '',
  20. isIncomingWebhookPrioritized: false,
  21. slackToken: '',
  22. };
  23. }
  24. /**
  25. * Workaround for the mangling in production build to break constructor.name
  26. */
  27. static getClassName() {
  28. return 'AdminSlackIntegrationLegacyContainer';
  29. }
  30. /**
  31. * Retrieve notificationData
  32. */
  33. async retrieveData() {
  34. const response = await apiv3Get('/slack-integration-legacy-settings/');
  35. const { slackIntegrationParams } = response.data;
  36. this.setState({
  37. isSlackbotConfigured: slackIntegrationParams.isSlackbotConfigured,
  38. webhookUrl: slackIntegrationParams.webhookUrl,
  39. isIncomingWebhookPrioritized:
  40. slackIntegrationParams.isIncomingWebhookPrioritized,
  41. slackToken: slackIntegrationParams.slackToken,
  42. });
  43. }
  44. /**
  45. * Switch slackOption
  46. */
  47. switchSlackOption(slackOption) {
  48. this.setState({ selectSlackOption: slackOption });
  49. }
  50. /**
  51. * Change webhookUrl
  52. */
  53. changeWebhookUrl(webhookUrl) {
  54. this.setState({ webhookUrl });
  55. }
  56. /**
  57. * Switch incomingWebhookPrioritized
  58. */
  59. switchIsIncomingWebhookPrioritized() {
  60. this.setState({
  61. isIncomingWebhookPrioritized: !this.state.isIncomingWebhookPrioritized,
  62. });
  63. }
  64. /**
  65. * Change slackToken
  66. */
  67. changeSlackToken(slackToken) {
  68. this.setState({ slackToken });
  69. }
  70. /**
  71. * Update slackAppConfiguration
  72. * @memberOf SlackAppConfiguration
  73. */
  74. async updateSlackAppConfiguration() {
  75. const response = await apiv3Put('/slack-integration-legacy-settings/', {
  76. webhookUrl: this.state.webhookUrl,
  77. isIncomingWebhookPrioritized: this.state.isIncomingWebhookPrioritized,
  78. slackToken: this.state.slackToken,
  79. });
  80. return response;
  81. }
  82. }