CustomBotNonProxySettings.jsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /* eslint-disable no-console */
  2. import React, { useState } from 'react';
  3. import PropTypes from 'prop-types';
  4. import { useTranslation } from 'react-i18next';
  5. import { withUnstatedContainers } from '../../UnstatedUtils';
  6. import AppContainer from '../../../services/AppContainer';
  7. import { toastSuccess, toastError } from '../../../util/apiNotification';
  8. import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow';
  9. const CustomBotNonProxySettings = (props) => {
  10. const { appContainer } = props;
  11. const { t } = useTranslation('admin');
  12. const [slackSigningSecret, setSlackSigningSecret] = useState('');
  13. const [slackBotToken, setSlackBotToken] = useState('');
  14. const botType = 'non-proxy'
  15. async function updateHandler() {
  16. try {
  17. // toastSuccess(t('toaster.update_successed'));
  18. const response = await appContainer.apiv3.put('/slack-integration/custom-bot-non-proxy', {
  19. slackSigningSecret,
  20. slackBotToken,
  21. botType,
  22. });
  23. toastSuccess(t('toaster.update_successed', { target: t('slack_integration.custom_bot_non_proxy_settings') }));
  24. }
  25. catch (err) {
  26. toastError(err);
  27. }
  28. }
  29. return (
  30. <>
  31. <div className="row my-5">
  32. <div className="mx-auto">
  33. <button type="button" className="btn btn-primary text-nowrap mx-1" onClick={() => window.open('https://api.slack.com/apps', '_blank')}>
  34. {t('slack_integration.non_proxy.create_bot')}
  35. </button>
  36. </div>
  37. </div>
  38. <div className="form-group row">
  39. <label className="text-left text-md-right col-md-3 col-form-label">Signing Secret</label>
  40. <div className="col-md-6">
  41. <input
  42. className="form-control"
  43. type="text"
  44. onChange={e => setSlackSigningSecret(e.target.value)}
  45. />
  46. </div>
  47. </div>
  48. <div className="form-group row mb-5">
  49. <label className="text-left text-md-right col-md-3 col-form-label">Bot User OAuth Token</label>
  50. <div className="col-md-6">
  51. <input
  52. className="form-control"
  53. type="text"
  54. onChange={e => setSlackBotToken(e.target.value)}
  55. />
  56. </div>
  57. </div>
  58. <AdminUpdateButtonRow onClick={updateHandler} disabled={false} />
  59. </>
  60. );
  61. }
  62. const CustomBotNonProxySettingsWrapper = withUnstatedContainers(CustomBotNonProxySettings, [AppContainer]);
  63. CustomBotNonProxySettings.propTypes = {
  64. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  65. };
  66. export default CustomBotNonProxySettingsWrapper;