Added ability to forward poll without description.

This commit is contained in:
23rd
2026-03-26 16:01:40 +03:00
parent ee84743fb0
commit bb84330289
4 changed files with 34 additions and 9 deletions
@@ -2323,6 +2323,18 @@ Storage::SharedMediaTypesMask MediaPoll::sharedMediaTypes() const {
.added(Storage::SharedMediaType::Poll);
}
ItemPreview MediaPoll::toPreview(ToPreviewOptions options) const {
const auto caption = (options.hideCaption || options.ignoreMessageText)
? TextWithEntities()
: Dialogs::Ui::DialogsPreviewText(options.translated
? parent()->translatedText()
: parent()->originalText());
const auto type = u"\xD83D\xDCCA "_q + _poll->question.text;
return {
.text = WithCaptionNotificationText(type, caption),
};
}
TextWithEntities MediaPoll::notificationText() const {
return TextWithEntities()
.append(QChar(0xD83D))
@@ -635,6 +635,7 @@ public:
PollData *poll() const override;
Storage::SharedMediaTypesMask sharedMediaTypes() const override;
ItemPreview toPreview(ToPreviewOptions options) const override;
TextWithEntities notificationText() const override;
QString pinnedTextSubstring() const override;
TextForMimeData clipboardText() const override;
+17 -7
View File
@@ -655,13 +655,23 @@ HistoryItem::HistoryItem(
const auto dropText = fields.ignoreForwardCaptions
&& _media
&& (_media->photo() || _media->document())
&& !_media->webpage();
setText(dropText
? TextWithEntities()
: dropForwardInfo
? DropDisallowedCustomEmoji(history->peer, original->originalText())
: original->originalText());
&& (_media->allowsEditCaption() || _media->poll());
const auto forwardText = [&] {
if (dropText) {
return TextWithEntities();
}
const auto &text = original->originalText();
if (!text.text.isEmpty()) {
return dropForwardInfo
? DropDisallowedCustomEmoji(history->peer, text)
: TextWithEntities(text);
}
if (const auto media = original->media()) {
return media->consumedMessageText();
}
return TextWithEntities();
}();
setText(forwardText);
if (fields.groupedId) {
setGroupId(MessageGroupId::FromRaw(
@@ -1315,8 +1315,10 @@ int ItemsForwardCaptionsCount(const HistoryItemsList &list) {
auto result = 0;
for (const auto &item : list) {
if (const auto media = item->media()) {
if (!item->originalText().text.isEmpty()
&& media->allowsEditCaption()) {
const auto hasCaption = !item->originalText().text.isEmpty()
|| !media->consumedMessageText().text.isEmpty();
if (hasCaption
&& (media->allowsEditCaption() || media->poll())) {
++result;
}
}