Don't reload message reactions for messages with being read reactions.
This commit is contained in:
parent
50fdce9ae1
commit
fca432eb43
@ -21,6 +21,7 @@
|
|||||||
#include "td/telegram/UpdatesManager.h"
|
#include "td/telegram/UpdatesManager.h"
|
||||||
|
|
||||||
#include "td/actor/actor.h"
|
#include "td/actor/actor.h"
|
||||||
|
#include "td/actor/SleepActor.h"
|
||||||
|
|
||||||
#include "td/utils/algorithm.h"
|
#include "td/utils/algorithm.h"
|
||||||
#include "td/utils/as.h"
|
#include "td/utils/as.h"
|
||||||
@ -957,6 +958,12 @@ bool is_active_reaction(const string &reaction, const FlatHashMap<string, size_t
|
|||||||
void reload_message_reactions(Td *td, DialogId dialog_id, vector<MessageId> &&message_ids) {
|
void reload_message_reactions(Td *td, DialogId dialog_id, vector<MessageId> &&message_ids) {
|
||||||
if (!td->messages_manager_->have_input_peer(dialog_id, AccessRights::Read) ||
|
if (!td->messages_manager_->have_input_peer(dialog_id, AccessRights::Read) ||
|
||||||
dialog_id.get_type() == DialogType::SecretChat || message_ids.empty()) {
|
dialog_id.get_type() == DialogType::SecretChat || message_ids.empty()) {
|
||||||
|
create_actor<SleepActor>(
|
||||||
|
"RetryReloadMessageReactionsActor", 0.2,
|
||||||
|
PromiseCreator::lambda([actor_id = G()->messages_manager(), dialog_id](Result<Unit> result) mutable {
|
||||||
|
send_closure(actor_id, &MessagesManager::try_reload_message_reactions, dialog_id, true);
|
||||||
|
}))
|
||||||
|
.release();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7176,7 +7176,10 @@ bool MessagesManager::update_message_interaction_info(Dialog *d, Message *m, int
|
|||||||
need_update_reactions || need_update_unread_reactions || need_update_chosen_reaction_order) {
|
need_update_reactions || need_update_unread_reactions || need_update_chosen_reaction_order) {
|
||||||
LOG(DEBUG) << "Update interaction info of " << full_message_id << " from " << m->view_count << '/'
|
LOG(DEBUG) << "Update interaction info of " << full_message_id << " from " << m->view_count << '/'
|
||||||
<< m->forward_count << '/' << m->reply_info << '/' << m->reactions << " to " << view_count << '/'
|
<< m->forward_count << '/' << m->reply_info << '/' << m->reactions << " to " << view_count << '/'
|
||||||
<< forward_count << '/' << reply_info << '/' << reactions;
|
<< forward_count << '/' << reply_info << '/' << reactions
|
||||||
|
<< ", need_update_reactions = " << need_update_reactions
|
||||||
|
<< ", need_update_unread_reactions = " << need_update_unread_reactions
|
||||||
|
<< ", need_update_chosen_reaction_order = " << need_update_chosen_reaction_order;
|
||||||
bool need_update = false;
|
bool need_update = false;
|
||||||
if (view_count > m->view_count) {
|
if (view_count > m->view_count) {
|
||||||
m->view_count = view_count;
|
m->view_count = view_count;
|
||||||
@ -8612,7 +8615,10 @@ void MessagesManager::try_reload_message_reactions(DialogId dialog_id, bool is_f
|
|||||||
vector<MessageId> message_ids;
|
vector<MessageId> message_ids;
|
||||||
for (auto message_id_it = it->second.message_ids.begin();
|
for (auto message_id_it = it->second.message_ids.begin();
|
||||||
message_id_it != it->second.message_ids.end() && message_ids.size() < MAX_MESSAGE_IDS; ++message_id_it) {
|
message_id_it != it->second.message_ids.end() && message_ids.size() < MAX_MESSAGE_IDS; ++message_id_it) {
|
||||||
message_ids.push_back(*message_id_it);
|
auto message_id = *message_id_it;
|
||||||
|
if (pending_read_reactions_.count({dialog_id, message_id}) == 0) {
|
||||||
|
message_ids.push_back(message_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (auto message_id : message_ids) {
|
for (auto message_id : message_ids) {
|
||||||
it->second.message_ids.erase(message_id);
|
it->second.message_ids.erase(message_id);
|
||||||
|
Loading…
Reference in New Issue
Block a user