import axios from 'axios'; import { createFile } from './files'; const s3Bucket = `http://${process.env.S3_BUCKET}.s3.amazonaws.com/`; const ROOT_URL = location.href.indexOf('localhost') > 0 ? 'http://localhost:8000/api' : '/api'; export function dropzoneAcceptCallback(file, done) { return () => { file.postData = []; // eslint-disable-line axios.post(`${ROOT_URL}/S3/sign`, { name: file.name, type: file.type, size: file.size, // _csrf: document.getElementById('__createPostToken').value }, { withCredentials: true }) .then(response => { file.custom_status = 'ready'; // eslint-disable-line file.postData = response.data; // eslint-disable-line file.s3 = response.data.key; // eslint-disable-line file.previewTemplate.className += ' uploading'; // eslint-disable-line done(); }) .catch(response => { file.custom_status = 'rejected'; // eslint-disable-line if (response.data.responseText && response.data.responseText.message) { done(response.data.responseText.message); } done('error preparing the upload'); }); }; } export function dropzoneSendingCallback(file, xhr, formData) { return () => { Object.keys(file.postData).forEach(key => { formData.append(key, file.postData[key]); }); formData.append('Content-type', ''); formData.append('Content-length', ''); formData.append('acl', 'public-read'); }; } export function dropzoneCompleteCallback(file) { return (dispatch, getState) => { // eslint-disable-line let inputHidden = '`; // document.getElementById('uploader').appendChild(inputHidden); document.getElementById('uploader').innerHTML += inputHidden; const formParams = { name: file.name, url: `${s3Bucket}${file.postData.key}` }; createFile(formParams)(dispatch, getState); }; }