Allow to create chats without network request.
GitOrigin-RevId: f17bbe43c58246b6ab2bd48a746b00cae5cd1865
This commit is contained in:
parent
dbe1509a33
commit
fe133efefc
@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)
|
cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)
|
||||||
|
|
||||||
project(TDLib VERSION 1.0.4 LANGUAGES CXX C)
|
project(TDLib VERSION 1.0.5 LANGUAGES CXX C)
|
||||||
|
|
||||||
option(TD_ENABLE_JNI "Use \"ON\" to enable JNI-compatible TDLib API.")
|
option(TD_ENABLE_JNI "Use \"ON\" to enable JNI-compatible TDLib API.")
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ target_link_library(YourLibrary Td::TdJson)
|
|||||||
|
|
||||||
Or you could install `TDLib` and then reference it in your CMakeLists.txt like this:
|
Or you could install `TDLib` and then reference it in your CMakeLists.txt like this:
|
||||||
```
|
```
|
||||||
find_package(Td 1.0.4)
|
find_package(Td 1.0.5)
|
||||||
target_link_library(YourLibrary Td::TdJson)
|
target_link_library(YourLibrary Td::TdJson)
|
||||||
```
|
```
|
||||||
See [example/cpp/CMakeLists.txt](https://github.com/tdlib/td/tree/master/example/cpp/CMakeLists.txt).
|
See [example/cpp/CMakeLists.txt](https://github.com/tdlib/td/tree/master/example/cpp/CMakeLists.txt).
|
||||||
|
@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
|
|||||||
|
|
||||||
project(TdExample VERSION 1.0 LANGUAGES CXX)
|
project(TdExample VERSION 1.0 LANGUAGES CXX)
|
||||||
|
|
||||||
find_package(Td 1.0.4 REQUIRED)
|
find_package(Td 1.0.5 REQUIRED)
|
||||||
|
|
||||||
add_executable(tdjson_example tdjson_example.cpp)
|
add_executable(tdjson_example tdjson_example.cpp)
|
||||||
target_link_libraries(tdjson_example PRIVATE Td::TdJson)
|
target_link_libraries(tdjson_example PRIVATE Td::TdJson)
|
||||||
|
@ -2263,16 +2263,16 @@ openMessageContent chat_id:int53 message_id:int53 = Ok;
|
|||||||
readAllChatMentions chat_id:int53 = Ok;
|
readAllChatMentions chat_id:int53 = Ok;
|
||||||
|
|
||||||
|
|
||||||
//@description Returns an existing chat corresponding to a given user @user_id User identifier
|
//@description Returns an existing chat corresponding to a given user @user_id User identifier @force If true, the chat will be created without network request. In this case all information about the chat except its type, title and photo can be incorrect
|
||||||
createPrivateChat user_id:int32 = Chat;
|
createPrivateChat user_id:int32 force:Bool = Chat;
|
||||||
|
|
||||||
//@description Returns an existing chat corresponding to a known basic group @basic_group_id Basic group identifier
|
//@description Returns an existing chat corresponding to a known basic group @basic_group_id Basic group identifier @force If true, the chat will be created without network request. In this case all information about the chat except its type, title and photo can be incorrect
|
||||||
createBasicGroupChat basic_group_id:int32 = Chat;
|
createBasicGroupChat basic_group_id:int32 force:Bool = Chat;
|
||||||
|
|
||||||
//@description Returns an existing chat corresponding to a known supergroup or channel @supergroup_id Supergroup or channel identifier
|
//@description Returns an existing chat corresponding to a known supergroup or channel @supergroup_id Supergroup or channel identifier @force If true, the chat will be created without network request. In this case all information about the chat except its type, title and photo can be incorrect
|
||||||
createSupergroupChat supergroup_id:int32 = Chat;
|
createSupergroupChat supergroup_id:int32 force:Bool = Chat;
|
||||||
|
|
||||||
//@description Returns an existing chat corresponding to a known secret chat @secret_chat_id Secret Chat identifier
|
//@description Returns an existing chat corresponding to a known secret chat @secret_chat_id Secret chat identifier
|
||||||
createSecretChat secret_chat_id:int32 = Chat;
|
createSecretChat secret_chat_id:int32 = Chat;
|
||||||
|
|
||||||
//@description Creates a new basic group and sends a corresponding messageBasicGroupChatCreate. Returns the newly created chat @user_ids Identifiers of users to be added to the basic group @title Title of the new basic group; 1-255 characters
|
//@description Creates a new basic group and sends a corresponding messageBasicGroupChatCreate. Returns the newly created chat @user_ids Identifiers of users to be added to the basic group @title Title of the new basic group; 1-255 characters
|
||||||
|
Binary file not shown.
@ -11366,7 +11366,7 @@ Status MessagesManager::set_dialog_client_data(DialogId dialog_id, string &&clie
|
|||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesManager::create_dialog(DialogId dialog_id, Promise<Unit> &&promise) {
|
void MessagesManager::create_dialog(DialogId dialog_id, bool force, Promise<Unit> &&promise) {
|
||||||
if (!have_input_peer(dialog_id, AccessRights::Read)) {
|
if (!have_input_peer(dialog_id, AccessRights::Read)) {
|
||||||
if (!have_dialog_info_force(dialog_id)) {
|
if (!have_dialog_info_force(dialog_id)) {
|
||||||
return promise.set_error(Status::Error(6, "Chat info not found"));
|
return promise.set_error(Status::Error(6, "Chat info not found"));
|
||||||
@ -11376,7 +11376,7 @@ void MessagesManager::create_dialog(DialogId dialog_id, Promise<Unit> &&promise)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (td_->auth_manager_->is_bot() || dialog_id.get_type() == DialogType::SecretChat) {
|
if (force || td_->auth_manager_->is_bot() || dialog_id.get_type() == DialogType::SecretChat) {
|
||||||
force_create_dialog(dialog_id, "create dialog");
|
force_create_dialog(dialog_id, "create dialog");
|
||||||
} else {
|
} else {
|
||||||
const Dialog *d = get_dialog_force(dialog_id);
|
const Dialog *d = get_dialog_force(dialog_id);
|
||||||
|
@ -1122,7 +1122,7 @@ class MessagesManager : public Actor {
|
|||||||
|
|
||||||
Status set_dialog_client_data(DialogId dialog_id, string &&client_data) TD_WARN_UNUSED_RESULT;
|
Status set_dialog_client_data(DialogId dialog_id, string &&client_data) TD_WARN_UNUSED_RESULT;
|
||||||
|
|
||||||
void create_dialog(DialogId dialog_id, Promise<Unit> &&promise);
|
void create_dialog(DialogId dialog_id, bool force, Promise<Unit> &&promise);
|
||||||
|
|
||||||
DialogId create_new_group_chat(const vector<UserId> &user_ids, const string &title, int64 &random_id,
|
DialogId create_new_group_chat(const vector<UserId> &user_ids, const string &title, int64 &random_id,
|
||||||
Promise<Unit> &&promise);
|
Promise<Unit> &&promise);
|
||||||
|
@ -1667,9 +1667,10 @@ class GetWebPageInstantViewRequest : public RequestActor<> {
|
|||||||
|
|
||||||
class CreateChatRequest : public RequestActor<> {
|
class CreateChatRequest : public RequestActor<> {
|
||||||
DialogId dialog_id_;
|
DialogId dialog_id_;
|
||||||
|
bool force_;
|
||||||
|
|
||||||
void do_run(Promise<Unit> &&promise) override {
|
void do_run(Promise<Unit> &&promise) override {
|
||||||
td->messages_manager_->create_dialog(dialog_id_, std::move(promise));
|
td->messages_manager_->create_dialog(dialog_id_, force_, std::move(promise));
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_send_result() override {
|
void do_send_result() override {
|
||||||
@ -1677,8 +1678,8 @@ class CreateChatRequest : public RequestActor<> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CreateChatRequest(ActorShared<Td> td, uint64 request_id, DialogId dialog_id)
|
CreateChatRequest(ActorShared<Td> td, uint64 request_id, DialogId dialog_id, bool force)
|
||||||
: RequestActor<>(std::move(td), request_id), dialog_id_(dialog_id) {
|
: RequestActor<>(std::move(td), request_id), dialog_id_(dialog_id), force_(force) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -5344,22 +5345,22 @@ void Td::on_request(uint64 id, td_api::getWebPageInstantView &request) {
|
|||||||
|
|
||||||
void Td::on_request(uint64 id, const td_api::createPrivateChat &request) {
|
void Td::on_request(uint64 id, const td_api::createPrivateChat &request) {
|
||||||
CHECK_AUTH();
|
CHECK_AUTH();
|
||||||
CREATE_REQUEST(CreateChatRequest, DialogId(UserId(request.user_id_)));
|
CREATE_REQUEST(CreateChatRequest, DialogId(UserId(request.user_id_)), request.force_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, const td_api::createBasicGroupChat &request) {
|
void Td::on_request(uint64 id, const td_api::createBasicGroupChat &request) {
|
||||||
CHECK_AUTH();
|
CHECK_AUTH();
|
||||||
CREATE_REQUEST(CreateChatRequest, DialogId(ChatId(request.basic_group_id_)));
|
CREATE_REQUEST(CreateChatRequest, DialogId(ChatId(request.basic_group_id_)), request.force_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, const td_api::createSupergroupChat &request) {
|
void Td::on_request(uint64 id, const td_api::createSupergroupChat &request) {
|
||||||
CHECK_AUTH();
|
CHECK_AUTH();
|
||||||
CREATE_REQUEST(CreateChatRequest, DialogId(ChannelId(request.supergroup_id_)));
|
CREATE_REQUEST(CreateChatRequest, DialogId(ChannelId(request.supergroup_id_)), request.force_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, td_api::createSecretChat &request) {
|
void Td::on_request(uint64 id, td_api::createSecretChat &request) {
|
||||||
CHECK_AUTH();
|
CHECK_AUTH();
|
||||||
CREATE_REQUEST(CreateChatRequest, DialogId(SecretChatId(request.secret_chat_id_)));
|
CREATE_REQUEST(CreateChatRequest, DialogId(SecretChatId(request.secret_chat_id_)), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, td_api::createNewBasicGroupChat &request) {
|
void Td::on_request(uint64 id, td_api::createNewBasicGroupChat &request) {
|
||||||
|
@ -187,7 +187,7 @@ class Td final : public NetQueryCallback {
|
|||||||
static td_api::object_ptr<td_api::Object> static_request(td_api::object_ptr<td_api::Function> function);
|
static td_api::object_ptr<td_api::Object> static_request(td_api::object_ptr<td_api::Function> function);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static constexpr const char *tdlib_version = "1.0.4";
|
static constexpr const char *tdlib_version = "1.0.5";
|
||||||
static constexpr int32 ONLINE_TIMEOUT = 240;
|
static constexpr int32 ONLINE_TIMEOUT = 240;
|
||||||
|
|
||||||
void send_result(uint64 id, tl_object_ptr<td_api::Object> object);
|
void send_result(uint64 id, tl_object_ptr<td_api::Object> object);
|
||||||
|
@ -2429,11 +2429,23 @@ class CliClient final : public Actor {
|
|||||||
} else if (op == "gcpc") {
|
} else if (op == "gcpc") {
|
||||||
send_request(make_tl_object<td_api::getCreatedPublicChats>());
|
send_request(make_tl_object<td_api::getCreatedPublicChats>());
|
||||||
} else if (op == "cpc") {
|
} else if (op == "cpc") {
|
||||||
send_request(make_tl_object<td_api::createPrivateChat>(as_user_id(args)));
|
string user_id;
|
||||||
|
string force;
|
||||||
|
|
||||||
|
std::tie(user_id, force) = split(args);
|
||||||
|
send_request(make_tl_object<td_api::createPrivateChat>(as_user_id(user_id), as_bool(force)));
|
||||||
} else if (op == "cbgc") {
|
} else if (op == "cbgc") {
|
||||||
send_request(make_tl_object<td_api::createBasicGroupChat>(to_integer<int32>(args)));
|
string basic_group_id;
|
||||||
|
string force;
|
||||||
|
|
||||||
|
std::tie(basic_group_id, force) = split(args);
|
||||||
|
send_request(make_tl_object<td_api::createBasicGroupChat>(to_integer<int32>(basic_group_id), as_bool(force)));
|
||||||
} else if (op == "csgc" || op == "cchc") {
|
} else if (op == "csgc" || op == "cchc") {
|
||||||
send_request(make_tl_object<td_api::createSupergroupChat>(to_integer<int32>(args)));
|
string supergroup_id;
|
||||||
|
string force;
|
||||||
|
|
||||||
|
std::tie(supergroup_id, force) = split(args);
|
||||||
|
send_request(make_tl_object<td_api::createSupergroupChat>(to_integer<int32>(supergroup_id), as_bool(force)));
|
||||||
} else if (op == "sct") {
|
} else if (op == "sct") {
|
||||||
string chat_id;
|
string chat_id;
|
||||||
string title;
|
string title;
|
||||||
|
@ -301,7 +301,7 @@ class SetUsername : public Task {
|
|||||||
void send_self_message() {
|
void send_self_message() {
|
||||||
tag_ = PSTRING() << format::as_hex(Random::secure_int64());
|
tag_ = PSTRING() << format::as_hex(Random::secure_int64());
|
||||||
|
|
||||||
send_query(make_tl_object<td_api::createPrivateChat>(self_id_), [this](auto res) {
|
send_query(make_tl_object<td_api::createPrivateChat>(self_id_, false), [this](auto res) {
|
||||||
CHECK(res->get_id() == td_api::chat::ID);
|
CHECK(res->get_id() == td_api::chat::ID);
|
||||||
auto chat = move_tl_object_as<td_api::chat>(res);
|
auto chat = move_tl_object_as<td_api::chat>(res);
|
||||||
this->send_query(
|
this->send_query(
|
||||||
|
Loading…
Reference in New Issue
Block a user