From 34e38690066a9243f6352e5cc4c728e3e6c0dccf Mon Sep 17 00:00:00 2001 From: Rens Groothuijsen Date: Thu, 30 May 2024 01:04:18 +0200 Subject: [PATCH 1/2] Rebase branch --- app/javascript/mastodon/actions/compose.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index aa1c6de20e..413cd1c48d 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -301,11 +301,17 @@ export function uploadCompose(files) { const uploadLimit = getState().getIn(['server', 'server', 'configuration', 'statuses', 'max_media_attachments']); const media = getState().getIn(['compose', 'media_attachments']); const pending = getState().getIn(['compose', 'pending_media_attachments']); + const serverConfiguration = getState().getIn(['server', 'server', 'configuration']); + const maxMediaAttachments = serverConfiguration.getIn(['statuses', 'max_media_attachments']); + const videoSizeLimit = serverConfiguration.getIn(['media_attachments', 'video_size_limit']); + const imageSizeLimit = serverConfiguration.getIn(['media_attachments', 'image_size_limit']); + const filesArray = Array.from(files); const progress = new Array(files.length).fill(0); - - let total = Array.from(files).reduce((a, v) => a + v.size, 0); - - if (files.length + media.size + pending > uploadLimit) { + let total = filesArray.reduce((a, v) => a + v.size, 0); + if ( + filesArray.some(file => (file.type.match(/video\/.*/) && file.size > videoSizeLimit) + || (file.type.match(/image\/.*/) && file.size > imageSizeLimit) + || (files.length + media.size + pending > maxMediaAttachments))) { dispatch(showAlert({ message: messages.uploadErrorLimit })); return; } From a9f9357ae46da73f368b73c0bb5bdddc87fc6dd6 Mon Sep 17 00:00:00 2001 From: Rens Groothuijsen Date: Sun, 29 Sep 2024 21:50:04 +0200 Subject: [PATCH 2/2] Remove redundant upload limit variable and check number of attached files only once --- app/javascript/mastodon/actions/compose.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index 413cd1c48d..d62b4b239d 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -298,7 +298,6 @@ export function submitComposeFail(error) { export function uploadCompose(files) { return function (dispatch, getState) { - const uploadLimit = getState().getIn(['server', 'server', 'configuration', 'statuses', 'max_media_attachments']); const media = getState().getIn(['compose', 'media_attachments']); const pending = getState().getIn(['compose', 'pending_media_attachments']); const serverConfiguration = getState().getIn(['server', 'server', 'configuration']); @@ -308,10 +307,11 @@ export function uploadCompose(files) { const filesArray = Array.from(files); const progress = new Array(files.length).fill(0); let total = filesArray.reduce((a, v) => a + v.size, 0); - if ( - filesArray.some(file => (file.type.match(/video\/.*/) && file.size > videoSizeLimit) - || (file.type.match(/image\/.*/) && file.size > imageSizeLimit) - || (files.length + media.size + pending > maxMediaAttachments))) { + if (files.length + media.size + pending > maxMediaAttachments + || filesArray.some(file => ( + file.type.match(/video\/.*/) && file.size > videoSizeLimit) + || (file.type.match(/image\/.*/) && file.size > imageSizeLimit))) + { dispatch(showAlert({ message: messages.uploadErrorLimit })); return; } @@ -324,7 +324,7 @@ export function uploadCompose(files) { dispatch(uploadComposeRequest()); for (const [i, file] of Array.from(files).entries()) { - if (media.size + i > (uploadLimit - 1)) break; + if (media.size + i > (maxMediaAttachments - 1)) break; const data = new FormData(); data.append('file', file);