diff --git a/example/cpp/td_example.cpp b/example/cpp/td_example.cpp index 0e8094e50..962be64c2 100644 --- a/example/cpp/td_example.cpp +++ b/example/cpp/td_example.cpp @@ -291,7 +291,6 @@ class TdExample { parameters->api_hash_ = "a3406de8d171bb422bb6ddf3bbd800e2"; parameters->system_language_code_ = "en"; parameters->device_model_ = "Desktop"; - parameters->system_version_ = "Unknown"; parameters->application_version_ = "1.0"; parameters->enable_storage_optimizer_ = true; send_query(td_api::make_object(std::move(parameters)), diff --git a/example/csharp/TdExample.cs b/example/csharp/TdExample.cs index 4eff74759..87a8328f4 100644 --- a/example/csharp/TdExample.cs +++ b/example/csharp/TdExample.cs @@ -80,7 +80,6 @@ namespace TdExample parameters.ApiHash = "a3406de8d171bb422bb6ddf3bbd800e2"; parameters.SystemLanguageCode = "en"; parameters.DeviceModel = "Desktop"; - parameters.SystemVersion = "Unknown"; parameters.ApplicationVersion = "1.0"; parameters.EnableStorageOptimizer = true; diff --git a/example/java/org/drinkless/tdlib/example/Example.java b/example/java/org/drinkless/tdlib/example/Example.java index 9db3e66be..6496ad8b4 100644 --- a/example/java/org/drinkless/tdlib/example/Example.java +++ b/example/java/org/drinkless/tdlib/example/Example.java @@ -107,7 +107,6 @@ public final class Example { parameters.apiHash = "a3406de8d171bb422bb6ddf3bbd800e2"; parameters.systemLanguageCode = "en"; parameters.deviceModel = "Desktop"; - parameters.systemVersion = "Unknown"; parameters.applicationVersion = "1.0"; parameters.enableStorageOptimizer = true; diff --git a/example/python/tdjson_example.py b/example/python/tdjson_example.py index ac034800c..568d8533e 100644 --- a/example/python/tdjson_example.py +++ b/example/python/tdjson_example.py @@ -106,7 +106,6 @@ while True: 'api_hash': 'a3406de8d171bb422bb6ddf3bbd800e2', 'system_language_code': 'en', 'device_model': 'Desktop', - 'system_version': 'Linux', 'application_version': '1.0', 'enable_storage_optimizer': True}}) diff --git a/example/swift/src/main.swift b/example/swift/src/main.swift index 06eaa9ce8..a19b62969 100644 --- a/example/swift/src/main.swift +++ b/example/swift/src/main.swift @@ -117,7 +117,6 @@ func updateAuthorizationState(authorizationState: Dictionary) { "api_hash":"a3406de8d171bb422bb6ddf3bbd800e2", "system_language_code":"en", "device_model":"Desktop", - "system_version":"Unknown", "application_version":"1.0", "enable_storage_optimizer":true ] diff --git a/example/uwp/app/MainPage.xaml.cs b/example/uwp/app/MainPage.xaml.cs index fb5813572..02897ef64 100644 --- a/example/uwp/app/MainPage.xaml.cs +++ b/example/uwp/app/MainPage.xaml.cs @@ -43,7 +43,6 @@ namespace TdApp parameters.ApiHash = "a3406de8d171bb422bb6ddf3bbd800e2"; parameters.SystemLanguageCode = "en"; parameters.DeviceModel = "Desktop"; - parameters.SystemVersion = "Unknown"; parameters.ApplicationVersion = "1.0.0"; _client.Send(new TdApi.SetTdlibParameters(parameters), null); _client.Send(new TdApi.CheckDatabaseEncryptionKey(), null); diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index cef60fd0d..7af77bff0 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -34,7 +34,7 @@ ok = Ok; //@api_hash Application identifier hash for Telegram API access, which can be obtained at https://my.telegram.org //@system_language_code IETF language tag of the user's operating system language; must be non-empty //@device_model Model of the device the application is being run on; must be non-empty -//@system_version Version of the operating system the application is being run on; must be non-empty +//@system_version Version of the operating system the application is being run on. If empty, the version is automatically detected by TDLib //@application_version Application version; must be non-empty //@enable_storage_optimizer If set to true, old files will automatically be deleted //@ignore_file_names If set to true, original file names will be ignored. Otherwise, downloaded files will be saved under names as close as possible to the original name diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 6e4e86b57..6c20c76f8 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -118,6 +118,7 @@ #include "td/utils/port/IPAddress.h" #include "td/utils/port/path.h" #include "td/utils/port/SocketFd.h" +#include "td/utils/port/uname.h" #include "td/utils/Random.h" #include "td/utils/Slice.h" #include "td/utils/Status.h" @@ -4676,7 +4677,7 @@ Status Td::set_parameters(td_api::object_ptr parameters return Status::Error(400, "Device model must be non-empty"); } if (options_.system_version.empty()) { - return Status::Error(400, "System version must be non-empty"); + options_.system_version = get_operating_system_version().str(); } if (options_.application_version.empty()) { return Status::Error(400, "Application version must be non-empty"); diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index ca8886af4..9bea5f2f0 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -407,7 +407,6 @@ class CliClient final : public Actor { parameters->api_hash_ = api_hash_; parameters->system_language_code_ = "en"; parameters->device_model_ = "Desktop"; - parameters->system_version_ = "Unknown"; parameters->application_version_ = "1.0"; send_request(td_api::make_object(std::move(parameters))); break; @@ -4385,13 +4384,15 @@ void main(int argc, char **argv) { return; } if (!res.ok().empty()) { - LOG(PLAIN) << "tg_cli: " << "Have unexpected non-option parameters"; + LOG(PLAIN) << "tg_cli: " + << "Have unexpected non-option parameters"; LOG(PLAIN) << options; return; } if (api_id == 0 || api_hash.empty()) { - LOG(PLAIN) << "tg_cli: " << "You should provide some valid api_id and api_hash"; + LOG(PLAIN) << "tg_cli: " + << "You should provide some valid api_id and api_hash"; LOG(PLAIN) << options; return; } diff --git a/tdutils/td/utils/port/uname.cpp b/tdutils/td/utils/port/uname.cpp index ea9aa63fd..7afbebd8e 100644 --- a/tdutils/td/utils/port/uname.cpp +++ b/tdutils/td/utils/port/uname.cpp @@ -22,13 +22,15 @@ namespace td { -Slice get_operating_system_name() { +Slice get_operating_system_version() { static string result = []() -> string { #if TD_PORT_POSIX #if TD_ANDROID char version[PROP_VALUE_MAX + 1]; int length = __system_property_get("ro.build.version.release", version); - return length <= 0 ? string("Android") : "Android " + string(version, length); + if (length > 0) { + return "Android " + string(version, length); + } #else utsname name; int err = uname(&name); @@ -38,8 +40,8 @@ Slice get_operating_system_name() { return os_name; } } - LOG(ERROR) << "Failed to identify OS name; use generic one"; #endif + LOG(ERROR) << "Failed to identify OS name; use generic one"; #if TD_DARWIN_IOS return "iOS"; diff --git a/tdutils/td/utils/port/uname.h b/tdutils/td/utils/port/uname.h index 4760eb7b4..c0f368209 100644 --- a/tdutils/td/utils/port/uname.h +++ b/tdutils/td/utils/port/uname.h @@ -10,6 +10,6 @@ namespace td { -Slice get_operating_system_name(); +Slice get_operating_system_version(); } diff --git a/tdutils/test/misc.cpp b/tdutils/test/misc.cpp index 178e740fa..423a44e6d 100644 --- a/tdutils/test/misc.cpp +++ b/tdutils/test/misc.cpp @@ -1103,10 +1103,9 @@ TEST(Misc, CancellationToken) { } TEST(Misc, uname) { - auto first_name = get_operating_system_name(); - auto second_name = get_operating_system_name(); - ASSERT_STREQ(first_name, second_name); - ASSERT_EQ(first_name.begin(), second_name.begin()); - ASSERT_TRUE(!first_name.empty()); - LOG(ERROR) << first_name; + auto first_version = get_operating_system_version(); + auto second_version = get_operating_system_version(); + ASSERT_STREQ(first_version, second_version); + ASSERT_EQ(first_version.begin(), second_version.begin()); + ASSERT_TRUE(!first_version.empty()); } diff --git a/test/tdclient.cpp b/test/tdclient.cpp index 5841bd903..6f80f2859 100644 --- a/test/tdclient.cpp +++ b/test/tdclient.cpp @@ -231,7 +231,6 @@ class DoAuthentication : public Task { parameters->api_hash_ = "a3406de8d171bb422bb6ddf3bbd800e2"; parameters->system_language_code_ = "en"; parameters->device_model_ = "Desktop"; - parameters->system_version_ = "Unknown"; parameters->application_version_ = "tdclient-test"; parameters->ignore_file_names_ = false; parameters->enable_storage_optimizer_ = true;