diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-09-17 01:03:16 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-09-17 14:50:37 +0200 |
commit | 59935a12b9336855c712d366e542aa6a37e8d041 (patch) | |
tree | 1a3ddd7cf67279366fab38d2593e8d07ebf1fc79 /ui/src/main/java/com/wireguard/android/fragment | |
parent | a9ec8285062636fc7be68fee123bb5899e639fdd (diff) |
activityx: use contracts more and refine
This is the beginning; there are still many of the old API's callsites
to convert.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'ui/src/main/java/com/wireguard/android/fragment')
-rw-r--r-- | ui/src/main/java/com/wireguard/android/fragment/BaseFragment.kt | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/ui/src/main/java/com/wireguard/android/fragment/BaseFragment.kt b/ui/src/main/java/com/wireguard/android/fragment/BaseFragment.kt index b647f5ac..7c588c1a 100644 --- a/ui/src/main/java/com/wireguard/android/fragment/BaseFragment.kt +++ b/ui/src/main/java/com/wireguard/android/fragment/BaseFragment.kt @@ -5,10 +5,10 @@ package com.wireguard.android.fragment import android.content.Context -import android.content.Intent import android.util.Log import android.view.View import android.widget.Toast +import androidx.activity.result.contract.ActivityResultContracts import androidx.databinding.DataBindingUtil import androidx.databinding.ViewDataBinding import androidx.fragment.app.Fragment @@ -34,21 +34,21 @@ abstract class BaseFragment : Fragment(), OnSelectedTunnelChangedListener { private var baseActivity: BaseActivity? = null private var pendingTunnel: ObservableTunnel? = null private var pendingTunnelUp: Boolean? = null + private val permissionActivityResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + val tunnel = pendingTunnel + val checked = pendingTunnelUp + if (tunnel != null && checked != null) + setTunnelStateWithPermissionsResult(tunnel, checked) + pendingTunnel = null + pendingTunnelUp = null + } + protected var selectedTunnel: ObservableTunnel? get() = baseActivity?.selectedTunnel protected set(tunnel) { baseActivity?.selectedTunnel = tunnel } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (requestCode == REQUEST_CODE_VPN_PERMISSION) { - if (pendingTunnel != null && pendingTunnelUp != null) setTunnelStateWithPermissionsResult(pendingTunnel!!, pendingTunnelUp!!) - pendingTunnel = null - pendingTunnelUp = null - } - } - override fun onAttach(context: Context) { super.onAttach(context) if (context is BaseActivity) { @@ -77,7 +77,7 @@ abstract class BaseFragment : Fragment(), OnSelectedTunnelChangedListener { if (intent != null) { pendingTunnel = tunnel pendingTunnelUp = checked - startActivityForResult(intent, REQUEST_CODE_VPN_PERMISSION) + permissionActivityResultLauncher.launch(intent) return@launch } } @@ -96,7 +96,7 @@ abstract class BaseFragment : Fragment(), OnSelectedTunnelChangedListener { val view = view if (view != null) Snackbar.make(view, message, Snackbar.LENGTH_LONG) - .setAnchorView(view.findViewById<View>(R.id.create_fab)) + .setAnchorView(view.findViewById(R.id.create_fab)) .show() else Toast.makeText(requireContext(), message, Toast.LENGTH_LONG).show() @@ -106,7 +106,6 @@ abstract class BaseFragment : Fragment(), OnSelectedTunnelChangedListener { } companion object { - private const val REQUEST_CODE_VPN_PERMISSION = 23491 private const val TAG = "WireGuard/BaseFragment" } } |