diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-12-11 15:54:35 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-01-07 15:01:22 +0000 |
| commit | 44214ee5c319581155e3b62dbbc2642f3c468c70 (patch) | |
| tree | f67498e5792d139ae60774e4c0e48124e82639fc /android/src | |
| parent | a714a0c95f5898b416cc965820c6dd63d38d45e8 (diff) | |
| download | mullvadvpn-44214ee5c319581155e3b62dbbc2642f3c468c70.tar.xz mullvadvpn-44214ee5c319581155e3b62dbbc2642f3c468c70.zip | |
Handle no service connection in `SettingsFragment`
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SettingsFragment.kt | 64 |
1 files changed, 46 insertions, 18 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SettingsFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SettingsFragment.kt index fbaae8e557..df68241819 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SettingsFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SettingsFragment.kt @@ -20,9 +20,6 @@ import net.mullvad.mullvadvpn.dataproxy.AppVersionInfoCache import org.joda.time.DateTime class SettingsFragment : ServiceAwareFragment() { - private lateinit var accountCache: AccountCache - private lateinit var versionInfoCache: AppVersionInfoCache - private lateinit var accountMenu: View private lateinit var appVersionWarning: View private lateinit var appVersionLabel: TextView @@ -30,12 +27,25 @@ class SettingsFragment : ServiceAwareFragment() { private lateinit var remainingTimeLabel: RemainingTimeLabel private lateinit var wireguardKeysMenu: View + private var active = false + + private var accountCache: AccountCache? = null + private var versionInfoCache: AppVersionInfoCache? = null private var updateAccountInfoJob: Job? = null private var updateVersionInfoJob: Job? = null override fun onNewServiceConnection(serviceConnection: ServiceConnection) { accountCache = serviceConnection.accountCache versionInfoCache = serviceConnection.appVersionInfoCache + + if (active) { + configureListeners() + } + } + + override fun onNoServiceConnection() { + accountCache = null + versionInfoCache = null } override fun onCreateView( @@ -82,20 +92,15 @@ class SettingsFragment : ServiceAwareFragment() { override fun onResume() { super.onResume() - accountCache.onAccountDataChange = { account, expiry -> - updateAccountInfoJob?.cancel() - updateAccountInfoJob = updateAccountInfo(account != null, expiry) - } - - versionInfoCache.onUpdate = { - updateVersionInfoJob?.cancel() - updateVersionInfoJob = updateVersionInfo() - } + configureListeners() + active = true } override fun onPause() { - versionInfoCache.onUpdate = null - accountCache.onAccountDataChange = null + active = false + versionInfoCache?.onUpdate = null + accountCache?.onAccountDataChange = null + super.onPause() } @@ -105,6 +110,24 @@ class SettingsFragment : ServiceAwareFragment() { super.onDestroyView() } + private fun configureListeners() { + accountCache?.apply { + refetch() + + onAccountDataChange = { account, expiry -> + updateAccountInfoJob?.cancel() + updateAccountInfoJob = updateAccountInfo(account != null, expiry) + } + } + + versionInfoCache?.apply { + onUpdate = { + updateVersionInfoJob?.cancel() + updateVersionInfoJob = updateVersionInfo() + } + } + } + private fun openSubFragment(fragment: Fragment) { fragmentManager?.beginTransaction()?.apply { setCustomAnimations( @@ -125,8 +148,10 @@ class SettingsFragment : ServiceAwareFragment() { startActivity(intent) } - private fun updateAccountInfo(loggedIn: Boolean, expiry: DateTime?) - = GlobalScope.launch(Dispatchers.Main) { + private fun updateAccountInfo( + loggedIn: Boolean, + expiry: DateTime? + ) = GlobalScope.launch(Dispatchers.Main) { updateLoggedInStatus(loggedIn) remainingTimeLabel.accountExpiry = expiry } @@ -143,9 +168,12 @@ class SettingsFragment : ServiceAwareFragment() { } private fun updateVersionInfo() = GlobalScope.launch(Dispatchers.Main) { - appVersionLabel.setText(versionInfoCache.version ?: "") + val isOutdated = versionInfoCache?.isOutdated ?: false + val isSupported = versionInfoCache?.isSupported ?: true + + appVersionLabel.setText(versionInfoCache?.version ?: "") - if (!versionInfoCache.isOutdated && versionInfoCache.isSupported) { + if (!isOutdated && isSupported) { appVersionWarning.visibility = View.GONE appVersionFooter.visibility = View.GONE } else { |
