AdminSlackIntegrationLegacyContainer.js 2.3 KB

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