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: slackIntegrationParams.isIncomingWebhookPrioritized,
  40. slackToken: slackIntegrationParams.slackToken,
  41. });
  42. }
  43. /**
  44. * Switch slackOption
  45. */
  46. switchSlackOption(slackOption) {
  47. this.setState({ selectSlackOption: slackOption });
  48. }
  49. /**
  50. * Change webhookUrl
  51. */
  52. changeWebhookUrl(webhookUrl) {
  53. this.setState({ webhookUrl });
  54. }
  55. /**
  56. * Switch incomingWebhookPrioritized
  57. */
  58. switchIsIncomingWebhookPrioritized() {
  59. this.setState({ isIncomingWebhookPrioritized: !this.state.isIncomingWebhookPrioritized });
  60. }
  61. /**
  62. * Change slackToken
  63. */
  64. changeSlackToken(slackToken) {
  65. this.setState({ slackToken });
  66. }
  67. /**
  68. * Update slackAppConfiguration
  69. * @memberOf SlackAppConfiguration
  70. */
  71. async updateSlackAppConfiguration() {
  72. const response = await apiv3Put('/slack-integration-legacy-settings/', {
  73. webhookUrl: this.state.webhookUrl,
  74. isIncomingWebhookPrioritized: this.state.isIncomingWebhookPrioritized,
  75. slackToken: this.state.slackToken,
  76. });
  77. return response;
  78. }
  79. }