AdminSlackIntegrationLegacyContainer.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. retrieveError: null,
  14. selectSlackOption: 'Incoming Webhooks',
  15. webhookUrl: this.dummyWebhookUrl,
  16. isIncomingWebhookPrioritized: false,
  17. slackToken: '',
  18. };
  19. }
  20. /**
  21. * Workaround for the mangling in production build to break constructor.name
  22. */
  23. static getClassName() {
  24. return 'AdminSlackIntegrationLegacyContainer';
  25. }
  26. /**
  27. * Retrieve notificationData
  28. */
  29. async retrieveNotificationData() {
  30. const response = await this.appContainer.apiv3.get('/slack-integration-legacy-settings/');
  31. const { slackIntegrationParams } = response.data;
  32. this.setState({
  33. webhookUrl: slackIntegrationParams.webhookUrl,
  34. isIncomingWebhookPrioritized: slackIntegrationParams.isIncomingWebhookPrioritized,
  35. slackToken: slackIntegrationParams.slackToken,
  36. });
  37. }
  38. /**
  39. * Switch slackOption
  40. */
  41. switchSlackOption(slackOption) {
  42. this.setState({ selectSlackOption: slackOption });
  43. }
  44. /**
  45. * Change webhookUrl
  46. */
  47. changeWebhookUrl(webhookUrl) {
  48. this.setState({ webhookUrl });
  49. }
  50. /**
  51. * Switch incomingWebhookPrioritized
  52. */
  53. switchIsIncomingWebhookPrioritized() {
  54. this.setState({ isIncomingWebhookPrioritized: !this.state.isIncomingWebhookPrioritized });
  55. }
  56. /**
  57. * Change slackToken
  58. */
  59. changeSlackToken(slackToken) {
  60. this.setState({ slackToken });
  61. }
  62. /**
  63. * Update slackAppConfiguration
  64. * @memberOf SlackAppConfiguration
  65. */
  66. async updateSlackAppConfiguration() {
  67. const response = await this.appContainer.apiv3.put('/slack-integration-legacy-settings/', {
  68. webhookUrl: this.state.webhookUrl,
  69. isIncomingWebhookPrioritized: this.state.isIncomingWebhookPrioritized,
  70. slackToken: this.state.slackToken,
  71. });
  72. return response;
  73. }
  74. }