ExportModal.jsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import React from "react";
  2. import { useTranslation } from "react-i18next";
  3. import useSession from "../../hooks/useSession";
  4. import { useItems, useBoardConfig, useMessage } from "react-sync-board";
  5. import DownloadLink from "./DownloadLink";
  6. import Modal from "../../components/ui/Modal";
  7. const ExportModal = ({ show, setShow }) => {
  8. const { t } = useTranslation();
  9. const { gameId, availableItems } = useSession();
  10. const items = useItems();
  11. const [boardConfig] = useBoardConfig();
  12. const { messages } = useMessage();
  13. const getSession = React.useCallback(() => {
  14. const currentSession = {
  15. items: items,
  16. board: boardConfig,
  17. availableItems: availableItems,
  18. messages: messages.slice(-50),
  19. timestamp: Date.now(),
  20. gameId: gameId,
  21. };
  22. return currentSession;
  23. }, [availableItems, boardConfig, gameId, items, messages]);
  24. return (
  25. <Modal title={t("Save game")} setShow={setShow} show={show}>
  26. <header>
  27. <h3>{t("Want to continue later?")}</h3>
  28. </header>
  29. <section>
  30. <p>
  31. {t(
  32. "You can save the current session on your computer to load it later!"
  33. )}
  34. </p>
  35. <DownloadLink getData={getSession} />
  36. </section>
  37. </Modal>
  38. );
  39. };
  40. export default ExportModal;