aboutsummaryrefslogtreecommitdiffstats
path: root/apps/Notes/helpers/export.js
diff options
context:
space:
mode:
authorGravatar piotrruss <mail@pruss.it> 2021-08-21 00:24:01 +0200
committerGravatar piotrruss <mail@pruss.it> 2021-08-21 00:24:01 +0200
commita9d3686ccc496044cfdee013ccfbece955793052 (patch)
tree52b7772720ff89b1b6f20070a771776f0b3e9367 /apps/Notes/helpers/export.js
parent9f3c030a33edcf57eb832c500253044d107f6e25 (diff)
downloadmy_apps-a9d3686ccc496044cfdee013ccfbece955793052.tar.gz
my_apps-a9d3686ccc496044cfdee013ccfbece955793052.tar.bz2
my_apps-a9d3686ccc496044cfdee013ccfbece955793052.zip
icon focus, notes update timestamp, loading note
Diffstat (limited to 'apps/Notes/helpers/export.js')
-rw-r--r--apps/Notes/helpers/export.js32
1 files changed, 32 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'))
+ })
+}