summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt17
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt33
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LaunchFragment.kt34
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt13
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt13
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RemainingTimeLabel.kt12
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt22
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt47
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceDependentFragment.kt57
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SettingsFragment.kt16
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt20
11 files changed, 156 insertions, 128 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt
index 159a483f52..2c045a8523 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt
@@ -4,7 +4,6 @@ import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.os.Bundle
-import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.view.LayoutInflater
import android.view.View
@@ -19,9 +18,7 @@ import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.R
import org.joda.time.DateTime
-class AccountFragment : Fragment() {
- private lateinit var parentActivity: MainActivity
-
+class AccountFragment : ServiceDependentFragment() {
private lateinit var accountExpiryContainer: View
private lateinit var accountExpiryDisplay: TextView
private lateinit var accountNumberContainer: View
@@ -29,12 +26,6 @@ class AccountFragment : Fragment() {
private var updateViewJob: Job? = null
- override fun onAttach(context: Context) {
- super.onAttach(context)
-
- parentActivity = context as MainActivity
- }
-
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -62,13 +53,13 @@ class AccountFragment : Fragment() {
override fun onResume() {
super.onResume()
- parentActivity.accountCache.onAccountDataChange = { accountNumber, accountExpiry ->
+ accountCache.onAccountDataChange = { accountNumber, accountExpiry ->
updateViewJob = updateView(accountNumber, accountExpiry)
}
}
override fun onPause() {
- parentActivity.accountCache.onAccountDataChange = null
+ accountCache.onAccountDataChange = null
super.onPause()
}
@@ -116,8 +107,6 @@ class AccountFragment : Fragment() {
}
private fun clearAccountNumber() = GlobalScope.launch(Dispatchers.Default) {
- val daemon = parentActivity.daemon.await()
-
daemon.setAccount(null)
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt
index 336f3507aa..0bd1fff0d2 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt
@@ -1,8 +1,6 @@
package net.mullvad.mullvadvpn.ui
-import android.content.Context
import android.os.Bundle
-import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -12,17 +10,12 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.R
-import net.mullvad.mullvadvpn.dataproxy.AppVersionInfoCache
-import net.mullvad.mullvadvpn.dataproxy.ConnectionProxy
-import net.mullvad.mullvadvpn.dataproxy.KeyStatusListener
-import net.mullvad.mullvadvpn.dataproxy.LocationInfoCache
-import net.mullvad.mullvadvpn.dataproxy.RelayListListener
import net.mullvad.mullvadvpn.model.KeygenEvent
import net.mullvad.mullvadvpn.model.TunnelState
val KEY_IS_TUNNEL_INFO_EXPANDED = "is_tunnel_info_expanded"
-class ConnectFragment : Fragment() {
+class ConnectFragment : ServiceDependentFragment() {
private lateinit var actionButton: ConnectActionButton
private lateinit var switchLocationButton: SwitchLocationButton
private lateinit var headerBar: HeaderBar
@@ -30,30 +23,12 @@ class ConnectFragment : Fragment() {
private lateinit var status: ConnectionStatus
private lateinit var locationInfo: LocationInfo
- private lateinit var parentActivity: MainActivity
- private lateinit var connectionProxy: ConnectionProxy
- private lateinit var keyStatusListener: KeyStatusListener
- private lateinit var locationInfoCache: LocationInfoCache
- private lateinit var relayListListener: RelayListListener
- private lateinit var versionInfoCache: AppVersionInfoCache
-
private lateinit var updateKeyStatusJob: Job
private var updateTunnelStateJob: Job? = null
private var isTunnelInfoExpanded = false
private var tunnelStateListener: Int? = null
- override fun onAttach(context: Context) {
- super.onAttach(context)
-
- parentActivity = context as MainActivity
- connectionProxy = parentActivity.connectionProxy
- keyStatusListener = parentActivity.keyStatusListener
- locationInfoCache = parentActivity.locationInfoCache
- relayListListener = parentActivity.relayListListener
- versionInfoCache = parentActivity.appVersionInfoCache
- }
-
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -74,10 +49,8 @@ class ConnectFragment : Fragment() {
}
headerBar = HeaderBar(view, resources)
- notificationBanner = NotificationBanner(view,
- context!!,
- versionInfoCache,
- parentActivity.wwwAuthTokenRetriever)
+ notificationBanner =
+ NotificationBanner(view, parentActivity, appVersionInfoCache, wwwAuthTokenRetriever)
status = ConnectionStatus(view, resources)
locationInfo = LocationInfo(view, context!!)
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LaunchFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LaunchFragment.kt
index a0747583b5..2c40bfa4af 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LaunchFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LaunchFragment.kt
@@ -1,28 +1,30 @@
package net.mullvad.mullvadvpn.ui
-import android.content.Context
import android.os.Bundle
-import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import kotlinx.coroutines.Deferred
+import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.async
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.R
+import net.mullvad.mullvadvpn.service.MullvadDaemon
-class LaunchFragment : Fragment() {
- private lateinit var accountTokenCheckJob: Deferred<Boolean>
+class LaunchFragment : ServiceAwareFragment() {
+ private val hasAccountToken = CompletableDeferred<Boolean>()
+
+ private var accountTokenCheckJob: Job? = null
private lateinit var advanceToNextScreenJob: Job
- private lateinit var parentActivity: MainActivity
- override fun onAttach(context: Context) {
- super.onAttach(context)
- parentActivity = context as MainActivity
- accountTokenCheckJob = checkForAccountToken()
+ override fun onNewServiceConnection(serviceConnection: ServiceConnection) {
+ accountTokenCheckJob = checkForAccountToken(serviceConnection.daemon)
+ }
+
+ override fun onNoServiceConnection() {
+ accountTokenCheckJob?.cancel()
}
override fun onCreateView(
@@ -50,21 +52,19 @@ class LaunchFragment : Fragment() {
}
override fun onDestroy() {
- accountTokenCheckJob.cancel()
+ accountTokenCheckJob?.cancel()
super.onDestroy()
}
- private fun checkForAccountToken() = GlobalScope.async(Dispatchers.Default) {
- val daemon = parentActivity.daemon.await()
+ private fun checkForAccountToken(daemon: MullvadDaemon) =
+ GlobalScope.async(Dispatchers.Default) {
val settings = daemon.getSettings()
- settings.accountToken != null
+ hasAccountToken.complete(settings.accountToken != null)
}
private fun advanceToNextScreen() = GlobalScope.launch(Dispatchers.Main) {
- val accountTokenIsSet = accountTokenCheckJob.await()
-
- if (accountTokenIsSet) {
+ if (hasAccountToken.await()) {
advanceToConnectScreen()
} else {
advanceToLoginScreen()
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
index f788270c21..094b906622 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
@@ -1,10 +1,8 @@
package net.mullvad.mullvadvpn.ui
-import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
-import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -20,9 +18,7 @@ import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.model.GetAccountDataResult
-class LoginFragment : Fragment() {
- private lateinit var parentActivity: MainActivity
-
+class LoginFragment : ServiceDependentFragment() {
private lateinit var title: TextView
private lateinit var subtitle: TextView
private lateinit var loggingInStatus: View
@@ -35,12 +31,6 @@ class LoginFragment : Fragment() {
private var loginJob: Deferred<Boolean>? = null
private var advanceToNextScreenJob: Job? = null
- override fun onAttach(context: Context) {
- super.onAttach(context)
-
- parentActivity = context as MainActivity
- }
-
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -100,7 +90,6 @@ class LoginFragment : Fragment() {
private fun performLogin(accountToken: String) = GlobalScope.launch(Dispatchers.Main) {
loginJob?.cancel()
loginJob = GlobalScope.async(Dispatchers.Default) {
- val daemon = parentActivity.daemon.await()
val accountDataResult = daemon.getAccountData(accountToken)
when (accountDataResult) {
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
index 914188a8ab..f9c9f24bac 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
@@ -23,13 +23,14 @@ import net.mullvad.mullvadvpn.dataproxy.RelayListListener
import net.mullvad.mullvadvpn.dataproxy.WwwAuthTokenRetriever
import net.mullvad.mullvadvpn.service.MullvadDaemon
import net.mullvad.mullvadvpn.service.MullvadVpnService
+import net.mullvad.talpid.util.EventNotifier
class MainActivity : FragmentActivity() {
companion object {
val KEY_SHOULD_CONNECT = "should_connect"
}
- var serviceConnection: ServiceConnection? = null
+ private var serviceConnection: ServiceConnection? = null
private var serviceConnectionSubscription: Int? = null
var daemon = CompletableDeferred<MullvadDaemon>()
@@ -38,6 +39,7 @@ class MainActivity : FragmentActivity() {
private set
val problemReport = MullvadProblemReport()
+ val serviceNotifier = EventNotifier<ServiceConnection?>(null)
val appVersionInfoCache: AppVersionInfoCache
get() = serviceConnection!!.appVersionInfoCache
@@ -65,9 +67,12 @@ class MainActivity : FragmentActivity() {
serviceConnectionSubscription = localBinder.serviceNotifier.subscribe { service ->
serviceConnection?.onDestroy()
- serviceConnection = service?.let { service ->
+ val newConnection = service?.let { service ->
ServiceConnection(service, this@MainActivity)
}
+
+ serviceConnection = newConnection
+ serviceNotifier.notify(newConnection)
}
waitForDaemonJob = GlobalScope.launch(Dispatchers.Default) {
@@ -93,6 +98,8 @@ class MainActivity : FragmentActivity() {
service = CompletableDeferred<MullvadVpnService.LocalBinder>()
daemon = CompletableDeferred<MullvadDaemon>()
+
+ serviceNotifier.notify(null)
}
}
@@ -125,6 +132,8 @@ class MainActivity : FragmentActivity() {
override fun onStop() {
quitJob?.cancel()
+ serviceNotifier.unsubscribeAll()
+
serviceToStop?.apply { stop() }
unbindService(serviceConnectionManager)
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RemainingTimeLabel.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RemainingTimeLabel.kt
index 1f53a83556..ca927e50eb 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RemainingTimeLabel.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RemainingTimeLabel.kt
@@ -1,5 +1,6 @@
package net.mullvad.mullvadvpn.ui
+import android.content.Context
import android.view.View
import android.widget.TextView
import kotlinx.coroutines.Dispatchers
@@ -7,14 +8,13 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.R
+import net.mullvad.mullvadvpn.dataproxy.AccountCache
import org.joda.time.DateTime
import org.joda.time.Duration
import org.joda.time.PeriodType
-class RemainingTimeLabel(val parentActivity: MainActivity, val view: View) {
- private val accountCache = parentActivity.accountCache
-
- private val resources = parentActivity.resources
+class RemainingTimeLabel(val context: Context, val accountCache: AccountCache, val view: View) {
+ private val resources = context.resources
private val expiredColor = resources.getColor(R.color.red)
private val normalColor = resources.getColor(R.color.white60)
@@ -24,7 +24,7 @@ class RemainingTimeLabel(val parentActivity: MainActivity, val view: View) {
private var updateJob: Job? = null
fun onResume() {
- parentActivity.accountCache.apply {
+ accountCache.apply {
refetch()
onAccountDataChange = { _, accountExpiry ->
@@ -35,7 +35,7 @@ class RemainingTimeLabel(val parentActivity: MainActivity, val view: View) {
}
fun onPause() {
- parentActivity.accountCache.onAccountDataChange = null
+ accountCache.onAccountDataChange = null
updateJob?.cancel()
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt
index fdb50715e9..c5dfd81307 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt
@@ -2,7 +2,6 @@ package net.mullvad.mullvadvpn.ui
import android.content.Context
import android.os.Bundle
-import android.support.v4.app.Fragment
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
@@ -15,8 +14,6 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.R
-import net.mullvad.mullvadvpn.dataproxy.ConnectionProxy
-import net.mullvad.mullvadvpn.dataproxy.RelayListListener
import net.mullvad.mullvadvpn.model.Constraint
import net.mullvad.mullvadvpn.model.KeygenEvent
import net.mullvad.mullvadvpn.model.LocationConstraint
@@ -26,24 +23,15 @@ import net.mullvad.mullvadvpn.relaylist.RelayItemDividerDecoration
import net.mullvad.mullvadvpn.relaylist.RelayList
import net.mullvad.mullvadvpn.relaylist.RelayListAdapter
-class SelectLocationFragment : Fragment() {
- private lateinit var parentActivity: MainActivity
- private lateinit var connectionProxy: ConnectionProxy
- private lateinit var relayListListener: RelayListListener
-
- private lateinit var relayListContainer: ViewSwitcher
-
+class SelectLocationFragment : ServiceDependentFragment() {
private lateinit var relayListAdapter: RelayListAdapter
+ private lateinit var relayListContainer: ViewSwitcher
private var updateRelayListJob: Job? = null
override fun onAttach(context: Context) {
super.onAttach(context)
- parentActivity = context as MainActivity
- connectionProxy = parentActivity.connectionProxy
- relayListListener = parentActivity.relayListListener
-
relayListAdapter = RelayListAdapter(context.resources).apply {
onSelect = { relayItem ->
updateLocationConstraint(relayItem)
@@ -108,9 +96,7 @@ class SelectLocationFragment : Fragment() {
val constraint: Constraint<LocationConstraint> =
relayItem?.run { Constraint.Only(location) } ?: Constraint.Any()
- parentActivity.daemon.await().updateRelaySettings(
- RelaySettingsUpdate.RelayConstraintsUpdate(constraint)
- )
+ daemon.updateRelaySettings(RelaySettingsUpdate.RelayConstraintsUpdate(constraint))
}
private fun updateRelayList(relayList: RelayList, selectedItem: RelayItem?) =
@@ -125,7 +111,7 @@ class SelectLocationFragment : Fragment() {
}
private fun maybeConnect() {
- val keyStatus = parentActivity.keyStatusListener.keyStatus
+ val keyStatus = keyStatusListener.keyStatus
if (keyStatus == null || keyStatus is KeygenEvent.NewKey) {
connectionProxy.connect()
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt
new file mode 100644
index 0000000000..833f539a75
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt
@@ -0,0 +1,47 @@
+package net.mullvad.mullvadvpn.ui
+
+import android.content.Context
+import android.support.v4.app.Fragment
+
+abstract class ServiceAwareFragment : Fragment() {
+ lateinit var parentActivity: MainActivity
+ private set
+
+ var serviceConnection: ServiceConnection? = null
+ private set
+
+ private var subscriptionId: Int? = null
+
+ override fun onAttach(context: Context) {
+ super.onAttach(context)
+
+ parentActivity = context as MainActivity
+
+ subscriptionId = parentActivity.serviceNotifier.subscribe { connection ->
+ configureServiceConnection(connection)
+ }
+ }
+
+ override fun onDetach() {
+ subscriptionId?.let { id ->
+ parentActivity.serviceNotifier.unsubscribe(id)
+ }
+
+ super.onDetach()
+ }
+
+ abstract fun onNewServiceConnection(serviceConnection: ServiceConnection)
+
+ open fun onNoServiceConnection() {
+ }
+
+ private fun configureServiceConnection(connection: ServiceConnection?) {
+ serviceConnection = connection
+
+ if (connection != null) {
+ onNewServiceConnection(connection)
+ } else {
+ onNoServiceConnection()
+ }
+ }
+}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceDependentFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceDependentFragment.kt
new file mode 100644
index 0000000000..d38f2f4384
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceDependentFragment.kt
@@ -0,0 +1,57 @@
+package net.mullvad.mullvadvpn.ui
+
+import net.mullvad.mullvadvpn.dataproxy.AccountCache
+import net.mullvad.mullvadvpn.dataproxy.AppVersionInfoCache
+import net.mullvad.mullvadvpn.dataproxy.ConnectionProxy
+import net.mullvad.mullvadvpn.dataproxy.KeyStatusListener
+import net.mullvad.mullvadvpn.dataproxy.LocationInfoCache
+import net.mullvad.mullvadvpn.dataproxy.RelayListListener
+import net.mullvad.mullvadvpn.dataproxy.SettingsListener
+import net.mullvad.mullvadvpn.dataproxy.WwwAuthTokenRetriever
+import net.mullvad.mullvadvpn.service.MullvadDaemon
+import net.mullvad.talpid.ConnectivityListener
+
+open class ServiceDependentFragment : ServiceAwareFragment() {
+ lateinit var accountCache: AccountCache
+ private set
+
+ lateinit var appVersionInfoCache: AppVersionInfoCache
+ private set
+
+ lateinit var connectionProxy: ConnectionProxy
+ private set
+
+ lateinit var connectivityListener: ConnectivityListener
+ private set
+
+ lateinit var daemon: MullvadDaemon
+ private set
+
+ lateinit var keyStatusListener: KeyStatusListener
+ private set
+
+ lateinit var locationInfoCache: LocationInfoCache
+ private set
+
+ lateinit var relayListListener: RelayListListener
+ private set
+
+ lateinit var settingsListener: SettingsListener
+ private set
+
+ lateinit var wwwAuthTokenRetriever: WwwAuthTokenRetriever
+ private set
+
+ override fun onNewServiceConnection(serviceConnection: ServiceConnection) {
+ accountCache = serviceConnection.accountCache
+ appVersionInfoCache = serviceConnection.appVersionInfoCache
+ connectionProxy = serviceConnection.connectionProxy
+ connectivityListener = serviceConnection.connectivityListener
+ daemon = serviceConnection.daemon
+ keyStatusListener = serviceConnection.keyStatusListener
+ locationInfoCache = serviceConnection.locationInfoCache
+ relayListListener = serviceConnection.relayListListener
+ settingsListener = serviceConnection.settingsListener
+ wwwAuthTokenRetriever = serviceConnection.wwwAuthTokenRetriever
+ }
+}
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 6a330139eb..b52e8432fa 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SettingsFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SettingsFragment.kt
@@ -1,6 +1,5 @@
package net.mullvad.mullvadvpn.ui
-import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
@@ -19,9 +18,7 @@ import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.dataproxy.AccountCache
import net.mullvad.mullvadvpn.dataproxy.AppVersionInfoCache
-class SettingsFragment : Fragment() {
- private lateinit var parentActivity: MainActivity
-
+class SettingsFragment : ServiceAwareFragment() {
private lateinit var accountCache: AccountCache
private lateinit var versionInfoCache: AppVersionInfoCache
@@ -35,12 +32,9 @@ class SettingsFragment : Fragment() {
private var updateLoggedInStatusJob: Job? = null
private var updateVersionInfoJob: Job? = null
- override fun onAttach(context: Context) {
- super.onAttach(context)
-
- parentActivity = context as MainActivity
- accountCache = parentActivity.accountCache
- versionInfoCache = parentActivity.appVersionInfoCache
+ override fun onNewServiceConnection(serviceConnection: ServiceConnection) {
+ accountCache = serviceConnection.accountCache
+ versionInfoCache = serviceConnection.appVersionInfoCache
}
override fun onCreateView(
@@ -79,7 +73,7 @@ class SettingsFragment : Fragment() {
appVersionWarning = view.findViewById(R.id.app_version_warning)
appVersionLabel = view.findViewById<TextView>(R.id.app_version_label)
appVersionFooter = view.findViewById(R.id.app_version_footer)
- remainingTimeLabel = RemainingTimeLabel(parentActivity, view)
+ remainingTimeLabel = RemainingTimeLabel(parentActivity, accountCache, view)
return view
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt
index 49537c7d75..7bf8174ebe 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt
@@ -6,7 +6,6 @@ import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
-import android.support.v4.app.Fragment
import android.util.Base64
import android.view.LayoutInflater
import android.view.View
@@ -21,9 +20,6 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.R
-import net.mullvad.mullvadvpn.dataproxy.ConnectionProxy
-import net.mullvad.mullvadvpn.dataproxy.KeyStatusListener
-import net.mullvad.mullvadvpn.dataproxy.WwwAuthTokenRetriever
import net.mullvad.mullvadvpn.model.KeygenEvent
import net.mullvad.mullvadvpn.model.KeygenFailure
import net.mullvad.mullvadvpn.model.TunnelState
@@ -34,15 +30,11 @@ import org.joda.time.format.DateTimeFormat
val RFC3339_FORMAT = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss.SSSSSSSSSS z")
val KEY_AGE_FORMAT = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm")
-class WireguardKeyFragment : Fragment() {
+class WireguardKeyFragment : ServiceDependentFragment() {
private var currentJob: Job? = null
private var updateViewsJob: Job? = null
private var tunnelStateListener: Int? = null
private var tunnelState: TunnelState = TunnelState.Disconnected()
- private lateinit var connectionProxy: ConnectionProxy
- private lateinit var keyStatusListener: KeyStatusListener
- private lateinit var parentActivity: MainActivity
- private lateinit var wwwTokenRetriever: WwwAuthTokenRetriever
private lateinit var urlController: BlockingController
private var generatingKey = false
private var validatingKey = false
@@ -56,14 +48,6 @@ class WireguardKeyFragment : Fragment() {
private lateinit var verifyButton: Button
private lateinit var verifySpinner: ProgressBar
- override fun onAttach(context: Context) {
- super.onAttach(context)
- parentActivity = context as MainActivity
- keyStatusListener = parentActivity.keyStatusListener
- connectionProxy = parentActivity.connectionProxy
- wwwTokenRetriever = parentActivity.wwwAuthTokenRetriever
- }
-
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -101,7 +85,7 @@ class WireguardKeyFragment : Fragment() {
override fun onClick(): Job {
return GlobalScope.launch(Dispatchers.Default) {
- val token = wwwTokenRetriever.getAuthToken()
+ val token = wwwAuthTokenRetriever.getAuthToken()
val intent = Intent(Intent.ACTION_VIEW,
Uri.parse(keyUrl + "?token=" + token))
startActivity(intent)