Add change_message_files function.
GitOrigin-RevId: 3b6faf4c55cb11281ef98afc32534fb221716c1b
This commit is contained in:
parent
415229bfa6
commit
8d8c3cacd4
|
@ -15798,6 +15798,27 @@ void MessagesManager::remove_message_file_sources(DialogId dialog_id, const Mess
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MessagesManager::change_message_files(DialogId dialog_id, const Message *m, const vector<FileId> &old_file_ids) {
|
||||||
|
auto new_file_ids = get_message_content_file_ids(m->content.get(), td_);
|
||||||
|
if (new_file_ids == old_file_ids) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FullMessageId full_message_id{dialog_id, m->message_id};
|
||||||
|
if (need_delete_message_files(dialog_id, m)) {
|
||||||
|
for (auto file_id : old_file_ids) {
|
||||||
|
if (!td::contains(new_file_ids, file_id) && need_delete_file(full_message_id, file_id)) {
|
||||||
|
send_closure(G()->file_manager(), &FileManager::delete_file, file_id, Promise<>(), "change_message_files");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
auto file_source_id = get_message_file_source_id(full_message_id);
|
||||||
|
if (file_source_id.is_valid()) {
|
||||||
|
td_->file_manager_->change_files_source(file_source_id, old_file_ids, new_file_ids);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MessageId MessagesManager::get_first_database_message_id_by_index(const Dialog *d, SearchMessagesFilter filter) {
|
MessageId MessagesManager::get_first_database_message_id_by_index(const Dialog *d, SearchMessagesFilter filter) {
|
||||||
CHECK(d != nullptr);
|
CHECK(d != nullptr);
|
||||||
auto message_id = filter == SearchMessagesFilter::Empty
|
auto message_id = filter == SearchMessagesFilter::Empty
|
||||||
|
@ -24781,23 +24802,7 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
|
||||||
if (was_deleted) {
|
if (was_deleted) {
|
||||||
try_add_active_live_location(dialog_id, m);
|
try_add_active_live_location(dialog_id, m);
|
||||||
}
|
}
|
||||||
auto new_file_ids = get_message_content_file_ids(m->content.get(), td_);
|
change_message_files(dialog_id, m, old_file_ids);
|
||||||
if (new_file_ids != old_file_ids) {
|
|
||||||
if (need_delete_message_files(dialog_id, m)) {
|
|
||||||
FullMessageId full_message_id{dialog_id, message_id};
|
|
||||||
for (auto file_id : old_file_ids) {
|
|
||||||
if (!td::contains(new_file_ids, file_id) && need_delete_file(full_message_id, file_id)) {
|
|
||||||
send_closure(G()->file_manager(), &FileManager::delete_file, file_id, Promise<>(),
|
|
||||||
"edit message in add_message_to_dialog");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
auto file_source_id = get_message_file_source_id(FullMessageId(dialog_id, message_id));
|
|
||||||
if (file_source_id.is_valid()) {
|
|
||||||
td_->file_manager_->change_files_source(file_source_id, old_file_ids, new_file_ids);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (need_send_update && m->notification_id.is_valid() && is_message_notification_active(d, m)) {
|
if (need_send_update && m->notification_id.is_valid() && is_message_notification_active(d, m)) {
|
||||||
auto &group_info = get_notification_group_info(d, m);
|
auto &group_info = get_notification_group_info(d, m);
|
||||||
if (group_info.group_id.is_valid()) {
|
if (group_info.group_id.is_valid()) {
|
||||||
|
@ -25381,23 +25386,7 @@ MessagesManager::Message *MessagesManager::add_scheduled_message_to_dialog(Dialo
|
||||||
bool need_update_dialog_pos = false;
|
bool need_update_dialog_pos = false;
|
||||||
update_message(d, m, std::move(message), &need_update_dialog_pos);
|
update_message(d, m, std::move(message), &need_update_dialog_pos);
|
||||||
CHECK(need_update_dialog_pos == false);
|
CHECK(need_update_dialog_pos == false);
|
||||||
auto new_file_ids = get_message_content_file_ids(m->content.get(), td_);
|
change_message_files(dialog_id, m, old_file_ids);
|
||||||
if (new_file_ids != old_file_ids) {
|
|
||||||
if (need_delete_message_files(dialog_id, m)) {
|
|
||||||
FullMessageId full_message_id{dialog_id, message_id};
|
|
||||||
for (auto file_id : old_file_ids) {
|
|
||||||
if (!td::contains(new_file_ids, file_id) && need_delete_file(full_message_id, file_id)) {
|
|
||||||
send_closure(G()->file_manager(), &FileManager::delete_file, file_id, Promise<>(),
|
|
||||||
"edit message in add_scheduled_message_to_dialog");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
auto file_source_id = get_message_file_source_id(FullMessageId(dialog_id, message_id));
|
|
||||||
if (file_source_id.is_valid()) {
|
|
||||||
td_->file_manager_->change_files_source(file_source_id, old_file_ids, new_file_ids);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2118,6 +2118,8 @@ class MessagesManager : public Actor {
|
||||||
|
|
||||||
void remove_message_file_sources(DialogId dialog_id, const Message *m);
|
void remove_message_file_sources(DialogId dialog_id, const Message *m);
|
||||||
|
|
||||||
|
void change_message_files(DialogId dialog_id, const Message *m, const vector<FileId> &old_file_ids);
|
||||||
|
|
||||||
Result<unique_ptr<ReplyMarkup>> get_dialog_reply_markup(
|
Result<unique_ptr<ReplyMarkup>> get_dialog_reply_markup(
|
||||||
DialogId dialog_id, tl_object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr) const TD_WARN_UNUSED_RESULT;
|
DialogId dialog_id, tl_object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr) const TD_WARN_UNUSED_RESULT;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user