From 3343880ed0e5a86accc7334af54b3470e29ee686 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Tue, 6 Apr 2021 00:07:23 +0400 Subject: [PATCH] Watch for network availability changes --- Telegram/SourceFiles/mtproto/mtp_instance.cpp | 10 +++++++++- Telegram/lib_base | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/mtproto/mtp_instance.cpp b/Telegram/SourceFiles/mtproto/mtp_instance.cpp index a144db622a..344e64ce73 100644 --- a/Telegram/SourceFiles/mtproto/mtp_instance.cpp +++ b/Telegram/SourceFiles/mtproto/mtp_instance.cpp @@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/unixtime.h" #include "base/call_delayed.h" #include "base/timer.h" +#include "base/network_reachability.h" #include "facades.h" // Proxies list. namespace MTP { @@ -216,6 +217,7 @@ private: const not_null _instance; const Instance::Mode _mode = Instance::Mode::Normal; const std::unique_ptr _config; + const std::shared_ptr _networkReachability; std::unique_ptr _mainSessionThread; std::unique_ptr _otherSessionsThread; @@ -296,7 +298,8 @@ Instance::Private::Private( : Sender(instance) , _instance(instance) , _mode(mode) -, _config(std::move(fields.config)) { +, _config(std::move(fields.config)) +, _networkReachability(base::NetworkReachability::Instance()) { Expects(_config != nullptr); const auto idealThreadPoolSize = QThread::idealThreadCount(); @@ -307,6 +310,11 @@ Instance::Private::Private( unpaused(); }, _lifetime); + _networkReachability->availableChanges( + ) | rpl::start_with_next([=](bool available) { + restart(); + }, _lifetime); + _deviceModel = std::move(fields.deviceModel); _systemVersion = std::move(fields.systemVersion); diff --git a/Telegram/lib_base b/Telegram/lib_base index 2d51534213..8f0c0164cd 160000 --- a/Telegram/lib_base +++ b/Telegram/lib_base @@ -1 +1 @@ -Subproject commit 2d51534213cf14fc816eca84f06765704a3b45d7 +Subproject commit 8f0c0164cdce6bcbc7bcfe531963e2a552f6290d