aboutsummaryrefslogtreecommitdiffstats
path: root/apps/Notes/helpers
diff options
context:
space:
mode:
authorGravatar piotrruss <mail@pruss.it> 2021-08-16 21:22:32 +0200
committerGravatar piotrruss <mail@pruss.it> 2021-08-16 21:24:42 +0200
commiteb28244fc8f98e28728c7b3f951e102b9cc56590 (patch)
tree76237e414671730371f87c8e263a18c2d2e8c17f /apps/Notes/helpers
parentb43d34c0136552cd2d83258fb5523bb873177908 (diff)
downloadmy_apps-eb28244fc8f98e28728c7b3f951e102b9cc56590.tar.gz
my_apps-eb28244fc8f98e28728c7b3f951e102b9cc56590.tar.bz2
my_apps-eb28244fc8f98e28728c7b3f951e102b9cc56590.zip
styles moved to scss
Diffstat (limited to 'apps/Notes/helpers')
-rw-r--r--apps/Notes/helpers/import.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/apps/Notes/helpers/import.js b/apps/Notes/helpers/import.js
new file mode 100644
index 0000000..b05a458
--- /dev/null
+++ b/apps/Notes/helpers/import.js
@@ -0,0 +1,41 @@
+import fetchJson from 'lib/fetchJson'
+import {faCheck, faTimes} from '@fortawesome/free-solid-svg-icons'
+import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'
+
+export const state = s => s && <span><FontAwesomeIcon icon={s === 1 ? faCheck : faTimes} /></span>
+export const color = s => s && {color: s === 1 ? 'green' : 'brown'}
+
+const readFileAsText = (file) => new Promise((resolve,reject) => {
+ let fr = new FileReader()
+
+ fr.onload = () => resolve(fr.result)
+ fr.onerror = () => reject(fr)
+
+ fr.readAsText(file)
+})
+
+export const handleImport = async (e, files, mutateNotes, setDone) => {
+ e.preventDefault();
+
+ Array.from(files).forEach(async (file, i) => {
+ const title = file.name.replace(/\.[^/.]+$/, "")
+ const content = await readFileAsText(file);
+
+ try {
+ const notes = await fetchJson('/api/notes', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({title, content}),
+ })
+ if (i === files.length - 1) await mutateNotes(notes)
+ setDone((prev) => ({...prev, [i]: 1}))
+ } catch (e) {
+ setDone((prev) => ({...prev, [i]: 0}))
+ }
+ })
+}
+
+export const handleChange = (e, setFiles, setDone) => {
+ setFiles(e.currentTarget.files)
+ setDone([])
+}