Simplify DeletePhoneCallHistoryQuery.
This commit is contained in:
parent
e9695d2fcc
commit
f78f3407f8
@ -22,6 +22,12 @@ struct AffectedHistory {
|
|||||||
, pts_count_(affected_history->pts_count_)
|
, pts_count_(affected_history->pts_count_)
|
||||||
, is_final_(affected_history->offset_ <= 0) {
|
, is_final_(affected_history->offset_ <= 0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
explicit AffectedHistory(tl_object_ptr<telegram_api::messages_affectedFoundMessages> &&affected_history)
|
||||||
|
: pts_(affected_history->pts_)
|
||||||
|
, pts_count_(affected_history->pts_count_)
|
||||||
|
, is_final_(affected_history->offset_ <= 0) {
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace td
|
} // namespace td
|
||||||
|
@ -2757,28 +2757,21 @@ class DeleteMessagesByDateQuery final : public Td::ResultHandler {
|
|||||||
};
|
};
|
||||||
|
|
||||||
class DeletePhoneCallHistoryQuery final : public Td::ResultHandler {
|
class DeletePhoneCallHistoryQuery final : public Td::ResultHandler {
|
||||||
Promise<Unit> promise_;
|
Promise<AffectedHistory> promise_;
|
||||||
bool revoke_;
|
|
||||||
|
|
||||||
void send_request() {
|
public:
|
||||||
|
explicit DeletePhoneCallHistoryQuery(Promise<AffectedHistory> &&promise) : promise_(std::move(promise)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void send(bool revoke) {
|
||||||
int32 flags = 0;
|
int32 flags = 0;
|
||||||
if (revoke_) {
|
if (revoke) {
|
||||||
flags |= telegram_api::messages_deletePhoneCallHistory::REVOKE_MASK;
|
flags |= telegram_api::messages_deletePhoneCallHistory::REVOKE_MASK;
|
||||||
}
|
}
|
||||||
send_query(
|
send_query(
|
||||||
G()->net_query_creator().create(telegram_api::messages_deletePhoneCallHistory(flags, false /*ignored*/)));
|
G()->net_query_creator().create(telegram_api::messages_deletePhoneCallHistory(flags, false /*ignored*/)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
|
||||||
explicit DeletePhoneCallHistoryQuery(Promise<Unit> &&promise) : promise_(std::move(promise)) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void send(bool revoke) {
|
|
||||||
revoke_ = revoke;
|
|
||||||
|
|
||||||
send_request();
|
|
||||||
}
|
|
||||||
|
|
||||||
void on_result(BufferSlice packet) final {
|
void on_result(BufferSlice packet) final {
|
||||||
auto result_ptr = fetch_result<telegram_api::messages_deletePhoneCallHistory>(packet);
|
auto result_ptr = fetch_result<telegram_api::messages_deletePhoneCallHistory>(packet);
|
||||||
if (result_ptr.is_error()) {
|
if (result_ptr.is_error()) {
|
||||||
@ -2786,24 +2779,11 @@ class DeletePhoneCallHistoryQuery final : public Td::ResultHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto affected_messages = result_ptr.move_as_ok();
|
auto affected_messages = result_ptr.move_as_ok();
|
||||||
CHECK(affected_messages->get_id() == telegram_api::messages_affectedFoundMessages::ID);
|
if (!affected_messages->messages_.empty()) {
|
||||||
|
td_->messages_manager_->process_pts_update(
|
||||||
if (affected_messages->pts_count_ > 0) {
|
make_tl_object<telegram_api::updateDeleteMessages>(std::move(affected_messages->messages_), 0, 0));
|
||||||
auto promise = affected_messages->offset_ > 0 ? Promise<Unit>() : std::move(promise_);
|
|
||||||
auto pts = affected_messages->pts_;
|
|
||||||
auto pts_count = affected_messages->pts_count_;
|
|
||||||
auto update =
|
|
||||||
make_tl_object<telegram_api::updateDeleteMessages>(std::move(affected_messages->messages_), pts, pts_count);
|
|
||||||
td_->updates_manager_->add_pending_pts_update(std::move(update), pts, pts_count, Time::now(), std::move(promise),
|
|
||||||
"delete phone call history query");
|
|
||||||
} else if (affected_messages->offset_ <= 0) {
|
|
||||||
promise_.set_value(Unit());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (affected_messages->offset_ > 0) {
|
|
||||||
send_request();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
promise_.set_value(AffectedHistory(std::move(affected_messages)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_error(Status status) final {
|
void on_error(Status status) final {
|
||||||
@ -10733,10 +10713,11 @@ void MessagesManager::delete_all_call_messages_on_server(bool revoke, uint64 log
|
|||||||
log_event_id = save_delete_all_call_messages_on_server_log_event(revoke);
|
log_event_id = save_delete_all_call_messages_on_server_log_event(revoke);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto new_promise = get_erase_log_event_promise(log_event_id, std::move(promise));
|
AffectedHistoryQuery query = [td = td_, revoke](DialogId /*dialog_id*/, Promise<AffectedHistory> &&query_promise) {
|
||||||
promise = std::move(new_promise); // to prevent self-move
|
td->create_handler<DeletePhoneCallHistoryQuery>(std::move(query_promise))->send(revoke);
|
||||||
|
};
|
||||||
td_->create_handler<DeletePhoneCallHistoryQuery>(std::move(promise))->send(revoke);
|
run_affected_history_query_until_complete(DialogId(), std::move(query), false,
|
||||||
|
get_erase_log_event_promise(log_event_id, std::move(promise)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesManager::find_messages(const Message *m, vector<MessageId> &message_ids,
|
void MessagesManager::find_messages(const Message *m, vector<MessageId> &message_ids,
|
||||||
|
Loading…
Reference in New Issue
Block a user