V5PageMigration.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import React, { FC, useState } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import { V5PageMigrationModal } from './V5PageMigrationModal';
  4. import AdminAppContainer from '../../../client/services/AdminAppContainer';
  5. import { withUnstatedContainers } from '../../UnstatedUtils';
  6. import { toastSuccess, toastError } from '../../../client/util/apiNotification';
  7. type Props = {
  8. adminAppContainer: typeof AdminAppContainer & { v5PageMigrationHandler: () => Promise<{ isV5Compatible: boolean }> },
  9. }
  10. const V5PageMigration: FC<Props> = (props: Props) => {
  11. const [isV5PageMigrationModalShown, setIsV5PageMigrationModalShown] = useState(false);
  12. const { adminAppContainer } = props;
  13. const { t } = useTranslation();
  14. const onConfirm = async() => {
  15. setIsV5PageMigrationModalShown(false);
  16. try {
  17. const { isV5Compatible } = await adminAppContainer.v5PageMigrationHandler();
  18. if (isV5Compatible) {
  19. return toastSuccess(t('admin:v5_page_migration.already_upgraded'));
  20. }
  21. toastSuccess(t('admin:v5_page_migration.successfully_started'));
  22. }
  23. catch (err) {
  24. toastError(err);
  25. }
  26. };
  27. return (
  28. <>
  29. <V5PageMigrationModal
  30. isModalOpen={isV5PageMigrationModalShown}
  31. onConfirm={onConfirm}
  32. onCancel={() => setIsV5PageMigrationModalShown(false)}
  33. />
  34. <p className="card well">
  35. {t('admin:v5_page_migration.migration_desc')}
  36. <br />
  37. <br />
  38. <span className="text-danger">
  39. <i className="icon-exclamation icon-fw"></i>
  40. {t('admin:v5_page_migration.migration_note')}
  41. </span>
  42. </p>
  43. <div className="row my-3">
  44. <div className="mx-auto">
  45. <button type="button" className="btn btn-warning" onClick={() => setIsV5PageMigrationModalShown(true)}>Upgrade to v5</button>
  46. </div>
  47. </div>
  48. </>
  49. );
  50. };
  51. export default withUnstatedContainers(V5PageMigration, [AdminAppContainer]);