import styles from '../Notes.module.scss' import React, {useState} from 'react' import useNotes from '../hooks/useNotes' import fetchJson from 'lib/fetchJson' import JSZip from 'jszip' import saveFile from 'helpers/saveFile' import filename from '../helpers/fileName' // import {state, color, handleImport, handleChange} from '../helpers/import' const Export = ({setAction}) => { const {notes} = useNotes() const [ids, setIds] = useState(notes.map(n => n.noteId)) // const [files, setFiles] = useState() // const [done, setDone] = useState([]) const handleSelect = id => { ids.includes(id) ? setIds(ids.filter(i => i !== id)) : setIds([...ids, id]) } const handleSelectAll = e => { if (e.target.checked) { setIds(notes.map(n => n.noteId)) } else { setIds([]) } } const handleExport = e => { 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')) }) } if (!notes) return null return (
{setAction('')}}>Back

Click to export your notes:

Notes to export:

{notes.map(note => (
handleSelect(note.noteId)} />
))}
) } export default Export