diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index a91382e21..a01457386 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -9333,6 +9333,14 @@ void MessagesManager::read_secret_chat_outbox(SecretChatId secret_chat_id, int32 if (d == nullptr) { return; } + + if (read_date > 0) { + auto user_id = td_->contacts_manager_->get_secret_chat_user_id(secret_chat_id); + if (user_id.is_valid()) { + td_->contacts_manager_->on_update_user_local_was_online(user_id, read_date); + } + } + // TODO: protect with logevent suffix_load_till_date( d, up_to_date, diff --git a/td/telegram/UpdatesManager.cpp b/td/telegram/UpdatesManager.cpp index bf3650836..de9dae5c7 100644 --- a/td/telegram/UpdatesManager.cpp +++ b/td/telegram/UpdatesManager.cpp @@ -1189,6 +1189,18 @@ void UpdatesManager::on_pending_updates(vector 0 && updates.size() == 1 && updates[0] != nullptr && + updates[0]->get_id() == telegram_api::updateReadHistoryOutbox::ID) { + auto update = static_cast(updates[0].get()); + DialogId dialog_id(update->peer_); + if (dialog_id.get_type() == DialogType::User) { + auto user_id = dialog_id.get_user_id(); + if (user_id.is_valid()) { + td_->contacts_manager_->on_update_user_local_was_online(user_id, date); + } + } + } + for (auto &update : updates) { if (update != nullptr) { LOG(INFO) << "Receive from " << source << " pending " << to_string(update);