Load all drafts when chat list is loaded first time.
GitOrigin-RevId: 5f9190a53ecb131f3493dfd0bf53c04c3bf9fe8f
This commit is contained in:
parent
beedcff506
commit
38696df14d
@ -118,6 +118,29 @@ class GetOnlinesQuery : public Td::ResultHandler {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class GetAllDraftsQuery : public Td::ResultHandler {
|
||||||
|
public:
|
||||||
|
void send() {
|
||||||
|
send_query(G()->net_query_creator().create(create_storer(telegram_api::messages_getAllDrafts())));
|
||||||
|
}
|
||||||
|
|
||||||
|
void on_result(uint64 id, BufferSlice packet) override {
|
||||||
|
auto result_ptr = fetch_result<telegram_api::messages_getAllDrafts>(packet);
|
||||||
|
if (result_ptr.is_error()) {
|
||||||
|
return on_error(id, result_ptr.move_as_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
auto ptr = result_ptr.move_as_ok();
|
||||||
|
LOG(INFO) << "Receive result for GetAllDraftsQuery: " << to_string(ptr);
|
||||||
|
td->updates_manager_->on_get_updates(std::move(ptr));
|
||||||
|
}
|
||||||
|
|
||||||
|
void on_error(uint64 id, Status status) override {
|
||||||
|
LOG(ERROR) << "Receive error for GetAllDraftsQuery: " << status;
|
||||||
|
status.ignore();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class GetDialogQuery : public Td::ResultHandler {
|
class GetDialogQuery : public Td::ResultHandler {
|
||||||
DialogId dialog_id_;
|
DialogId dialog_id_;
|
||||||
|
|
||||||
@ -12296,6 +12319,10 @@ void MessagesManager::load_dialog_list(FolderId folder_id, int32 limit, bool onl
|
|||||||
get_sequence_dispatcher_id(DialogId(), MessageContentType::None));
|
get_sequence_dispatcher_id(DialogId(), MessageContentType::None));
|
||||||
is_query_sent = true;
|
is_query_sent = true;
|
||||||
}
|
}
|
||||||
|
if (folder_id == FolderId::main() && list.last_server_dialog_date_ == MIN_DIALOG_DATE) {
|
||||||
|
// do not pass promise to not wait for drafts before showing chat list
|
||||||
|
td_->create_handler<GetAllDraftsQuery>()->send();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
CHECK(is_query_sent);
|
CHECK(is_query_sent);
|
||||||
}
|
}
|
||||||
@ -21926,6 +21953,11 @@ void MessagesManager::on_update_dialog_draft_message(DialogId dialog_id,
|
|||||||
auto d = get_dialog_force(dialog_id);
|
auto d = get_dialog_force(dialog_id);
|
||||||
if (d == nullptr) {
|
if (d == nullptr) {
|
||||||
LOG(INFO) << "Ignore update chat draft in unknown " << dialog_id;
|
LOG(INFO) << "Ignore update chat draft in unknown " << dialog_id;
|
||||||
|
if (!have_input_peer(dialog_id, AccessRights::Read)) {
|
||||||
|
LOG(ERROR) << "Have no read access to " << dialog_id << " to repair chat draft message";
|
||||||
|
} else {
|
||||||
|
send_get_dialog_query(dialog_id, Promise<Unit>());
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
update_dialog_draft_message(d, get_draft_message(td_->contacts_manager_.get(), std::move(draft_message)), true, true);
|
update_dialog_draft_message(d, get_draft_message(td_->contacts_manager_.get(), std::move(draft_message)), true, true);
|
||||||
|
Reference in New Issue
Block a user