DataTransferForm.tsx 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import React, { type JSX } from 'react';
  2. import { useTranslation } from 'next-i18next';
  3. import { useGenerateTransferKey } from '~/client/services/g2g-transfer';
  4. import { useGrowiDocumentationUrl } from '~/states/context';
  5. import CustomCopyToClipBoard from './Common/CustomCopyToClipBoard';
  6. const DataTransferForm = (): JSX.Element => {
  7. const { t } = useTranslation('commons');
  8. const { transferKey, generateTransferKey } = useGenerateTransferKey();
  9. const 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
  18. type="button"
  19. className="btn btn-primary w-100"
  20. onClick={generateTransferKey}
  21. >
  22. {t('g2g_data_transfer.publish_transfer_key')}
  23. </button>
  24. </div>
  25. <div className="col-md-12 mt-2">
  26. <div className="d-flex">
  27. <input
  28. className="form-control"
  29. type="text"
  30. value={transferKey}
  31. readOnly
  32. />
  33. <CustomCopyToClipBoard
  34. textToBeCopied={transferKey}
  35. message="copied_to_clipboard"
  36. />
  37. </div>
  38. </div>
  39. </div>
  40. <div className="alert alert-warning mt-4">
  41. <p className="mb-1">{t('g2g_data_transfer.transfer_key_limit')}</p>
  42. <p className="mb-1">{t('g2g_data_transfer.once_transfer_key_used')}</p>
  43. <p
  44. className="mb-0"
  45. // biome-ignore lint/security/noDangerouslySetInnerHtml: translation contains HTML link
  46. dangerouslySetInnerHTML={{
  47. __html: t('g2g_data_transfer.transfer_to_growi_cloud', {
  48. documentationUrl,
  49. }),
  50. }}
  51. />
  52. </div>
  53. </div>
  54. );
  55. };
  56. export default DataTransferForm;