Add InputInvoice::is_equal_but_different.
This commit is contained in:
parent
b10983acfa
commit
bb69175aab
@ -34,10 +34,10 @@ static bool operator==(const Invoice &lhs, const Invoice &rhs) {
|
|||||||
|
|
||||||
bool operator==(const InputInvoice &lhs, const InputInvoice &rhs) {
|
bool operator==(const InputInvoice &lhs, const InputInvoice &rhs) {
|
||||||
return lhs.title_ == rhs.title_ && lhs.description_ == rhs.description_ && lhs.photo_ == rhs.photo_ &&
|
return lhs.title_ == rhs.title_ && lhs.description_ == rhs.description_ && lhs.photo_ == rhs.photo_ &&
|
||||||
lhs.start_parameter_ == rhs.start_parameter_ && lhs.invoice_ == rhs.invoice_ &&
|
lhs.start_parameter_ == rhs.start_parameter_ && lhs.invoice_ == rhs.invoice_ && lhs.payload_ == rhs.payload_ &&
|
||||||
lhs.total_amount_ == rhs.total_amount_ && lhs.receipt_message_id_ == rhs.receipt_message_id_ &&
|
lhs.provider_token_ == rhs.provider_token_ && lhs.provider_data_ == rhs.provider_data_ &&
|
||||||
lhs.payload_ == rhs.payload_ && lhs.provider_token_ == rhs.provider_token_ &&
|
lhs.extended_media_ == rhs.extended_media_ && lhs.total_amount_ == rhs.total_amount_ &&
|
||||||
lhs.provider_data_ == rhs.provider_data_ && lhs.extended_media_ == rhs.extended_media_;
|
lhs.receipt_message_id_ == rhs.receipt_message_id_;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator!=(const InputInvoice &lhs, const InputInvoice &rhs) {
|
bool operator!=(const InputInvoice &lhs, const InputInvoice &rhs) {
|
||||||
@ -363,6 +363,10 @@ bool InputInvoice::has_media_timestamp() const {
|
|||||||
return extended_media_.has_media_timestamp();
|
return extended_media_.has_media_timestamp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool InputInvoice::is_equal_but_different(const InputInvoice &other) const {
|
||||||
|
return extended_media_.is_equal_but_different(other.extended_media_);
|
||||||
|
}
|
||||||
|
|
||||||
const FormattedText *InputInvoice::get_caption() const {
|
const FormattedText *InputInvoice::get_caption() const {
|
||||||
return extended_media_.get_caption();
|
return extended_media_.get_caption();
|
||||||
}
|
}
|
||||||
|
@ -87,6 +87,8 @@ struct InputInvoice {
|
|||||||
|
|
||||||
bool has_media_timestamp() const;
|
bool has_media_timestamp() const;
|
||||||
|
|
||||||
|
bool is_equal_but_different(const InputInvoice &other) const;
|
||||||
|
|
||||||
const FormattedText *get_caption() const;
|
const FormattedText *get_caption() const;
|
||||||
|
|
||||||
int32 get_duration(const Td *td) const;
|
int32 get_duration(const Td *td) const;
|
||||||
|
@ -3225,9 +3225,7 @@ void merge_message_contents(Td *td, const MessageContent *old_content, MessageCo
|
|||||||
new_->input_invoice.update_from(old_->input_invoice);
|
new_->input_invoice.update_from(old_->input_invoice);
|
||||||
if (old_->input_invoice != new_->input_invoice) {
|
if (old_->input_invoice != new_->input_invoice) {
|
||||||
need_update = true;
|
need_update = true;
|
||||||
}
|
} else if (old_->input_invoice.is_equal_but_different(new_->input_invoice)) {
|
||||||
if (old_->input_invoice.extended_media_.get_unsupported_version() !=
|
|
||||||
new_->input_invoice.extended_media_.get_unsupported_version()) {
|
|
||||||
is_content_changed = true;
|
is_content_changed = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -142,7 +142,7 @@ bool MessageExtendedMedia::update_to(Td *td,
|
|||||||
if (!new_extended_media.is_media() && is_media()) {
|
if (!new_extended_media.is_media() && is_media()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (*this != new_extended_media || get_unsupported_version() != new_extended_media.get_unsupported_version()) {
|
if (*this != new_extended_media || is_equal_but_different(new_extended_media)) {
|
||||||
*this = std::move(new_extended_media);
|
*this = std::move(new_extended_media);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -290,6 +290,11 @@ telegram_api::object_ptr<telegram_api::InputMedia> MessageExtendedMedia::get_inp
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MessageExtendedMedia::is_equal_but_different(const MessageExtendedMedia &other) const {
|
||||||
|
return type_ == Type::Unsupported && other.type_ == Type::Unsupported &&
|
||||||
|
unsupported_version_ != other.unsupported_version_;
|
||||||
|
}
|
||||||
|
|
||||||
bool operator==(const MessageExtendedMedia &lhs, const MessageExtendedMedia &rhs) {
|
bool operator==(const MessageExtendedMedia &lhs, const MessageExtendedMedia &rhs) {
|
||||||
if (lhs.type_ != rhs.type_ || lhs.caption_ != rhs.caption_) {
|
if (lhs.type_ != rhs.type_ || lhs.caption_ != rhs.caption_) {
|
||||||
return false;
|
return false;
|
||||||
@ -298,6 +303,7 @@ bool operator==(const MessageExtendedMedia &lhs, const MessageExtendedMedia &rhs
|
|||||||
case MessageExtendedMedia::Type::Empty:
|
case MessageExtendedMedia::Type::Empty:
|
||||||
return true;
|
return true;
|
||||||
case MessageExtendedMedia::Type::Unsupported:
|
case MessageExtendedMedia::Type::Unsupported:
|
||||||
|
// don't compare unsupported_version_
|
||||||
return true;
|
return true;
|
||||||
case MessageExtendedMedia::Type::Preview:
|
case MessageExtendedMedia::Type::Preview:
|
||||||
return lhs.duration_ == rhs.duration_ && lhs.dimensions_ == rhs.dimensions_ &&
|
return lhs.duration_ == rhs.duration_ && lhs.dimensions_ == rhs.dimensions_ &&
|
||||||
|
@ -70,10 +70,6 @@ class MessageExtendedMedia {
|
|||||||
|
|
||||||
void delete_thumbnail(Td *td);
|
void delete_thumbnail(Td *td);
|
||||||
|
|
||||||
int32 get_unsupported_version() const {
|
|
||||||
return unsupported_version_;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool need_reget() const {
|
bool need_reget() const {
|
||||||
return type_ == Type::Unsupported && unsupported_version_ < CURRENT_VERSION;
|
return type_ == Type::Unsupported && unsupported_version_ < CURRENT_VERSION;
|
||||||
}
|
}
|
||||||
@ -86,6 +82,8 @@ class MessageExtendedMedia {
|
|||||||
return type_ == Type::Video;
|
return type_ == Type::Video;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool is_equal_but_different(const MessageExtendedMedia &other) const;
|
||||||
|
|
||||||
int32 get_duration(const Td *td) const;
|
int32 get_duration(const Td *td) const;
|
||||||
|
|
||||||
const FormattedText *get_caption() const {
|
const FormattedText *get_caption() const {
|
||||||
|
Loading…
Reference in New Issue
Block a user