Prechádzať zdrojové kódy

reconnect vpn on adblock switch if in already connected state...

Khubaib 1 rok pred
rodič
commit
41b83a5bce

+ 5 - 1
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/HomeScreen.kt

@@ -129,6 +129,7 @@ var protocolObj: MutableState<Protocol> = mutableStateOf(
 )
 lateinit var navHostController1: NavHostController
 lateinit var homeViewModel1: HomeViewModel
+lateinit var vpnConnectionsUtil: VPNConnectionsUtil
 
 @OptIn(ExperimentalMaterial3Api::class)
  val onServer = object : ServerCallbacks {
@@ -256,7 +257,7 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
         SplashViewModel(context)
     }
     var server: Server = Server()
-    val vpnConnectionsUtil = VPNConnectionsUtil(context, activity, homeViewModel)
+    vpnConnectionsUtil = VPNConnectionsUtil(context, activity, homeViewModel)
 //    val wg = VPNConnectionsUtil(context, activity, homeViewModel)
     homeViewModel1 = homeViewModel
 
@@ -719,6 +720,9 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
                             if (isConnect == App.CONNECTED || isConnect == App.CONNECTING) {
                                 Log.d("isConnect_State_vpn", "stopVPN")
                                 vpnConnectionsUtil.stopVpn()
+                                Handler().postDelayed(Runnable {
+                                    vpnConnectionsUtil.startVpn()
+                                }, 500)
                                 homeViewModel.getIp()
                             } else {
                                 Log.d("isConnect_State_vpn", "startVPN")

+ 17 - 1
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/SettingsScreen.kt

@@ -6,6 +6,7 @@ import android.content.Context
 import android.content.Intent
 import android.os.Build
 import android.os.Bundle
+import android.os.Handler
 import android.util.Log
 import android.widget.Toast
 import androidx.compose.animation.AnimatedVisibility
@@ -115,9 +116,12 @@ import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import com.vpn.fastestvpnservice.navigation.navigationAnimation
 import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
 import com.vpn.fastestvpnservice.sealedClass.Screen
+import com.vpn.fastestvpnservice.utils.VPNConnectionsUtil
+import com.vpn.fastestvpnservice.viewmodels.HomeViewModel
 import com.vpn.fastestvpnservice.viewmodels.SearchListViewModel
 import com.vpn.fastestvpnservice.viewmodels.ServerListViewModel
 import com.vpn.fastestvpnservice.viewmodels.SplashViewModel
+import de.blinkt.openvpn.core.App
 import kotlinx.coroutines.launch
 
 @OptIn(ExperimentalMaterial3Api::class)
@@ -265,6 +269,12 @@ fun ColumnScope.AddRowSwitch(icon: Int, text: String) {
             )
         }
         Spacer(modifier = Modifier.weight(1f))
+        val scope = rememberCoroutineScope()
+        val homeViewModel: HomeViewModel = viewModel{
+            HomeViewModel(context, scope)
+        }
+        val isConnect: Int? = homeViewModel.isConnect.observeAsState().value
+//        val vpnConnectionsUtil = VPNConnectionsUtil(context, act, homeViewModel)
 
         Surface(
             modifier = Modifier
@@ -278,7 +288,13 @@ fun ColumnScope.AddRowSwitch(icon: Int, text: String) {
                 onCheckedChange = {
                     isSwitch = it
                     basePreferenceHelper.saveAdBlockState(it)
-                },
+                    if (isConnect == App.CONNECTED || isConnect == App.CONNECTING) {
+                        Log.d("isConnect_State_vpn", "stopVPN")
+                        vpnConnectionsUtil.stopVpn()
+                        Handler().postDelayed(Runnable {
+                            vpnConnectionsUtil.startVpn()
+                        }, 500)
+                    }                },
                 modifier = Modifier.scale(0.8F),
                 colors = SwitchDefaults.colors(
                     checkedThumbColor = Color.White,

+ 1 - 1
app/src/main/java/com/vpn/fastestvpnservice/utils/VPNConnectionsUtil.kt

@@ -672,7 +672,7 @@ class VPNConnectionsUtil: VpnStatus.StateListener {
                 val action = intent.action
                 when (action) {
                     OpenVPNService.ACTION_VPN_CONNECTED -> {
-                        Log.d("OpenVpnStateReceiver", "OpenVpnStateReceiver")
+                        Log.d("OpenVpnStateReceiver", "ACTION_VPN_CONNECTED")
                         homeViewModel.setConnectState(App.CONNECTED)
                     }
                 }