diff --git a/Telegram/SourceFiles/core/application.cpp b/Telegram/SourceFiles/core/application.cpp index 48fc5284a..8a11e9c8a 100644 --- a/Telegram/SourceFiles/core/application.cpp +++ b/Telegram/SourceFiles/core/application.cpp @@ -440,10 +440,13 @@ void Application::setMtpAuthorization(const QByteArray &serialized) { void Application::startMtp() { Expects(!_mtproto); + auto config = base::take(_private->mtpConfig); + config.deviceModel = _launcher->deviceModel(); + config.systemVersion = _launcher->systemVersion(); _mtproto = std::make_unique( _dcOptions.get(), MTP::Instance::Mode::Normal, - base::take(_private->mtpConfig)); + std::move(config)); _mtproto->setUserPhone(cLoggedPhoneNumber()); _private->mtpConfig.mainDcId = _mtproto->mainDcId(); @@ -526,7 +529,12 @@ void Application::destroyMtpKeys(MTP::AuthKeysList &&keys) { auto destroyConfig = MTP::Instance::Config(); destroyConfig.mainDcId = MTP::Instance::Config::kNoneMainDc; destroyConfig.keys = std::move(keys); - _mtprotoForKeysDestroy = std::make_unique(_dcOptions.get(), MTP::Instance::Mode::KeysDestroyer, std::move(destroyConfig)); + destroyConfig.deviceModel = _launcher->deviceModel(); + destroyConfig.systemVersion = _launcher->systemVersion(); + _mtprotoForKeysDestroy = std::make_unique( + _dcOptions.get(), + MTP::Instance::Mode::KeysDestroyer, + std::move(destroyConfig)); connect( _mtprotoForKeysDestroy.get(), &MTP::Instance::allKeysDestroyed, diff --git a/Telegram/SourceFiles/core/launcher.h b/Telegram/SourceFiles/core/launcher.h index 53f865aa1..6060e96ff 100644 --- a/Telegram/SourceFiles/core/launcher.h +++ b/Telegram/SourceFiles/core/launcher.h @@ -24,7 +24,6 @@ public: QString argumentsString() const; bool customWorkingDir() const; - // Thread safe. QString deviceModel() const; QString systemVersion() const; uint64 installationTag() const; diff --git a/Telegram/SourceFiles/mtproto/connection.cpp b/Telegram/SourceFiles/mtproto/connection.cpp index bdbc87fcc..555e51b4f 100644 --- a/Telegram/SourceFiles/mtproto/connection.cpp +++ b/Telegram/SourceFiles/mtproto/connection.cpp @@ -820,10 +820,10 @@ void ConnectionPrivate::tryToSend() { const auto langPackName = _connectionOptions->langPackName; const auto deviceModel = (_dcType == DcType::Cdn) ? "n/a" - : Core::App().launcher()->deviceModel(); + : _instance->deviceModel(); const auto systemVersion = (_dcType == DcType::Cdn) ? "n/a" - : Core::App().launcher()->systemVersion(); + : _instance->systemVersion(); #if defined OS_MAC_STORE || defined OS_WIN_STORE const auto appVersion = QString::fromLatin1(AppVersionStr) + " store"; diff --git a/Telegram/SourceFiles/mtproto/mtp_instance.cpp b/Telegram/SourceFiles/mtproto/mtp_instance.cpp index 2056bd53a..587c2b60d 100644 --- a/Telegram/SourceFiles/mtproto/mtp_instance.cpp +++ b/Telegram/SourceFiles/mtproto/mtp_instance.cpp @@ -50,6 +50,10 @@ public: not_null dcOptions(); + // Thread safe. + QString deviceModel() const; + QString systemVersion() const; + void requestConfig(); void requestConfigIfOld(); void requestCDNConfig(); @@ -171,6 +175,9 @@ private: bool _mainDcIdForced = false; std::map> _dcenters; + QString _deviceModel; + QString _systemVersion; + internal::Session *_mainSession = nullptr; std::map> _sessions; std::vector> _killedSessions; // delayed delete @@ -232,6 +239,9 @@ Instance::Private::Private( } void Instance::Private::start(Config &&config) { + _deviceModel = std::move(config.deviceModel); + _systemVersion = std::move(config.systemVersion); + if (isKeysDestroyer()) { _instance->connect(_instance, SIGNAL(keyDestroyed(qint32)), _instance, SLOT(onKeyDestroyed(qint32)), Qt::QueuedConnection); } else if (isNormal()) { @@ -705,6 +715,14 @@ not_null Instance::Private::dcOptions() { return _dcOptions; } +QString Instance::Private::deviceModel() const { + return _deviceModel; +} + +QString Instance::Private::systemVersion() const { + return _systemVersion; +} + void Instance::Private::unpaused() { for (auto &session : _sessions) { session.second->unpaused(); @@ -1638,6 +1656,14 @@ not_null Instance::dcOptions() { return _private->dcOptions(); } +QString Instance::deviceModel() const { + return _private->deviceModel(); +} + +QString Instance::systemVersion() const { + return _private->systemVersion(); +} + void Instance::unpaused() { _private->unpaused(); } diff --git a/Telegram/SourceFiles/mtproto/mtp_instance.h b/Telegram/SourceFiles/mtproto/mtp_instance.h index bc39e9d6e..fc574202b 100644 --- a/Telegram/SourceFiles/mtproto/mtp_instance.h +++ b/Telegram/SourceFiles/mtproto/mtp_instance.h @@ -35,6 +35,8 @@ public: DcId mainDcId = kNotSetMainDc; AuthKeysList keys; + QString deviceModel; + QString systemVersion; }; enum class Mode { Normal, @@ -55,6 +57,10 @@ public: QString cloudLangCode() const; QString langPackName() const; + // Thread safe. + QString deviceModel() const; + QString systemVersion() const; + void setKeyForWrite(DcId dcId, const AuthKeyPtr &key); AuthKeysList getKeysForWrite() const; void addKeysForDestroy(AuthKeysList &&keys);