Support General topic in getMessageThread.
This commit is contained in:
parent
89efc4feca
commit
42af57ee05
@ -18582,19 +18582,24 @@ void MessagesManager::get_message_thread(DialogId dialog_id, MessageId message_i
|
|||||||
return promise.set_error(Status::Error(400, "Scheduled messages can't have message threads"));
|
return promise.set_error(Status::Error(400, "Scheduled messages can't have message threads"));
|
||||||
}
|
}
|
||||||
|
|
||||||
message_id = get_persistent_message_id(d, message_id);
|
FullMessageId top_thread_full_message_id;
|
||||||
auto m = get_message_force(d, message_id, "get_message_thread");
|
if (message_id == MessageId(ServerMessageId(1)) && is_forum_channel(dialog_id)) {
|
||||||
if (m == nullptr) {
|
top_thread_full_message_id = FullMessageId{dialog_id, message_id};
|
||||||
return promise.set_error(Status::Error(400, "Message not found"));
|
} else {
|
||||||
}
|
message_id = get_persistent_message_id(d, message_id);
|
||||||
|
auto m = get_message_force(d, message_id, "get_message_thread");
|
||||||
|
if (m == nullptr) {
|
||||||
|
return promise.set_error(Status::Error(400, "Message not found"));
|
||||||
|
}
|
||||||
|
|
||||||
TRY_RESULT_PROMISE(promise, top_thread_full_message_id, get_top_thread_full_message_id(dialog_id, m, true));
|
TRY_RESULT_PROMISE_ASSIGN(promise, top_thread_full_message_id, get_top_thread_full_message_id(dialog_id, m, true));
|
||||||
if ((m->reply_info.is_empty() || !m->reply_info.is_comment_) &&
|
if ((m->reply_info.is_empty() || !m->reply_info.is_comment_) &&
|
||||||
top_thread_full_message_id.get_message_id() != m->message_id) {
|
top_thread_full_message_id.get_message_id() != m->message_id) {
|
||||||
CHECK(dialog_id == top_thread_full_message_id.get_dialog_id());
|
CHECK(dialog_id == top_thread_full_message_id.get_dialog_id());
|
||||||
// get information about the thread from the top message
|
// get information about the thread from the top message
|
||||||
message_id = top_thread_full_message_id.get_message_id();
|
message_id = top_thread_full_message_id.get_message_id();
|
||||||
CHECK(message_id.is_valid());
|
CHECK(message_id.is_valid());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto query_promise = PromiseCreator::lambda([actor_id = actor_id(this), dialog_id, message_id,
|
auto query_promise = PromiseCreator::lambda([actor_id = actor_id(this), dialog_id, message_id,
|
||||||
@ -18707,6 +18712,9 @@ void MessagesManager::on_get_discussion_message(DialogId dialog_id, MessageId me
|
|||||||
return promise.set_error(Status::Error(400, "Message has no comments"));
|
return promise.set_error(Status::Error(400, "Message has no comments"));
|
||||||
}
|
}
|
||||||
expected_dialog_id = DialogId(m->reply_info.channel_id_);
|
expected_dialog_id = DialogId(m->reply_info.channel_id_);
|
||||||
|
} else if (message_id == MessageId(ServerMessageId(1)) && is_forum_channel(dialog_id)) {
|
||||||
|
// General forum topic
|
||||||
|
expected_dialog_id = dialog_id;
|
||||||
} else {
|
} else {
|
||||||
if (!m->top_thread_message_id.is_valid()) {
|
if (!m->top_thread_message_id.is_valid()) {
|
||||||
return promise.set_error(Status::Error(400, "Message has no thread"));
|
return promise.set_error(Status::Error(400, "Message has no thread"));
|
||||||
@ -18760,6 +18768,9 @@ td_api::object_ptr<td_api::messageThreadInfo> MessagesManager::get_message_threa
|
|||||||
}
|
}
|
||||||
if (messages.size() != 1) {
|
if (messages.size() != 1) {
|
||||||
is_forum_topic = false;
|
is_forum_topic = false;
|
||||||
|
} else if (info.message_ids[0] == MessageId(ServerMessageId(1)) && is_forum_channel(info.dialog_id)) {
|
||||||
|
// General forum topic
|
||||||
|
is_forum_topic = true;
|
||||||
}
|
}
|
||||||
if (reply_info == nullptr && !is_forum_topic) {
|
if (reply_info == nullptr && !is_forum_topic) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -2241,10 +2241,11 @@ class CliClient final : public Actor {
|
|||||||
MessageId from_message_id;
|
MessageId from_message_id;
|
||||||
int32 offset;
|
int32 offset;
|
||||||
string limit;
|
string limit;
|
||||||
|
get_args(args, chat_id, args);
|
||||||
if (op == "gmth") {
|
if (op == "gmth") {
|
||||||
get_args(args, thread_message_id, args);
|
get_args(args, thread_message_id, args);
|
||||||
}
|
}
|
||||||
get_args(args, chat_id, from_message_id, offset, limit);
|
get_args(args, from_message_id, offset, limit);
|
||||||
if (op == "gmth") {
|
if (op == "gmth") {
|
||||||
send_request(td_api::make_object<td_api::getMessageThreadHistory>(chat_id, thread_message_id, from_message_id,
|
send_request(td_api::make_object<td_api::getMessageThreadHistory>(chat_id, thread_message_id, from_message_id,
|
||||||
offset, as_limit(limit)));
|
offset, as_limit(limit)));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user