aboutsummaryrefslogtreecommitdiffstats
path: root/apps/Notes/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'apps/Notes/helpers')
-rw-r--r--apps/Notes/helpers/export.js32
-rw-r--r--apps/Notes/helpers/noteActions.js1
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 {