Use InvokeAfter for setChatDefaultMessageSender.
This commit is contained in:
parent
10c03c450f
commit
a72d1c2639
@ -2945,22 +2945,25 @@ class GetSendAsQuery final : public Td::ResultHandler {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class SaveDefaultSendAsQuery final : public Td::ResultHandler {
|
class SaveDefaultSendAsActor final : public NetActorOnce {
|
||||||
Promise<Unit> promise_;
|
Promise<Unit> promise_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SaveDefaultSendAsQuery(Promise<Unit> &&promise) : promise_(std::move(promise)) {
|
explicit SaveDefaultSendAsActor(Promise<Unit> &&promise) : promise_(std::move(promise)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void send(DialogId dialog_id, DialogId send_as_dialog_id) {
|
void send(DialogId dialog_id, DialogId send_as_dialog_id, uint64 sequence_dispatcher_id) {
|
||||||
auto input_peer = td_->messages_manager_->get_input_peer(dialog_id, AccessRights::Read);
|
auto input_peer = td_->messages_manager_->get_input_peer(dialog_id, AccessRights::Read);
|
||||||
CHECK(input_peer != nullptr);
|
CHECK(input_peer != nullptr);
|
||||||
|
|
||||||
auto send_as_input_peer = td_->messages_manager_->get_input_peer(send_as_dialog_id, AccessRights::Read);
|
auto send_as_input_peer = td_->messages_manager_->get_input_peer(send_as_dialog_id, AccessRights::Read);
|
||||||
CHECK(send_as_input_peer != nullptr);
|
CHECK(send_as_input_peer != nullptr);
|
||||||
|
|
||||||
send_query(G()->net_query_creator().create(
|
auto query = G()->net_query_creator().create(
|
||||||
telegram_api::messages_saveDefaultSendAs(std::move(input_peer), std::move(send_as_input_peer))));
|
telegram_api::messages_saveDefaultSendAs(std::move(input_peer), std::move(send_as_input_peer)));
|
||||||
|
query->debug("send to MessagesManager::MultiSequenceDispatcher");
|
||||||
|
send_closure(td_->messages_manager_->sequence_dispatcher_, &MultiSequenceDispatcher::send_with_callback,
|
||||||
|
std::move(query), actor_shared(this), sequence_dispatcher_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_result(BufferSlice packet) final {
|
void on_result(BufferSlice packet) final {
|
||||||
@ -2970,13 +2973,13 @@ class SaveDefaultSendAsQuery final : public Td::ResultHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto success = result_ptr.move_as_ok();
|
auto success = result_ptr.move_as_ok();
|
||||||
LOG(INFO) << "Receive result for SaveDefaultSendAsQuery: " << success;
|
LOG(INFO) << "Receive result for SaveDefaultSendAsActor: " << success;
|
||||||
|
|
||||||
promise_.set_value(Unit());
|
promise_.set_value(Unit());
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_error(Status status) final {
|
void on_error(Status status) final {
|
||||||
// td_->messages_manager_->on_get_dialog_error(dialog_id_, status, "SaveDefaultSendAsQuery");
|
// td_->messages_manager_->on_get_dialog_error(dialog_id_, status, "SaveDefaultSendAsActor");
|
||||||
promise_.set_error(std::move(status));
|
promise_.set_error(std::move(status));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -23991,7 +23994,10 @@ void MessagesManager::set_dialog_default_send_message_as_dialog_id(DialogId dial
|
|||||||
return promise.set_error(Status::Error(400, "Can't access specified default message sender chat"));
|
return promise.set_error(Status::Error(400, "Can't access specified default message sender chat"));
|
||||||
}
|
}
|
||||||
|
|
||||||
td_->create_handler<SaveDefaultSendAsQuery>(std::move(promise))->send(dialog_id, message_sender_dialog_id);
|
// TODO save order with all types of messages
|
||||||
|
send_closure(td_->create_net_actor<SaveDefaultSendAsActor>(std::move(promise)), &SaveDefaultSendAsActor::send,
|
||||||
|
dialog_id, message_sender_dialog_id, get_sequence_dispatcher_id(dialog_id, MessageContentType::Text));
|
||||||
|
|
||||||
on_update_dialog_default_send_message_as_dialog_id(dialog_id, message_sender_dialog_id, true);
|
on_update_dialog_default_send_message_as_dialog_id(dialog_id, message_sender_dialog_id, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user