AdminSlackIntegrationLegacyContainer.js 2.3 KB

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