2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-09-05 08:55:59 +00:00

Allow sending just webpage preview.

This commit is contained in:
John Preston
2023-10-26 09:26:45 +04:00
parent 041ec1157f
commit c035ec6917
9 changed files with 81 additions and 49 deletions

View File

@@ -3941,6 +3941,9 @@ void HistoryWidget::send(Api::SendOptions options) {
session().api().sendMessage(std::move(message));
clearFieldText();
if (_preview) {
_preview->apply({ .removed = true });
}
_saveDraftText = true;
_saveDraftStart = crl::now();
saveDraft();

View File

@@ -530,7 +530,7 @@ void FieldHeader::paintWebPage(Painter &p, not_null<PeerData*> context) {
Expects(!!_preview.parsed);
const auto textTop = st::msgReplyPadding.top();
auto previewLeft = st::historyReplySkip + st::msgReplyBarSkip;
auto previewLeft = st::historyReplySkip;
const QRect to(
previewLeft,
@@ -1204,6 +1204,9 @@ void ComposeControls::clear() {
{},
saveTextDraft ? TextUpdateEvent::SaveDraft : TextUpdateEvent());
cancelReplyMessage();
if (_preview) {
_preview->apply({ .removed = true });
}
}
void ComposeControls::setText(const TextWithTags &textWithTags) {
@@ -1755,8 +1758,8 @@ void ComposeControls::fieldChanged() {
&& (_textUpdateEvents & TextUpdateEvent::SendTyping));
updateSendButtonType();
_hasSendText = HasSendText(_field);
if (!_hasSendText.current() && _preview) {
_preview->apply({});
if (!_hasSendText.current() && _preview && !_preview->draft().manual) {
_preview->apply({ .removed = true });
}
if (updateBotCommandShown() || updateLikeShown()) {
updateControlsVisibility();

View File

@@ -155,6 +155,9 @@ void WebpageProcessor::apply(Data::WebPageDraft draft, bool reparse) {
_api.request(base::take(_requestId)).cancel();
if (draft.removed) {
_draft = draft;
if (_parsedLinks.empty()) {
_draft.removed = false;
}
_data = nullptr;
_links = QStringList();
_link = QString();
@@ -272,6 +275,9 @@ void WebpageProcessor::checkNow(bool force) {
void WebpageProcessor::checkPreview() {
const auto previewRestricted = _history->peer
&& _history->peer->amRestricted(ChatRestriction::EmbedLinks);
if (_parsedLinks.empty()) {
_draft.removed = false;
}
if (_draft.removed) {
return;
} else if (previewRestricted) {