diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index 3e4bb9a59..7d69b5d96 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -6179,13 +6179,13 @@ void ContactsManager::send_update_profile_photo_query(FileId file_id, int64 old_ } void ContactsManager::upload_profile_photo(FileId file_id, bool is_animation, double main_frame_timestamp, - Promise &&promise, vector bad_parts) { + Promise &&promise, int reupload_count, vector bad_parts) { CHECK(file_id.is_valid()); CHECK(uploaded_profile_photos_.find(file_id) == uploaded_profile_photos_.end()); uploaded_profile_photos_.emplace( - file_id, UploadedProfilePhoto{main_frame_timestamp, is_animation, !bad_parts.empty(), std::move(promise)}); - LOG(INFO) << "Ask to upload profile photo " << file_id; - // TODO use force_reupload + file_id, UploadedProfilePhoto{main_frame_timestamp, is_animation, reupload_count, std::move(promise)}); + LOG(INFO) << "Ask to upload profile photo " << file_id << " with bad parts " << bad_parts; + // TODO use force_reupload if reupload_count >= 1, replace reupload_count with is_reupload td_->file_manager_->resume_upload(file_id, std::move(bad_parts), upload_profile_photo_callback_, 32, 0); } @@ -15751,7 +15751,7 @@ void ContactsManager::on_upload_profile_photo(FileId file_id, tl_object_ptrsecond.main_frame_timestamp; bool is_animation = it->second.is_animation; - bool is_reupload = it->second.is_reupload; + int32 reupload_count = it->second.reupload_count; auto promise = std::move(it->second.promise); uploaded_profile_photos_.erase(it); @@ -15761,7 +15761,7 @@ void ContactsManager::on_upload_profile_photo(FileId file_id, tl_object_ptrfile_manager_->delete_file_reference(file_id, file_reference); - upload_profile_photo(file_id, is_animation, main_frame_timestamp, std::move(promise), {-1}); + upload_profile_photo(file_id, is_animation, main_frame_timestamp, std::move(promise), reupload_count + 1, {-1}); return; } CHECK(input_file != nullptr); diff --git a/td/telegram/ContactsManager.h b/td/telegram/ContactsManager.h index 9c4095c76..0afe330c6 100644 --- a/td/telegram/ContactsManager.h +++ b/td/telegram/ContactsManager.h @@ -1175,7 +1175,7 @@ class ContactsManager final : public Actor { const char *source); void upload_profile_photo(FileId file_id, bool is_animation, double main_frame_timestamp, Promise &&promise, - vector bad_parts = {}); + int reupload_count = 0, vector bad_parts = {}); void on_upload_profile_photo(FileId file_id, tl_object_ptr input_file); void on_upload_profile_photo_error(FileId file_id, Status status); @@ -1648,13 +1648,13 @@ class ContactsManager final : public Actor { struct UploadedProfilePhoto { double main_frame_timestamp; bool is_animation; - bool is_reupload; + int reupload_count; Promise promise; - UploadedProfilePhoto(double main_frame_timestamp, bool is_animation, bool is_reupload, Promise promise) + UploadedProfilePhoto(double main_frame_timestamp, bool is_animation, int32 reupload_count, Promise promise) : main_frame_timestamp(main_frame_timestamp) , is_animation(is_animation) - , is_reupload(is_reupload) + , reupload_count(reupload_count) , promise(std::move(promise)) { } };