Update remote location when source is changed.
GitOrigin-RevId: fc2f41f1f47cc65b5aadbec14a302d8ab2d03d5f
This commit is contained in:
parent
ff3164ff04
commit
984ccd3d75
@ -54,6 +54,31 @@ tl_object_ptr<telegram_api::InputPeer> OfflineInputPeer::get_input_peer() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool operator==(const PhotoSizeSource &lhs, const PhotoSizeSource &rhs) {
|
||||||
|
if (lhs.type != rhs.type || lhs.file_type != rhs.file_type) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
switch (lhs.type) {
|
||||||
|
case PhotoSizeSource::Type::DialogPhoto:
|
||||||
|
return lhs.dialog_photo().input_peer.dialog_id == rhs.dialog_photo().input_peer.dialog_id &&
|
||||||
|
lhs.dialog_photo().input_peer.dialog_access_hash == rhs.dialog_photo().input_peer.dialog_access_hash &&
|
||||||
|
lhs.dialog_photo().is_big == rhs.dialog_photo().is_big;
|
||||||
|
case PhotoSizeSource::Type::StickerSetThumbnail:
|
||||||
|
return lhs.sticker_set_thumbnail().input_sticker_set.sticker_set_id ==
|
||||||
|
rhs.sticker_set_thumbnail().input_sticker_set.sticker_set_id &&
|
||||||
|
lhs.sticker_set_thumbnail().input_sticker_set.sticker_set_access_hash ==
|
||||||
|
rhs.sticker_set_thumbnail().input_sticker_set.sticker_set_access_hash;
|
||||||
|
case PhotoSizeSource::Type::Thumbnail:
|
||||||
|
return lhs.thumbnail().thumbnail_type == rhs.thumbnail().thumbnail_type;
|
||||||
|
case PhotoSizeSource::Type::Empty:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator!=(const PhotoSizeSource &lhs, const PhotoSizeSource &rhs) {
|
||||||
|
return !(lhs == rhs);
|
||||||
|
}
|
||||||
|
|
||||||
static uint16 get_dimension(int32 size) {
|
static uint16 get_dimension(int32 size) {
|
||||||
if (size < 0 || size > 65535) {
|
if (size < 0 || size > 65535) {
|
||||||
LOG(ERROR) << "Wrong image dimension = " << size;
|
LOG(ERROR) << "Wrong image dimension = " << size;
|
||||||
|
@ -115,7 +115,6 @@ struct PhotoSizeSource {
|
|||||||
|
|
||||||
PhotoSizeSource() : type(Type::Empty), file_type(FileType::None) {
|
PhotoSizeSource() : type(Type::Empty), file_type(FileType::None) {
|
||||||
}
|
}
|
||||||
|
|
||||||
PhotoSizeSource(FileType file_type, int32 thumbnail_type)
|
PhotoSizeSource(FileType file_type, int32 thumbnail_type)
|
||||||
: type(Type::Thumbnail), file_type(file_type), variant(Thumbnail(thumbnail_type)) {
|
: type(Type::Thumbnail), file_type(file_type), variant(Thumbnail(thumbnail_type)) {
|
||||||
}
|
}
|
||||||
@ -149,6 +148,9 @@ struct PhotoSizeSource {
|
|||||||
void parse(ParserT &parser);
|
void parse(ParserT &parser);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool operator==(const PhotoSizeSource &lhs, const PhotoSizeSource &rhs);
|
||||||
|
bool operator!=(const PhotoSizeSource &lhs, const PhotoSizeSource &rhs);
|
||||||
|
|
||||||
struct Photo {
|
struct Photo {
|
||||||
int64 id = 0;
|
int64 id = 0;
|
||||||
int32 date = 0;
|
int32 date = 0;
|
||||||
|
@ -318,6 +318,21 @@ class FullRemoteFileLocation {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PhotoSizeSource get_source() const {
|
||||||
|
switch (location_type()) {
|
||||||
|
case LocationType::Photo:
|
||||||
|
return photo().source_;
|
||||||
|
case LocationType::Common:
|
||||||
|
case LocationType::Web:
|
||||||
|
return PhotoSizeSource();
|
||||||
|
case LocationType::None:
|
||||||
|
default:
|
||||||
|
UNREACHABLE();
|
||||||
|
return PhotoSizeSource();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void clear_file_reference() {
|
void clear_file_reference() {
|
||||||
file_reference_.clear();
|
file_reference_.clear();
|
||||||
}
|
}
|
||||||
@ -329,9 +344,11 @@ class FullRemoteFileLocation {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool has_file_reference() const {
|
bool has_file_reference() const {
|
||||||
return file_reference_ != FileReferenceView::invalid_file_reference();
|
return file_reference_ != FileReferenceView::invalid_file_reference();
|
||||||
}
|
}
|
||||||
|
|
||||||
Slice get_file_reference() const {
|
Slice get_file_reference() const {
|
||||||
return file_reference_;
|
return file_reference_;
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,8 @@ void FileNode::set_new_remote_location(NewRemoteFileLocation new_remote) {
|
|||||||
if (new_remote.full) {
|
if (new_remote.full) {
|
||||||
if (remote_.full && remote_.full.value() == new_remote.full.value()) {
|
if (remote_.full && remote_.full.value() == new_remote.full.value()) {
|
||||||
if (remote_.full.value().get_access_hash() != new_remote.full.value().get_access_hash() ||
|
if (remote_.full.value().get_access_hash() != new_remote.full.value().get_access_hash() ||
|
||||||
remote_.full.value().get_file_reference() != new_remote.full.value().get_file_reference()) {
|
remote_.full.value().get_file_reference() != new_remote.full.value().get_file_reference() ||
|
||||||
|
remote_.full.value().get_source() != new_remote.full.value().get_source()) {
|
||||||
on_pmc_changed();
|
on_pmc_changed();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1148,7 +1149,8 @@ static int merge_choose_remote_location(const FullRemoteFileLocation &x, FileLoc
|
|||||||
return merge_choose_file_source_location(x_source, y_source);
|
return merge_choose_file_source_location(x_source, y_source);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (x.get_access_hash() != y.get_access_hash() && (x_source != y_source || x.is_web() || x.get_id() == y.get_id())) {
|
if ((x.get_access_hash() != y.get_access_hash() || x.get_source() != y.get_source()) &&
|
||||||
|
(x_source != y_source || x.is_web() || x.get_id() == y.get_id())) {
|
||||||
return merge_choose_file_source_location(x_source, y_source);
|
return merge_choose_file_source_location(x_source, y_source);
|
||||||
}
|
}
|
||||||
return 2;
|
return 2;
|
||||||
|
Loading…
Reference in New Issue
Block a user