|
|
@@ -1,11 +1,12 @@
|
|
|
/* eslint-disable react/prop-types */
|
|
|
-import React, { useState } from 'react';
|
|
|
+import React, { useState, useCallback } from 'react';
|
|
|
import PropTypes from 'prop-types';
|
|
|
import { useTranslation } from 'react-i18next';
|
|
|
import { CopyToClipboard } from 'react-copy-to-clipboard';
|
|
|
|
|
|
import { SlackbotType } from '@growi/slack';
|
|
|
|
|
|
+import { Tooltip } from 'reactstrap';
|
|
|
import loggerFactory from '~/utils/logger';
|
|
|
|
|
|
import { withUnstatedContainers } from '../../UnstatedUtils';
|
|
|
@@ -115,6 +116,31 @@ const RegisteringProxyUrlProcess = () => {
|
|
|
);
|
|
|
};
|
|
|
|
|
|
+// To get different messages for each copy happend, wrapping CopyToClipBoard and Tooltip together
|
|
|
+const CustomCopyToClipBoard = (props) => {
|
|
|
+ const { t } = useTranslation();
|
|
|
+ const [tooltipOpen, setTooltipOpen] = useState(false);
|
|
|
+
|
|
|
+ const showToolTip = useCallback(() => {
|
|
|
+ setTooltipOpen(true);
|
|
|
+ setTimeout(() => {
|
|
|
+ setTooltipOpen(false);
|
|
|
+ }, 1000);
|
|
|
+ }, []);
|
|
|
+ return (
|
|
|
+ <>
|
|
|
+ <CopyToClipboard text={props.textToBeCopied || ''} onCopy={showToolTip}>
|
|
|
+ <div className="btn input-group-text" id="tooltipTarget">
|
|
|
+ <i className="fa fa-clipboard mx-1" aria-hidden="true"></i>
|
|
|
+ </div>
|
|
|
+ </CopyToClipboard>
|
|
|
+ <Tooltip target="tooltipTarget" fade={false} isOpen={tooltipOpen}>
|
|
|
+ {t(props.message)}
|
|
|
+ </Tooltip>
|
|
|
+ </>
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
const GeneratingTokensAndRegisteringProxyServiceProcess = withUnstatedContainers((props) => {
|
|
|
const { t } = useTranslation();
|
|
|
const { appContainer, slackAppIntegrationId } = props;
|
|
|
@@ -141,11 +167,7 @@ const GeneratingTokensAndRegisteringProxyServiceProcess = withUnstatedContainers
|
|
|
<div className="col-md-6">
|
|
|
<div className="input-group-prepend mx-1">
|
|
|
<input className="form-control" type="text" value={props.tokenPtoG || ''} readOnly />
|
|
|
- <CopyToClipboard text={props.tokenPtoG || ''} onCopy={() => toastSuccess(t('admin:slack_integration.copied_to_clipboard'))}>
|
|
|
- <div className="btn input-group-text">
|
|
|
- <i className="fa fa-clipboard mx-1" aria-hidden="true"></i>
|
|
|
- </div>
|
|
|
- </CopyToClipboard>
|
|
|
+ <CustomCopyToClipBoard textToBeCopied={props.tokenPtoG || ''} message="admin:slack_integration.copied_to_clipboard"></CustomCopyToClipBoard>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -154,11 +176,7 @@ const GeneratingTokensAndRegisteringProxyServiceProcess = withUnstatedContainers
|
|
|
<div className="col-md-6">
|
|
|
<div className="input-group-prepend mx-1">
|
|
|
<input className="form-control" type="text" value={props.tokenGtoP || ''} readOnly />
|
|
|
- <CopyToClipboard text={props.tokenGtoP || ''} onCopy={() => toastSuccess(t('admin:slack_integration.copied_to_clipboard'))}>
|
|
|
- <div className="btn input-group-text">
|
|
|
- <i className="fa fa-clipboard mx-1" aria-hidden="true"></i>
|
|
|
- </div>
|
|
|
- </CopyToClipboard>
|
|
|
+ <CustomCopyToClipBoard textToBeCopied={props.tokenGtoP || ''} message="admin:slack_integration.copied_to_clipboard"></CustomCopyToClipBoard>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -193,11 +211,7 @@ const GeneratingTokensAndRegisteringProxyServiceProcess = withUnstatedContainers
|
|
|
<div className="input-group align-items-center pl-2 mb-3">
|
|
|
<div className="input-group-prepend w-75">
|
|
|
<input className="form-control" type="text" value={props.growiUrl} readOnly />
|
|
|
- <CopyToClipboard text={props.growiUrl} onCopy={() => toastSuccess(t('admin:slack_integration.copied_to_clipboard'))}>
|
|
|
- <div className="btn input-group-text">
|
|
|
- <i className="fa fa-clipboard mx-1" aria-hidden="true"></i>
|
|
|
- </div>
|
|
|
- </CopyToClipboard>
|
|
|
+ <CustomCopyToClipBoard textToBeCopied={props.growiUrl} message="admin:slack_integration.copied_to_clipboard"></CustomCopyToClipBoard>
|
|
|
</div>
|
|
|
</div>
|
|
|
|