diff options
Diffstat (limited to 'apps/Notes/helpers')
-rw-r--r-- | apps/Notes/helpers/export.js | 32 | ||||
-rw-r--r-- | apps/Notes/helpers/noteActions.js | 1 |
2 files changed, 33 insertions, 0 deletions
diff --git a/apps/Notes/helpers/export.js b/apps/Notes/helpers/export.js new file mode 100644 index 0000000..011dc18 --- /dev/null +++ b/apps/Notes/helpers/export.js @@ -0,0 +1,32 @@ +import fetchJson from 'lib/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')) + }) +} diff --git a/apps/Notes/helpers/noteActions.js b/apps/Notes/helpers/noteActions.js index 9588150..7b51e20 100644 --- a/apps/Notes/helpers/noteActions.js +++ b/apps/Notes/helpers/noteActions.js @@ -1,5 +1,6 @@ import fetchJson from 'lib/fetchJson' import filename from '../helpers/fileName' +import saveFile from 'helpers/saveFile' export const getNote = async (note, setFetchedNote, setPopup, callback) => { try { |