Synchronously send media group to keep the relative message order.
GitOrigin-RevId: 7f6f0f1b47dae56f3bc459f81fc2922fdc7b46dc
This commit is contained in:
parent
d6f5675cb2
commit
8c43f751cd
|
@ -21630,10 +21630,12 @@ void MessagesManager::on_upload_message_media_finished(int64 media_album_id, Dia
|
||||||
request.finished_count++;
|
request.finished_count++;
|
||||||
|
|
||||||
if (request.finished_count == request.message_ids.size() || request.results[pos].is_error()) {
|
if (request.finished_count == request.message_ids.size() || request.results[pos].is_error()) {
|
||||||
// send later, because some messages may be being deleted now
|
// must use send_closure_later if some messages may be being deleted now
|
||||||
|
// but this function is called only through send_closure_later, so there should be no being deleted messages
|
||||||
|
// we must to use synchronous calls to keep the correct message order during copying of multiple messages
|
||||||
for (auto request_message_id : request.message_ids) {
|
for (auto request_message_id : request.message_ids) {
|
||||||
LOG(INFO) << "Send on_media_message_ready_to_send for " << request_message_id << " in " << dialog_id;
|
LOG(INFO) << "Send on_media_message_ready_to_send for " << request_message_id << " in " << dialog_id;
|
||||||
auto promise = PromiseCreator::lambda([actor_id = actor_id(this), media_album_id](Result<Message *> result) {
|
auto promise = PromiseCreator::lambda([this, media_album_id](Result<Message *> result) {
|
||||||
if (result.is_error() || G()->close_flag()) {
|
if (result.is_error() || G()->close_flag()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -21641,10 +21643,12 @@ void MessagesManager::on_upload_message_media_finished(int64 media_album_id, Dia
|
||||||
auto m = result.move_as_ok();
|
auto m = result.move_as_ok();
|
||||||
CHECK(m != nullptr);
|
CHECK(m != nullptr);
|
||||||
CHECK(m->media_album_id == media_album_id);
|
CHECK(m->media_album_id == media_album_id);
|
||||||
send_closure_later(actor_id, &MessagesManager::do_send_message_group, media_album_id);
|
do_send_message_group(media_album_id);
|
||||||
|
// send_closure_later(actor_id, &MessagesManager::do_send_message_group, media_album_id);
|
||||||
});
|
});
|
||||||
send_closure_later(actor_id(this), &MessagesManager::on_media_message_ready_to_send, dialog_id,
|
// send_closure_later(actor_id(this), &MessagesManager::on_media_message_ready_to_send, dialog_id,
|
||||||
request_message_id, std::move(promise));
|
// request_message_id, std::move(promise));
|
||||||
|
on_media_message_ready_to_send(dialog_id, request_message_id, std::move(promise));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user