mirror of
https://github.com/telegramdesktop/tdesktop
synced 2024-12-24 23:42:58 +00:00
Decouple MTP::Instance from Core::App.
This commit is contained in:
parent
4f3263d979
commit
f5cc93ec64
@ -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<MTP::Instance>(
|
||||
_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<MTP::Instance>(_dcOptions.get(), MTP::Instance::Mode::KeysDestroyer, std::move(destroyConfig));
|
||||
destroyConfig.deviceModel = _launcher->deviceModel();
|
||||
destroyConfig.systemVersion = _launcher->systemVersion();
|
||||
_mtprotoForKeysDestroy = std::make_unique<MTP::Instance>(
|
||||
_dcOptions.get(),
|
||||
MTP::Instance::Mode::KeysDestroyer,
|
||||
std::move(destroyConfig));
|
||||
connect(
|
||||
_mtprotoForKeysDestroy.get(),
|
||||
&MTP::Instance::allKeysDestroyed,
|
||||
|
@ -24,7 +24,6 @@ public:
|
||||
QString argumentsString() const;
|
||||
bool customWorkingDir() const;
|
||||
|
||||
// Thread safe.
|
||||
QString deviceModel() const;
|
||||
QString systemVersion() const;
|
||||
uint64 installationTag() const;
|
||||
|
@ -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";
|
||||
|
@ -50,6 +50,10 @@ public:
|
||||
|
||||
not_null<DcOptions*> 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<DcId, std::shared_ptr<internal::Dcenter>> _dcenters;
|
||||
|
||||
QString _deviceModel;
|
||||
QString _systemVersion;
|
||||
|
||||
internal::Session *_mainSession = nullptr;
|
||||
std::map<ShiftedDcId, std::unique_ptr<internal::Session>> _sessions;
|
||||
std::vector<std::unique_ptr<internal::Session>> _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<DcOptions*> 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<DcOptions*> Instance::dcOptions() {
|
||||
return _private->dcOptions();
|
||||
}
|
||||
|
||||
QString Instance::deviceModel() const {
|
||||
return _private->deviceModel();
|
||||
}
|
||||
|
||||
QString Instance::systemVersion() const {
|
||||
return _private->systemVersion();
|
||||
}
|
||||
|
||||
void Instance::unpaused() {
|
||||
_private->unpaused();
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user