Parse link entities into Data::Invoice.

This commit is contained in:
John Preston 2022-06-21 19:16:00 +04:00
parent 9d7060c24a
commit ff55918da0
6 changed files with 16 additions and 13 deletions

View File

@ -31,6 +31,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/image/image.h"
#include "ui/text/format_song_document_name.h"
#include "ui/text/format_values.h"
#include "ui/text/text_entity.h"
#include "ui/text/text_options.h"
#include "ui/text/text_utilities.h"
#include "ui/toast/toast.h"
@ -246,12 +247,15 @@ TextForMimeData WithCaptionClipboardText(
Invoice ComputeInvoiceData(
not_null<HistoryItem*> item,
const MTPDmessageMediaInvoice &data) {
auto description = qs(data.vdescription());
return {
.receiptMsgId = data.vreceipt_msg_id().value_or_empty(),
.amount = data.vtotal_amount().v,
.currency = qs(data.vcurrency()),
.title = TextUtilities::SingleLine(qs(data.vtitle())),
.description = qs(data.vdescription()),
.description = TextUtilities::ParseEntities(
description,
TextParseLinks | TextParseMultiline),
.photo = (data.vphoto()
? item->history()->owner().photoFromWeb(
*data.vphoto(),

View File

@ -63,7 +63,7 @@ struct Invoice {
uint64 amount = 0;
QString currency;
QString title;
QString description;
TextWithEntities description;
PhotoData *photo = nullptr;
bool isTest = false;
};

View File

@ -68,13 +68,10 @@ void Invoice::fillFromData(not_null<Data::Invoice*> invoice) {
_receiptMsgId = invoice->receiptMsgId;
// init strings
if (!invoice->description.isEmpty()) {
auto marked = TextWithEntities { invoice->description };
auto parseFlags = TextParseLinks | TextParseMultiline;
TextUtilities::ParseEntities(marked, parseFlags);
if (!invoice->description.empty()) {
_description.setMarkedText(
st::webPageDescriptionStyle,
marked,
invoice->description,
Ui::WebpageTextDescriptionOptions());
}
if (!invoice->title.isEmpty()) {

View File

@ -26,6 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "smartglocal/smartglocal_token.h"
#include "storage/storage_account.h"
#include "ui/image/image.h"
#include "ui/text/text_entity.h"
#include "apiwrap.h"
#include "core/core_cloud_password.h"
#include "window/themes/window_theme.h"
@ -400,7 +401,9 @@ void Form::processDetails(const MTPDpayments_paymentForm &data) {
.passwordMissing = data.is_password_missing(),
};
_invoice.cover.title = qs(data.vtitle());
_invoice.cover.description = qs(data.vdescription());
_invoice.cover.description = TextUtilities::ParseEntities(
qs(data.vdescription()),
TextParseLinks | TextParseMultiline)
if (_invoice.cover.thumbnail.isNull() && !_thumbnailLoadProcess) {
if (const auto photo = data.vphoto()) {
loadThumbnail(

View File

@ -16,7 +16,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/wrap/fade_wrap.h"
#include "ui/text/format_values.h"
#include "ui/text/text_utilities.h"
#include "ui/text/text_entity.h"
#include "countries/countries_instance.h"
#include "lang/lang_keys.h"
#include "base/unixtime.h"
@ -218,9 +217,7 @@ void FormSummary::setupCover(not_null<VerticalLayout*> layout) {
st::paymentsTitle);
state->description = CreateChild<FlatLabel>(
cover,
rpl::single(TextUtilities::ParseEntities(
_invoice.cover.description,
TextParseLinks)),
rpl::single(_invoice.cover.description),
st::paymentsDescription);
state->seller = CreateChild<FlatLabel>(
cover,

View File

@ -7,6 +7,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once
#include "ui/text/text_entity.h"
namespace Payments::Ui {
struct LabeledPrice {
@ -16,7 +18,7 @@ struct LabeledPrice {
struct Cover {
QString title;
QString description;
TextWithEntities description;
QString seller;
QImage thumbnail;
};