AdminSlackIntegrationLegacyContainer.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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.state = {
  12. isSlackbotConfigured: false,
  13. retrieveError: null,
  14. selectSlackOption: 'Incoming Webhooks',
  15. webhookUrl: '',
  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 retrieveData() {
  30. const response = await apiv3Get('/slack-integration-legacy-settings/');
  31. const { slackIntegrationParams } = response.data;
  32. this.setState({
  33. isSlackbotConfigured: slackIntegrationParams.isSlackbotConfigured,
  34. webhookUrl: slackIntegrationParams.webhookUrl,
  35. isIncomingWebhookPrioritized: slackIntegrationParams.isIncomingWebhookPrioritized,
  36. slackToken: slackIntegrationParams.slackToken,
  37. });
  38. }
  39. /**
  40. * Switch slackOption
  41. */
  42. switchSlackOption(slackOption) {
  43. this.setState({ selectSlackOption: slackOption });
  44. }
  45. /**
  46. * Change webhookUrl
  47. */
  48. changeWebhookUrl(webhookUrl) {
  49. this.setState({ webhookUrl });
  50. }
  51. /**
  52. * Switch incomingWebhookPrioritized
  53. */
  54. switchIsIncomingWebhookPrioritized() {
  55. this.setState({ isIncomingWebhookPrioritized: !this.state.isIncomingWebhookPrioritized });
  56. }
  57. /**
  58. * Change slackToken
  59. */
  60. changeSlackToken(slackToken) {
  61. this.setState({ slackToken });
  62. }
  63. /**
  64. * Update slackAppConfiguration
  65. * @memberOf SlackAppConfiguration
  66. */
  67. async updateSlackAppConfiguration() {
  68. const response = await apiv3Put('/slack-integration-legacy-settings/', {
  69. webhookUrl: this.state.webhookUrl,
  70. isIncomingWebhookPrioritized: this.state.isIncomingWebhookPrioritized,
  71. slackToken: this.state.slackToken,
  72. });
  73. return response;
  74. }
  75. }