summaryrefslogtreecommitdiff
path: root/animism-align/frontend/api/crud.upload.js
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-07-22 14:05:15 +0200
committerJules Laplace <julescarbon@gmail.com>2020-07-22 14:05:15 +0200
commitef78bc6a084f92b4794e987b5832240d85b6479e (patch)
treeb314b630800db6aa60f28ef0b115625e6ca176db /animism-align/frontend/api/crud.upload.js
parent85d4cb9addf9ca887d3440b2786665d67d9917c4 (diff)
refactor app using babel module-resolver
Diffstat (limited to 'animism-align/frontend/api/crud.upload.js')
-rw-r--r--animism-align/frontend/api/crud.upload.js115
1 files changed, 0 insertions, 115 deletions
diff --git a/animism-align/frontend/api/crud.upload.js b/animism-align/frontend/api/crud.upload.js
deleted file mode 100644
index beec86c..0000000
--- a/animism-align/frontend/api/crud.upload.js
+++ /dev/null
@@ -1,115 +0,0 @@
-import { as_type } from './crud.types'
-
-export function crud_upload(type, data, dispatch) {
- return new Promise( (resolve, reject) => {
- // console.log(type, data)
- const { id } = data
-
- const fd = new FormData()
- if (!data.tag) {
- data.tag = 'misc'
- }
-
- Object.keys(data).forEach(key => {
- if (key.indexOf('__') !== -1) return
- if (key === 'id') return
- const fn_key = '__' + key + '_filename'
- if (fn_key in data) {
- fd.append(key, data[key], data[fn_key])
- } else {
- fd.append(key, data[key])
- }
- })
-
- let url = id ? '/api/v1/' + type + '/' + id + '/'
- : '/api/v1/' + type + '/'
- // console.log(url)
-
- const xhr = new XMLHttpRequest()
- xhr.upload.addEventListener("progress", uploadProgress, false)
- xhr.addEventListener("load", uploadComplete, false)
- xhr.addEventListener("error", uploadFailed, false)
- xhr.addEventListener("abort", uploadCancelled, false)
- xhr.open("POST", url)
- xhr.send(fd)
-
- dispatch && dispatch({ type: as_type(type, 'upload_loading')})
-
- let complete = false
-
- function uploadProgress (e) {
- if (e.lengthComputable) {
- const percent = Math.round(e.loaded * 100 / e.total) || 0
- if (percent > 99) {
- dispatch && dispatch({
- type: as_type(type, 'upload_waiting'),
- percent,
- [type]: id,
- })
- } else {
- dispatch && dispatch({
- type: as_type(type, 'upload_progress'),
- percent,
- [type]: id,
- })
- }
- }
- else {
- dispatch && dispatch({
- type: as_type(type, 'upload_error'),
- error: 'unable to compute upload progress',
- [type]: id,
- })
- }
- }
-
- function uploadComplete (e) {
- let parsed;
- try {
- parsed = JSON.parse(e.target.responseText)
- } catch (e) {
- dispatch && dispatch({
- type: as_type(type, 'upload_error'),
- error: 'upload failed',
- [type]: id,
- })
- reject(e)
- return
- }
- dispatch && dispatch({
- type: as_type(type, 'upload_complete'),
- data: parsed,
- [type]: id,
- })
- if (parsed.res) {
- (parsed.res.length ? parsed.res : [parsed.res]).forEach(file => {
- dispatch && dispatch({
- type: as_type('upload', 'create'),
- data: { res: file },
- })
- })
- }
- resolve(parsed)
- }
-
- function uploadFailed (evt) {
- dispatch && dispatch({
- type: as_type(type, 'upload_error'),
- error: 'upload failed',
- [type]: id,
- })
- reject(evt)
- }
-
- function uploadCancelled (evt) {
- dispatch && dispatch({
- type: as_type(type, 'upload_error'),
- error: 'upload cancelled',
- [type]: id,
- })
- reject(evt)
- }
- })
-}
-
-export const upload_action = (type, data) => dispatch => crud_upload(type, data, dispatch)