diff options
Diffstat (limited to 'main/src/ui/java')
| -rw-r--r-- | main/src/ui/java/de/blinkt/openvpn/fragments/MinimalUI.kt | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/MinimalUI.kt b/main/src/ui/java/de/blinkt/openvpn/fragments/MinimalUI.kt index 139518a7..42260bc8 100644 --- a/main/src/ui/java/de/blinkt/openvpn/fragments/MinimalUI.kt +++ b/main/src/ui/java/de/blinkt/openvpn/fragments/MinimalUI.kt @@ -17,8 +17,8 @@ import android.content.pm.PackageManager import android.os.Build import android.os.Bundle import android.os.IBinder +import android.os.RemoteException import android.security.KeyChain -import android.security.KeyChainException import android.text.TextUtils import android.view.LayoutInflater import android.view.Menu @@ -35,7 +35,6 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.core.app.ActivityCompat.invalidateOptionsMenu import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope -import androidx.webkit.Navigation import de.blinkt.openvpn.LaunchVPN import de.blinkt.openvpn.R import de.blinkt.openvpn.VpnProfile @@ -55,6 +54,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext class MinimalUI: Fragment(), VpnStatus.StateListener { + private var mLastConnectionLevel: ConnectionStatus = ConnectionStatus.LEVEL_NOTCONNECTED private var mPermReceiver: ActivityResultLauncher<String>? = null private lateinit var mFileImportReceiver: ActivityResultLauncher<Intent?> private lateinit var profileManger: ProfileManager @@ -230,7 +230,7 @@ class MinimalUI: Fragment(), VpnStatus.StateListener { state: String?, logmessage: String?, localizedResId: Int, - level: ConnectionStatus?, + level: ConnectionStatus, Intent: Intent? ) { val cleanLogMessage = VpnStatus.getLastCleanLogMessage(activity, true) @@ -240,6 +240,7 @@ class MinimalUI: Fragment(), VpnStatus.StateListener { val connected = level == ConnectionStatus.LEVEL_CONNECTED; vpntoggle.isChecked = connected } + mLastConnectionLevel = level; } override fun setConnectedVPN(uuid: String?) { @@ -336,6 +337,20 @@ class MinimalUI: Fragment(), VpnStatus.StateListener { return } + // Figure out if we should disconnect + if (!GlobalPreferences.getForceConnected() && mLastConnectionLevel != ConnectionStatus.LEVEL_NOTCONNECTED) { + ProfileManager.setConntectedVpnProfileDisconnected(requireContext()) + val service = mService; + if (service != null) { + try { + service.stopVPN(false) + } catch (e: RemoteException) { + VpnStatus.logException(e) + } + } + return + } + val intent = Intent(requireContext(), LaunchVPN::class.java) intent.putExtra(LaunchVPN.EXTRA_KEY, alwaysOnVPN.uuidString) intent.putExtra(OpenVPNService.EXTRA_START_REASON, "VPN started from homescreen.") |
