From 1bbe3872f25f4f0f7de60a35bd805608c6484c24 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 10 Jun 2026 17:20:21 +0200 Subject: [PATCH] Change validation to permit polls and media being combined (#39203) --- app/javascript/mastodon/actions/compose.js | 5 ----- .../features/compose/containers/poll_button_container.js | 4 +--- .../features/compose/containers/upload_button_container.js | 3 +-- app/services/post_status_service.rb | 2 +- 4 files changed, 3 insertions(+), 11 deletions(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index abc86a3394..0e0d957ee9 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -342,11 +342,6 @@ export function uploadCompose(files) { return; } - if (getState().getIn(['compose', 'poll'])) { - dispatch(showAlert({ message: messages.uploadErrorPoll })); - return; - } - dispatch(uploadComposeRequest()); for (const [i, file] of Array.from(files).entries()) { diff --git a/app/javascript/mastodon/features/compose/containers/poll_button_container.js b/app/javascript/mastodon/features/compose/containers/poll_button_container.js index e8fa9798c5..5098d69cc7 100644 --- a/app/javascript/mastodon/features/compose/containers/poll_button_container.js +++ b/app/javascript/mastodon/features/compose/containers/poll_button_container.js @@ -4,12 +4,10 @@ import { addPoll, removePoll } from '../../../actions/compose'; import PollButton from '../components/poll_button'; const mapStateToProps = state => { - const readyAttachmentsSize = state.compose.get('media_attachments').size ?? 0; - const hasAttachments = readyAttachmentsSize > 0 || !!state.compose.get('is_uploading'); const hasQuote = !!state.compose.get('quoted_status_id'); return ({ - disabled: hasAttachments || hasQuote, + disabled: hasQuote, active: state.getIn(['compose', 'poll']) !== null, }); }; diff --git a/app/javascript/mastodon/features/compose/containers/upload_button_container.js b/app/javascript/mastodon/features/compose/containers/upload_button_container.js index a332e99c08..92399e8314 100644 --- a/app/javascript/mastodon/features/compose/containers/upload_button_container.js +++ b/app/javascript/mastodon/features/compose/containers/upload_button_container.js @@ -4,7 +4,6 @@ import { uploadCompose } from '../../../actions/compose'; import UploadButton from '../components/upload_button'; const mapStateToProps = state => { - const isPoll = state.getIn(['compose', 'poll']) !== null; const isUploading = state.getIn(['compose', 'is_uploading']); const readyAttachmentsSize = state.getIn(['compose', 'media_attachments']).size ?? 0; const pendingAttachmentsSize = state.getIn(['compose', 'pending_media_attachments']).size ?? 0; @@ -14,7 +13,7 @@ const mapStateToProps = state => { const hasQuote = !!state.compose.get('quoted_status_id'); return { - disabled: isPoll || isUploading || isOverLimit || hasVideoOrAudio || hasQuote, + disabled: isUploading || isOverLimit || hasVideoOrAudio || hasQuote, resetFileKey: state.getIn(['compose', 'resetFileKey']), }; }; diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index 9f82de40d3..da1053595f 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -190,7 +190,7 @@ class PostStatusService < BaseService return end - raise Mastodon::ValidationError, I18n.t('media_attachments.validations.too_many') if @options[:media_ids].size > Status::MEDIA_ATTACHMENTS_LIMIT || @options[:poll].present? + raise Mastodon::ValidationError, I18n.t('media_attachments.validations.too_many') if @options[:media_ids].size > Status::MEDIA_ATTACHMENTS_LIMIT @media = @account.media_attachments.where(status_id: nil).where(id: @options[:media_ids].take(Status::MEDIA_ATTACHMENTS_LIMIT).map(&:to_i))