import fetchJson from 'helpers/fetchJson' import JSZip from 'jszip' import saveFile from 'helpers/saveFile' import filename from '../helpers/fileName' export const handleSelect = (id, ids, setIds) => { ids.includes(id) ? setIds(ids.filter(i => i !== id)) : setIds([...ids, id]) } export const handleSelectAll = (e, notes, setIds) => { if (e.target.checked) { setIds(notes.map(n => n.noteId)) } else { setIds([]) } } export const handleExport = (e, ids, notes) => { e.preventDefault() const zip = new JSZip() Promise.all(ids.map(async id => { const title = notes.find(n => n.noteId === id).title const {content} = await fetchJson(`/api/note/${id}`) zip.folder('notes').file(filename(title), content, {binary: true}) })).then(() => { zip.generateAsync({type:"blob"}) .then(c => saveFile(c, 'notes.zip', 'application/zip')) }) }