Add td_api::setPinnedSavedMessagesTopics.
This commit is contained in:
parent
af43242ca7
commit
20c4815a12
@ -7197,6 +7197,9 @@ deleteSavedMessagesTopicMessagesByDate saved_messages_topic:SavedMessagesTopic m
|
|||||||
//@is_pinned Pass true to pin the topic; pass false to unpin it
|
//@is_pinned Pass true to pin the topic; pass false to unpin it
|
||||||
toggleSavedMessagesTopicIsPinned saved_messages_topic:SavedMessagesTopic is_pinned:Bool = Ok;
|
toggleSavedMessagesTopicIsPinned saved_messages_topic:SavedMessagesTopic is_pinned:Bool = Ok;
|
||||||
|
|
||||||
|
//@description Changes the order of pinned Saved Messages topics @saved_messages_topics The new list of pinned Saved Messages topics
|
||||||
|
setPinnedSavedMessagesTopics saved_messages_topics:vector<SavedMessagesTopic> = Ok;
|
||||||
|
|
||||||
|
|
||||||
//@description Returns a list of common group chats with a given user. Chats are sorted by their type and creation date
|
//@description Returns a list of common group chats with a given user. Chats are sorted by their type and creation date
|
||||||
//@user_id User identifier
|
//@user_id User identifier
|
||||||
|
@ -383,6 +383,43 @@ class ToggleSavedDialogPinQuery final : public Td::ResultHandler {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ReorderPinnedSavedDialogsQuery final : public Td::ResultHandler {
|
||||||
|
Promise<Unit> promise_;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit ReorderPinnedSavedDialogsQuery(Promise<Unit> &&promise) : promise_(std::move(promise)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void send(const vector<SavedMessagesTopicId> &saved_messages_topic_ids) {
|
||||||
|
auto order = transform(saved_messages_topic_ids, [td = td_](SavedMessagesTopicId saved_messages_topic_id) {
|
||||||
|
auto saved_input_peer = saved_messages_topic_id.get_input_dialog_peer(td);
|
||||||
|
CHECK(saved_input_peer != nullptr);
|
||||||
|
return saved_input_peer;
|
||||||
|
});
|
||||||
|
int32 flags = telegram_api::messages_reorderPinnedSavedDialogs::FORCE_MASK;
|
||||||
|
send_query(G()->net_query_creator().create(
|
||||||
|
telegram_api::messages_reorderPinnedSavedDialogs(flags, true /*ignored*/, std::move(order))));
|
||||||
|
}
|
||||||
|
|
||||||
|
void on_result(BufferSlice packet) final {
|
||||||
|
auto result_ptr = fetch_result<telegram_api::messages_reorderPinnedSavedDialogs>(packet);
|
||||||
|
if (result_ptr.is_error()) {
|
||||||
|
return on_error(result_ptr.move_as_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool result = result_ptr.move_as_ok();
|
||||||
|
if (!result) {
|
||||||
|
return on_error(Status::Error(400, "Result is false"));
|
||||||
|
}
|
||||||
|
td_->messages_manager_->on_update_pinned_saved_messages_topics();
|
||||||
|
promise_.set_value(Unit());
|
||||||
|
}
|
||||||
|
|
||||||
|
void on_error(Status status) final {
|
||||||
|
promise_.set_error(std::move(status));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class GetDialogUnreadMarksQuery final : public Td::ResultHandler {
|
class GetDialogUnreadMarksQuery final : public Td::ResultHandler {
|
||||||
public:
|
public:
|
||||||
void send() {
|
void send() {
|
||||||
@ -16332,6 +16369,14 @@ void MessagesManager::toggle_saved_messages_topic_is_pinned(SavedMessagesTopicId
|
|||||||
td_->create_handler<ToggleSavedDialogPinQuery>(std::move(promise))->send(saved_messages_topic_id, is_pinned);
|
td_->create_handler<ToggleSavedDialogPinQuery>(std::move(promise))->send(saved_messages_topic_id, is_pinned);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MessagesManager::set_pinned_saved_messages_topics(vector<SavedMessagesTopicId> saved_messages_topic_ids,
|
||||||
|
Promise<Unit> &&promise) {
|
||||||
|
for (const auto &saved_messages_topic_id : saved_messages_topic_ids) {
|
||||||
|
TRY_STATUS_PROMISE(promise, saved_messages_topic_id.is_valid_status(td_));
|
||||||
|
}
|
||||||
|
td_->create_handler<ReorderPinnedSavedDialogsQuery>(std::move(promise))->send(std::move(saved_messages_topic_ids));
|
||||||
|
}
|
||||||
|
|
||||||
void MessagesManager::on_update_pinned_saved_messages_topics() {
|
void MessagesManager::on_update_pinned_saved_messages_topics() {
|
||||||
if (td_->auth_manager_->is_bot()) {
|
if (td_->auth_manager_->is_bot()) {
|
||||||
// just in case
|
// just in case
|
||||||
|
@ -552,6 +552,8 @@ class MessagesManager final : public Actor {
|
|||||||
void toggle_saved_messages_topic_is_pinned(SavedMessagesTopicId saved_messages_topic_id, bool is_pinned,
|
void toggle_saved_messages_topic_is_pinned(SavedMessagesTopicId saved_messages_topic_id, bool is_pinned,
|
||||||
Promise<Unit> &&promise);
|
Promise<Unit> &&promise);
|
||||||
|
|
||||||
|
void set_pinned_saved_messages_topics(vector<SavedMessagesTopicId> saved_messages_topic_ids, Promise<Unit> &&promise);
|
||||||
|
|
||||||
void on_update_pinned_saved_messages_topics();
|
void on_update_pinned_saved_messages_topics();
|
||||||
|
|
||||||
vector<DialogId> search_public_dialogs(const string &query, Promise<Unit> &&promise);
|
vector<DialogId> search_public_dialogs(const string &query, Promise<Unit> &&promise);
|
||||||
|
@ -5071,6 +5071,14 @@ void Td::on_request(uint64 id, const td_api::toggleSavedMessagesTopicIsPinned &r
|
|||||||
request.is_pinned_, std::move(promise));
|
request.is_pinned_, std::move(promise));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Td::on_request(uint64 id, const td_api::setPinnedSavedMessagesTopics &request) {
|
||||||
|
CHECK_IS_USER();
|
||||||
|
CREATE_OK_REQUEST_PROMISE();
|
||||||
|
auto saved_messages_topic_ids = transform(request.saved_messages_topics_,
|
||||||
|
[td = this](const auto &topic) { return SavedMessagesTopicId(td, topic); });
|
||||||
|
messages_manager_->set_pinned_saved_messages_topics(std::move(saved_messages_topic_ids), std::move(promise));
|
||||||
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, td_api::searchPublicChat &request) {
|
void Td::on_request(uint64 id, td_api::searchPublicChat &request) {
|
||||||
CLEAN_INPUT_STRING(request.username_);
|
CLEAN_INPUT_STRING(request.username_);
|
||||||
CREATE_REQUEST(SearchPublicChatRequest, request.username_);
|
CREATE_REQUEST(SearchPublicChatRequest, request.username_);
|
||||||
|
@ -685,6 +685,8 @@ class Td final : public Actor {
|
|||||||
|
|
||||||
void on_request(uint64 id, const td_api::toggleSavedMessagesTopicIsPinned &request);
|
void on_request(uint64 id, const td_api::toggleSavedMessagesTopicIsPinned &request);
|
||||||
|
|
||||||
|
void on_request(uint64 id, const td_api::setPinnedSavedMessagesTopics &request);
|
||||||
|
|
||||||
void on_request(uint64 id, td_api::searchPublicChat &request);
|
void on_request(uint64 id, td_api::searchPublicChat &request);
|
||||||
|
|
||||||
void on_request(uint64 id, td_api::searchPublicChats &request);
|
void on_request(uint64 id, td_api::searchPublicChats &request);
|
||||||
|
@ -946,17 +946,21 @@ class CliClient final : public Actor {
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
td_api::object_ptr<td_api::SavedMessagesTopic> get_saved_messages_topic() const {
|
td_api::object_ptr<td_api::SavedMessagesTopic> as_saved_messages_topic(int64 saved_messages_topic) const {
|
||||||
if (saved_messages_topic_ == 0) {
|
if (saved_messages_topic == 0) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
if (saved_messages_topic_ == my_id_) {
|
if (saved_messages_topic == my_id_) {
|
||||||
return td_api::make_object<td_api::savedMessagesTopicMyNotes>();
|
return td_api::make_object<td_api::savedMessagesTopicMyNotes>();
|
||||||
}
|
}
|
||||||
if (saved_messages_topic_ == -1) {
|
if (saved_messages_topic == -1) {
|
||||||
return td_api::make_object<td_api::savedMessagesTopicAuthorHidden>();
|
return td_api::make_object<td_api::savedMessagesTopicAuthorHidden>();
|
||||||
}
|
}
|
||||||
return td_api::make_object<td_api::savedMessagesTopicSavedFromChat>(saved_messages_topic_);
|
return td_api::make_object<td_api::savedMessagesTopicSavedFromChat>(saved_messages_topic);
|
||||||
|
}
|
||||||
|
|
||||||
|
td_api::object_ptr<td_api::SavedMessagesTopic> get_saved_messages_topic() const {
|
||||||
|
return as_saved_messages_topic(saved_messages_topic_);
|
||||||
}
|
}
|
||||||
|
|
||||||
td_api::object_ptr<td_api::linkPreviewOptions> get_link_preview_options() const {
|
td_api::object_ptr<td_api::linkPreviewOptions> get_link_preview_options() const {
|
||||||
@ -2780,6 +2784,9 @@ class CliClient final : public Actor {
|
|||||||
get_args(args, is_pinned);
|
get_args(args, is_pinned);
|
||||||
send_request(
|
send_request(
|
||||||
td_api::make_object<td_api::toggleSavedMessagesTopicIsPinned>(get_saved_messages_topic(), is_pinned));
|
td_api::make_object<td_api::toggleSavedMessagesTopicIsPinned>(get_saved_messages_topic(), is_pinned));
|
||||||
|
} else if (op == "spsmt") {
|
||||||
|
send_request(td_api::make_object<td_api::setPinnedSavedMessagesTopics>(
|
||||||
|
transform(autosplit(args), [this](Slice str) { return as_saved_messages_topic(as_chat_id(str)); })));
|
||||||
} else if (op == "gcc" || op == "GetCommonChats") {
|
} else if (op == "gcc" || op == "GetCommonChats") {
|
||||||
UserId user_id;
|
UserId user_id;
|
||||||
ChatId offset_chat_id;
|
ChatId offset_chat_id;
|
||||||
|
Loading…
Reference in New Issue
Block a user