|
|
@ -9,6 +9,8 @@ import resizeImage from 'flavours/glitch/util/resize_image';
|
|
|
|
|
|
|
|
|
|
|
|
import { updateTimeline } from './timelines';
|
|
|
|
import { updateTimeline } from './timelines';
|
|
|
|
import { showAlertForError } from './alerts';
|
|
|
|
import { showAlertForError } from './alerts';
|
|
|
|
|
|
|
|
import { showAlert } from './alerts';
|
|
|
|
|
|
|
|
import { defineMessages } from 'react-intl';
|
|
|
|
|
|
|
|
|
|
|
|
let cancelFetchComposeSuggestionsAccounts;
|
|
|
|
let cancelFetchComposeSuggestionsAccounts;
|
|
|
|
|
|
|
|
|
|
|
@ -53,6 +55,10 @@ export const COMPOSE_UPLOAD_CHANGE_FAIL = 'COMPOSE_UPLOAD_UPDATE_FAIL';
|
|
|
|
|
|
|
|
|
|
|
|
export const COMPOSE_DOODLE_SET = 'COMPOSE_DOODLE_SET';
|
|
|
|
export const COMPOSE_DOODLE_SET = 'COMPOSE_DOODLE_SET';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const messages = defineMessages({
|
|
|
|
|
|
|
|
uploadErrorLimit: { id: 'upload_error.limit', defaultMessage: 'File upload limit exceeded.' },
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
export function changeCompose(text) {
|
|
|
|
export function changeCompose(text) {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
type: COMPOSE_CHANGE,
|
|
|
|
type: COMPOSE_CHANGE,
|
|
|
@ -208,21 +214,33 @@ export function doodleSet(options) {
|
|
|
|
|
|
|
|
|
|
|
|
export function uploadCompose(files) {
|
|
|
|
export function uploadCompose(files) {
|
|
|
|
return function (dispatch, getState) {
|
|
|
|
return function (dispatch, getState) {
|
|
|
|
if (getState().getIn(['compose', 'media_attachments']).size > 3) {
|
|
|
|
const uploadLimit = 4;
|
|
|
|
|
|
|
|
const media = getState().getIn(['compose', 'media_attachments']);
|
|
|
|
|
|
|
|
const total = Array.from(files).reduce((a, v) => a + v.size, 0);
|
|
|
|
|
|
|
|
const progress = new Array(files.length).fill(0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (files.length + media.size > uploadLimit) {
|
|
|
|
|
|
|
|
dispatch(showAlert(undefined, messages.uploadErrorLimit));
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
dispatch(uploadComposeRequest());
|
|
|
|
dispatch(uploadComposeRequest());
|
|
|
|
|
|
|
|
|
|
|
|
resizeImage(files[0]).then(file => {
|
|
|
|
for (const [i, f] of Array.from(files).entries()) {
|
|
|
|
|
|
|
|
if (media.size + i > 3) break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
resizeImage(f).then(file => {
|
|
|
|
const data = new FormData();
|
|
|
|
const data = new FormData();
|
|
|
|
data.append('file', file);
|
|
|
|
data.append('file', file);
|
|
|
|
|
|
|
|
|
|
|
|
return api(getState).post('/api/v1/media', data, {
|
|
|
|
return api(getState).post('/api/v1/media', data, {
|
|
|
|
onUploadProgress: ({ loaded, total }) => dispatch(uploadComposeProgress(loaded, total)),
|
|
|
|
onUploadProgress: function({ loaded }){
|
|
|
|
|
|
|
|
progress[i] = loaded;
|
|
|
|
|
|
|
|
dispatch(uploadComposeProgress(progress.reduce((a, v) => a + v, 0), total));
|
|
|
|
|
|
|
|
},
|
|
|
|
}).then(({ data }) => dispatch(uploadComposeSuccess(data)));
|
|
|
|
}).then(({ data }) => dispatch(uploadComposeSuccess(data)));
|
|
|
|
}).catch(error => dispatch(uploadComposeFail(error)));
|
|
|
|
}).catch(error => dispatch(uploadComposeFail(error)));
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
export function changeUploadCompose(id, params) {
|
|
|
|
export function changeUploadCompose(id, params) {
|
|
|
|