Add on_message_changed method.
GitOrigin-RevId: a17f882f7b8e8522f602c5236fb5ae4d99fb9d41
This commit is contained in:
parent
0f8e50b6e2
commit
b839563484
@ -5323,8 +5323,8 @@ void MessagesManager::on_update_message_views(FullMessageId full_message_id, int
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (update_message_views(full_message_id.get_dialog_id(), m, views) && !message_id.is_yet_unsent()) {
|
if (update_message_views(full_message_id.get_dialog_id(), m, views)) {
|
||||||
add_message_to_database(d, m, "on_update_message_views");
|
on_message_changed(d, m, "on_update_message_views");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7722,7 +7722,7 @@ void MessagesManager::read_all_dialog_mentions(DialogId dialog_id, Promise<Unit>
|
|||||||
send_closure(G()->td(), &Td::send_update,
|
send_closure(G()->td(), &Td::send_update,
|
||||||
make_tl_object<td_api::updateMessageMentionRead>(dialog_id.get(), m->message_id.get(), 0));
|
make_tl_object<td_api::updateMessageMentionRead>(dialog_id.get(), m->message_id.get(), 0));
|
||||||
is_update_sent = true;
|
is_update_sent = true;
|
||||||
add_message_to_database(d, m, "read_all_mentions");
|
on_message_changed(d, m, "read_all_mentions");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d->unread_mention_count != 0) {
|
if (d->unread_mention_count != 0) {
|
||||||
@ -7833,7 +7833,7 @@ bool MessagesManager::read_message_content(Dialog *d, Message *m, bool is_local_
|
|||||||
bool is_content_read = update_opened_message_content(m) | ttl_on_open(d, m, Time::now(), is_local_read);
|
bool is_content_read = update_opened_message_content(m) | ttl_on_open(d, m, Time::now(), is_local_read);
|
||||||
|
|
||||||
if (is_mention_read || is_content_read) {
|
if (is_mention_read || is_content_read) {
|
||||||
add_message_to_database(d, m, "read_message_content");
|
on_message_changed(d, m, "read_message_content");
|
||||||
if (is_content_read) {
|
if (is_content_read) {
|
||||||
send_closure(G()->td(), &Td::send_update,
|
send_closure(G()->td(), &Td::send_update,
|
||||||
make_tl_object<td_api::updateMessageContentOpened>(d->dialog_id.get(), m->message_id.get()));
|
make_tl_object<td_api::updateMessageContentOpened>(d->dialog_id.get(), m->message_id.get()));
|
||||||
@ -8344,7 +8344,7 @@ void MessagesManager::ttl_on_view(const Dialog *d, Message *message, double view
|
|||||||
message->ttl > 0 && message->ttl_expires_at == 0) {
|
message->ttl > 0 && message->ttl_expires_at == 0) {
|
||||||
message->ttl_expires_at = message->ttl + view_date;
|
message->ttl_expires_at = message->ttl + view_date;
|
||||||
ttl_register_message(d->dialog_id, message, now);
|
ttl_register_message(d->dialog_id, message, now);
|
||||||
add_message_to_database(d, message, "ttl_on_view");
|
on_message_changed(d, message, "ttl_on_view");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8402,7 +8402,7 @@ void MessagesManager::ttl_loop(double now) {
|
|||||||
auto m = get_message(d, full_message_id.get_message_id());
|
auto m = get_message(d, full_message_id.get_message_id());
|
||||||
CHECK(m != nullptr);
|
CHECK(m != nullptr);
|
||||||
on_message_ttl_expired(d, m);
|
on_message_ttl_expired(d, m);
|
||||||
add_message_to_database(d, m, "ttl_loop");
|
on_message_changed(d, m, "ttl_loop");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (auto &it : to_delete) {
|
for (auto &it : to_delete) {
|
||||||
@ -9664,9 +9664,7 @@ void MessagesManager::on_update_message_web_page(FullMessageId full_message_id,
|
|||||||
content->web_page_id = WebPageId();
|
content->web_page_id = WebPageId();
|
||||||
// don't need to send an update
|
// don't need to send an update
|
||||||
|
|
||||||
if (!message_id.is_yet_unsent()) {
|
on_message_changed(d, message, "on_update_message_web_page");
|
||||||
add_message_to_database(d, message, "on_update_message_web_page");
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11022,9 +11020,7 @@ Status MessagesManager::delete_dialog_reply_markup(DialogId dialog_id, MessageId
|
|||||||
message->reply_markup->is_personal = false;
|
message->reply_markup->is_personal = false;
|
||||||
set_dialog_reply_markup(d, message_id);
|
set_dialog_reply_markup(d, message_id);
|
||||||
|
|
||||||
if (!message_id.is_yet_unsent()) {
|
on_message_changed(d, message, "delete_dialog_reply_markup");
|
||||||
add_message_to_database(d, message, "delete_dialog_reply_markup");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// non-bots can't have messages with RemoveKeyboard
|
// non-bots can't have messages with RemoveKeyboard
|
||||||
@ -11612,7 +11608,7 @@ Status MessagesManager::view_messages(DialogId dialog_id, const vector<MessageId
|
|||||||
update_message_contains_unread_mention(d, message, false)) {
|
update_message_contains_unread_mention(d, message, false)) {
|
||||||
CHECK(message_id.is_server());
|
CHECK(message_id.is_server());
|
||||||
read_content_message_ids.push_back(message_id);
|
read_content_message_ids.push_back(message_id);
|
||||||
add_message_to_database(d, message, "view_messages");
|
on_message_changed(d, message, "view_messages");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -21097,7 +21093,6 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
|
|||||||
set_dialog_first_database_message_id(d, message_id, "add_message_to_dialog");
|
set_dialog_first_database_message_id(d, message_id, "add_message_to_dialog");
|
||||||
try_restore_dialog_reply_markup(d, message.get());
|
try_restore_dialog_reply_markup(d, message.get());
|
||||||
}
|
}
|
||||||
LOG(INFO) << "Update last_database_message_id in " << dialog_id << " to " << d->last_database_message_id;
|
|
||||||
on_dialog_updated(dialog_id, "update_last_database_message_id");
|
on_dialog_updated(dialog_id, "update_last_database_message_id");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -21288,6 +21283,18 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
|
|||||||
return v->get();
|
return v->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MessagesManager::on_message_changed(const Dialog *d, const Message *m, const char *source) {
|
||||||
|
CHECK(d != nullptr);
|
||||||
|
CHECK(m != nullptr);
|
||||||
|
if (m->message_id == d->last_database_message_id) {
|
||||||
|
on_dialog_updated(d->dialog_id, source);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m->message_id.is_yet_unsent()) {
|
||||||
|
add_message_to_database(d, m, source);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MessagesManager::add_message_to_database(const Dialog *d, const Message *m, const char *source) {
|
void MessagesManager::add_message_to_database(const Dialog *d, const Message *m, const char *source) {
|
||||||
if (!G()->parameters().use_message_db) {
|
if (!G()->parameters().use_message_db) {
|
||||||
return;
|
return;
|
||||||
@ -21300,10 +21307,6 @@ void MessagesManager::add_message_to_database(const Dialog *d, const Message *m,
|
|||||||
|
|
||||||
LOG(INFO) << "Add " << FullMessageId(d->dialog_id, message_id) << " to database from " << source;
|
LOG(INFO) << "Add " << FullMessageId(d->dialog_id, message_id) << " to database from " << source;
|
||||||
|
|
||||||
if (message_id == d->last_database_message_id) {
|
|
||||||
on_dialog_updated(d->dialog_id, "update_last_database_message");
|
|
||||||
}
|
|
||||||
|
|
||||||
ServerMessageId unique_message_id;
|
ServerMessageId unique_message_id;
|
||||||
int64 random_id = 0;
|
int64 random_id = 0;
|
||||||
int64 search_id = 0;
|
int64 search_id = 0;
|
||||||
@ -21699,9 +21702,9 @@ void MessagesManager::update_message(Dialog *d, unique_ptr<Message> &old_message
|
|||||||
|
|
||||||
(void)is_changed;
|
(void)is_changed;
|
||||||
// need to save message always, because it might be added to some message index
|
// need to save message always, because it might be added to some message index
|
||||||
if (!message_id.is_yet_unsent() /*&& is_changed*/) {
|
// if (is_changed) {
|
||||||
add_message_to_database(d, old_message.get(), "update_message");
|
on_message_changed(d, old_message.get(), "update_message");
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MessagesManager::need_message_text_changed_warning(const Message *old_message, const MessageText *old_content,
|
bool MessagesManager::need_message_text_changed_warning(const Message *old_message, const MessageText *old_content,
|
||||||
|
@ -1999,6 +1999,8 @@ class MessagesManager : public Actor {
|
|||||||
Message *add_message_to_dialog(Dialog *d, unique_ptr<Message> message, bool from_update, bool *need_update,
|
Message *add_message_to_dialog(Dialog *d, unique_ptr<Message> message, bool from_update, bool *need_update,
|
||||||
bool *need_update_dialog_pos, const char *source);
|
bool *need_update_dialog_pos, const char *source);
|
||||||
|
|
||||||
|
void on_message_changed(const Dialog *d, const Message *m, const char *source);
|
||||||
|
|
||||||
void add_message_to_database(const Dialog *d, const Message *m, const char *source);
|
void add_message_to_database(const Dialog *d, const Message *m, const char *source);
|
||||||
|
|
||||||
void delete_all_dialog_messages_from_database(DialogId dialog_id, MessageId message_id, const char *source);
|
void delete_all_dialog_messages_from_database(DialogId dialog_id, MessageId message_id, const char *source);
|
||||||
|
Reference in New Issue
Block a user