DataTransferForm.tsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React from 'react';
  2. import { useTranslation } from 'next-i18next';
  3. import { useGenerateTransferKey } from '~/client/services/g2g-transfer';
  4. import { useGrowiDocumentationUrl } from '~/stores-universal/context';
  5. import CustomCopyToClipBoard from './Common/CustomCopyToClipBoard';
  6. const DataTransferForm = (): JSX.Element => {
  7. const { t } = useTranslation('commons');
  8. const { transferKey, generateTransferKey } = useGenerateTransferKey();
  9. const { data: documentationUrl } = useGrowiDocumentationUrl();
  10. return (
  11. <div data-testid="installerForm" className="py-3 px-4">
  12. <p className="text-white fs-5 mt-2">
  13. <strong>{ t('g2g_data_transfer.transfer_data_to_this_growi')}</strong>
  14. </p>
  15. <div className="row mt-3">
  16. <div className="col-md-12">
  17. <button type="button" className="btn btn-primary w-100" onClick={generateTransferKey}>
  18. {t('g2g_data_transfer.publish_transfer_key')}
  19. </button>
  20. </div>
  21. <div className="col-md-12 mt-2">
  22. <div className="d-flex">
  23. <input className="form-control" type="text" value={transferKey} readOnly />
  24. <CustomCopyToClipBoard textToBeCopied={transferKey} message="copied_to_clipboard" />
  25. </div>
  26. </div>
  27. </div>
  28. <div className="alert alert-warning mt-4">
  29. <p className="mb-1">{t('g2g_data_transfer.transfer_key_limit')}</p>
  30. <p className="mb-1">{t('g2g_data_transfer.once_transfer_key_used')}</p>
  31. <p
  32. className="mb-0"
  33. // eslint-disable-next-line react/no-danger
  34. dangerouslySetInnerHTML={{
  35. __html: t('g2g_data_transfer.transfer_to_growi_cloud', { documentationUrl }),
  36. }}
  37. />
  38. </div>
  39. </div>
  40. );
  41. };
  42. export default DataTransferForm;