AccessTokenSettings.jsx 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { useTranslation } from 'react-i18next';
  4. import { CopyToClipboard } from 'react-copy-to-clipboard';
  5. import { toastSuccess } from '../../../util/apiNotification';
  6. const AccessTokenSettings = (props) => {
  7. const { t } = useTranslation('admin');
  8. const onClickDiscardButton = () => {
  9. if (props.onClickDiscardButton != null) {
  10. props.onClickDiscardButton();
  11. }
  12. };
  13. const onClickGenerateToken = () => {
  14. if (props.onClickGenerateToken != null) {
  15. props.onClickGenerateToken();
  16. }
  17. };
  18. const accessToken = props.accessToken ? props.accessToken : '';
  19. return (
  20. <div className="row">
  21. <div className="col-lg-12">
  22. <h2 className="admin-setting-header">Access Token</h2>
  23. <div className="form-group row my-5">
  24. <label className="text-left text-md-right col-md-3 col-form-label">Access Token</label>
  25. <div className="col-md-6">
  26. {accessToken.length === 0 ? (
  27. <input className="form-control" type="text" value={accessToken} readOnly />
  28. ) : (
  29. <CopyToClipboard text={accessToken} onCopy={() => toastSuccess(t('slack_integration.copied_to_clipboard'))}>
  30. <input className="form-control" type="text" value={accessToken} readOnly />
  31. </CopyToClipboard>
  32. )}
  33. </div>
  34. </div>
  35. <div className="row">
  36. <div className="mx-auto">
  37. <button type="button" className="btn btn-outline-secondary text-nowrap mx-1" onClick={onClickDiscardButton} disabled={accessToken.length === 0}>
  38. {t('slack_integration.access_token_settings.discard')}
  39. </button>
  40. <button type="button" className="btn btn-primary text-nowrap mx-1" onClick={onClickGenerateToken}>
  41. {t('slack_integration.access_token_settings.generate')}
  42. </button>
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. );
  48. };
  49. AccessTokenSettings.propTypes = {
  50. accessToken: PropTypes.string,
  51. onClickDiscardButton: PropTypes.func,
  52. onClickGenerateToken: PropTypes.func,
  53. };
  54. export default AccessTokenSettings;