diff options
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) |
