import { FaPrint } from 'react-icons/fa'; import { clone } from 'lodash'; import { toast } from 'react-toastify'; import { useTranslation } from 'react-i18next'; import React, { memo, useContext, useEffect, useState } from 'react'; import download from 'downloadjs'; import firebase from 'gatsby-plugin-firebase'; import { useSelector } from '../../contexts/ResumeContext'; import BaseModal from '../BaseModal'; import Button from '../../components/shared/Button'; import ModalContext from '../../contexts/ModalContext'; import { b64toBlob } from '../../utils'; const ExportModal = () => { const state = useSelector(); const { t } = useTranslation(); const [open, setOpen] = useState(false); const [isLoadingSingle, setLoadingSingle] = useState(false); const [isLoadingMulti, setLoadingMulti] = useState(false); const { emitter, events } = useContext(ModalContext); useEffect(() => { const unbind = emitter.on(events.EXPORT_MODAL, () => setOpen(true)); return () => unbind(); }, [emitter, events]); const handleOpenPrintDialog = () => { if (typeof window !== `undefined`) { window && window.print(); } }; const handleDownload = async (isSinglePDF) => { isSinglePDF ? setLoadingSingle(true) : setLoadingMulti(true); try { const printResume = firebase.functions().httpsCallable('printResume'); const { data } = await printResume({ id: state.id, type: isSinglePDF ? 'single' : 'multi', }); const blob = b64toBlob(data, 'application/pdf'); download(blob, `RxResume-${state.id}.pdf`, 'application/pdf'); } catch (error) { toast(t('builder.toasts.printError')); } finally { isSinglePDF ? setLoadingSingle(false) : setLoadingMulti(false); } }; const handleExportToJson = () => { const backupObj = clone(state); delete backupObj.id; delete backupObj.user; delete backupObj.name; delete backupObj.createdAt; delete backupObj.updatedAt; const data = `data:text/json;charset=utf-8,${encodeURIComponent( JSON.stringify(backupObj, null, '\t'), )}`; download(data, `RxResume-${state.id}.json`, 'text/json'); }; return (
{t('modals.export.printDialog.heading')}

{t('modals.export.printDialog.text')}


{t('modals.export.downloadPDF.heading')}

{t('modals.export.downloadPDF.text')}


{t('modals.export.jsonFormat.heading')}

{t('modals.export.jsonFormat.text')}

{t('modals.export.jsonFormat.button')}
); }; export default memo(ExportModal);