Browse Source

Server callback implemented, optimizing it..

Khubaib 1 year ago
parent
commit
dd0f5772ca

+ 3 - 0
app/src/main/java/com/vpn/fastestvpnservice/customItems/CountryItem.kt

@@ -117,6 +117,9 @@ fun CountryItem(server: Server, category: String, navHostController: NavHostCont
                                         indication = null,
                                         interactionSource = remember { MutableInteractionSource() }
                                     ) {
+                                        Toast.makeText(
+                                            context, server.server_name, Toast.LENGTH_SHORT
+                                        ).show()
                                         navHostController.popBackStack()
                                     }
                             ) {

+ 21 - 1
app/src/main/java/com/vpn/fastestvpnservice/customItems/ServerItem.kt

@@ -31,6 +31,7 @@ import androidx.compose.runtime.livedata.observeAsState
 import androidx.compose.runtime.mutableIntStateOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.runtime.saveable.rememberSaveable
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
@@ -62,7 +63,10 @@ import com.vpn.fastestvpnservice.beans.favList
 import com.vpn.fastestvpnservice.beans.favListServer
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import com.vpn.fastestvpnservice.helpers.UIHelper
+import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.onServer
+import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.onServerSelected
 import com.vpn.fastestvpnservice.utils.Utils
+import com.vpn.fastestvpnservice.viewmodels.HomeViewModel
 import com.vpn.fastestvpnservice.viewmodels.SearchListViewModel
 import com.vpn.fastestvpnservice.viewmodels.ServerListViewModel
 import com.vpn.fastestvpnservice.viewmodels.SplashViewModel
@@ -71,6 +75,13 @@ import java.lang.Exception
 @Composable
 fun ServerItem(server: Server, navHostController: NavHostController) {
     val context = LocalContext.current
+    val scope = rememberCoroutineScope()
+    var isServerClicked by remember {
+        mutableStateOf(false)
+    }
+    val homeViewModel: HomeViewModel = viewModel{
+        HomeViewModel(context, scope)
+    }
     val basePreferenceHelper = BasePreferenceHelper(context)
     Box(
         modifier = Modifier
@@ -85,6 +96,14 @@ fun ServerItem(server: Server, navHostController: NavHostController) {
             SplashViewModel(context)
         }
 
+        if (isServerClicked) {
+            Log.d("ServerCallbacks", "isServerClicked $isServerClicked")
+            onServer.onServerSelected(context, homeViewModel) {
+                isServerClicked = false
+            }
+            navHostController.popBackStack()
+        }
+
         Row(
             verticalAlignment = Alignment.Top,
             horizontalArrangement = Arrangement.Start,
@@ -96,7 +115,8 @@ fun ServerItem(server: Server, navHostController: NavHostController) {
                     interactionSource = remember { MutableInteractionSource() }
                 ) {
                     basePreferenceHelper.setServerObject(server)
-                    navHostController.popBackStack()
+//                    onServerSelected(context, homeViewModel)
+                    isServerClicked = true
                 }
         ) {
             var ping by remember { mutableIntStateOf(0) }

+ 10 - 0
app/src/main/java/com/vpn/fastestvpnservice/interfaces/ServerCallbacks.kt

@@ -0,0 +1,10 @@
+package com.vpn.fastestvpnservice.interfaces
+
+import android.content.Context
+import androidx.compose.runtime.Composable
+import com.vpn.fastestvpnservice.viewmodels.HomeViewModel
+
+interface ServerCallbacks {
+    @Composable
+    fun onServerSelected(context: Context, homeViewModel: HomeViewModel, onClick: () -> Unit)
+}

+ 3 - 0
app/src/main/java/com/vpn/fastestvpnservice/screens/ServerListScreen.kt

@@ -83,6 +83,7 @@ import com.vpn.fastestvpnservice.customItems.ServerSearchItem
 import com.vpn.fastestvpnservice.customItems.calculatePing
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddTextSettings
+import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.onServer
 import com.vpn.fastestvpnservice.sealedClass.Screen
 import com.vpn.fastestvpnservice.viewmodels.SearchListViewModel
 import com.vpn.fastestvpnservice.viewmodels.ServerListViewModel
@@ -214,6 +215,8 @@ fun ServerList(
                         }
                     }
 
+
+
                 }
         }
     }

+ 43 - 2
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/HomeScreen.kt

@@ -1,5 +1,6 @@
 package com.vpn.fastestvpnservice.screens.bottomNavBarScreens
 
+import android.content.Context
 import android.content.res.Configuration
 import android.util.Log
 import android.widget.Toast
@@ -91,6 +92,7 @@ import com.vpn.fastestvpnservice.application.App
 import com.vpn.fastestvpnservice.beans.Server
 import com.vpn.fastestvpnservice.beans.isDarkTheme
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
+import com.vpn.fastestvpnservice.interfaces.ServerCallbacks
 import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
 import com.vpn.fastestvpnservice.ui.theme.FastestVPNTheme
 import com.vpn.fastestvpnservice.utils.Utils
@@ -99,6 +101,30 @@ import com.vpn.fastestvpnservice.viewmodels.HomeViewModel
 import com.vpn.fastestvpnservice.viewmodels.ServerListViewModel
 import com.vpn.fastestvpnservice.viewmodels.SplashViewModel
 import com.wireguard.android.backend.GoBackend
+import kotlinx.coroutines.CoroutineScope
+
+lateinit var act: ComponentActivity
+
+ val onServer = object : ServerCallbacks {
+    @Composable
+    override fun onServerSelected(
+        context: Context, homeViewModel: HomeViewModel,
+        onClick: () -> Unit) {
+
+        Text(text = "Hi")
+        Log.d("ServerCallbacks", "onServerSelected called!")
+        Log.d("onServerSelected", "onServerSelected called")
+//    homeViewModel._isConnect.value = true
+        val basePreferenceHelper = BasePreferenceHelper(context)
+//    basePreferenceHelper.setConnectState(true)
+//    homeViewModel.setConnectState(true)
+
+        val wg = WireGuardConnection(context, act ,homeViewModel)
+        wg.startVpn()
+        Log.d("isConnect_State", "onServerSelected ${homeViewModel.isConnect.value}")
+        onClick()
+    }
+}
 
 @OptIn(ExperimentalFoundationApi::class)
 @Composable
@@ -106,6 +132,7 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
 
     val context = LocalContext.current
     val basePreferenceHelper = BasePreferenceHelper(context)
+    act = activity
 
 //    var isConnect by remember { mutableStateOf(basePreferenceHelper.getConnectState()) }
 
@@ -123,8 +150,10 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
     var server: Server = Server()
     val wireGuardConnection = WireGuardConnection(context, activity, homeViewModel)
 
-    val isConnect: Boolean = homeViewModel.isConnect.observeAsState().value == true
-    Log.d("isConnect_State", "$isConnect")
+    var isConnect: Boolean = homeViewModel.isConnect.observeAsState().value == true
+    Log.d("isConnect_State", "live: $isConnect")
+    isConnect = basePreferenceHelper.getConnectState()
+    Log.d("isConnect_State", "$isConnect prefs => ${basePreferenceHelper.getConnectState()}")
 
         OnLifecycleEvent{owner, event ->
         when(event) {
@@ -570,6 +599,18 @@ fun Home(navHostController: NavHostController, activity: ComponentActivity) {
 
     }
 
+    
+}
+fun onServerSelected(context: Context, homeViewModel: HomeViewModel) {
+    Log.d("onServerSelected", "onServerSelected called")
+//    homeViewModel._isConnect.value = true
+    val basePreferenceHelper = BasePreferenceHelper(context)
+//    basePreferenceHelper.setConnectState(true)
+//    homeViewModel.setConnectState(true)
+
+    val wg = WireGuardConnection(context, act ,homeViewModel)
+    wg.startVpn()
+    Log.d("isConnect_State", "onServerSelected ${homeViewModel.isConnect.value}")
 }
 
 @Composable

+ 4 - 15
app/src/main/java/com/vpn/fastestvpnservice/screens/settingsScreenAll/SplitTunneling.kt

@@ -194,9 +194,7 @@ fun ColumnScope.ShowRadioButtons() {
         color = colorResource(id = R.color.gray_icon)
     ) {}
 
-
     apps = getInstalledApps(context)
-
     Log.d("test_split_compose", "apps called : ${apps.size}")
 
     val type = object : TypeToken<SortedSet<String?>?>() {}.type
@@ -204,20 +202,11 @@ fun ColumnScope.ShowRadioButtons() {
         prefHelper.getSplitTunneledApps(), type
     )
 
-    for (app in appsAllow) {
-        Log.d("test_split_compose", "apps allow : $app")
-    }
-
-    val appsNoVpn = Gson().fromJson<SortedSet<String>>(
-        prefHelper.getSplitTunneledAppsNoVpn(), type
-    )
-
-    for (app in appsNoVpn) {
-        Log.d("test_split_compose", "apps no vpn : $app")
-
+    appsAllow?.let {
+        for (app in appsAllow) {
+            Log.d("test_split_compose", "apps allow : $app")
+        }
     }
-    val appsNotAllow = prefHelper.getSplitTunneledAppsNotAllow()
-//    Log.d("test_split_compose", "apps not allow : $appsNotAllow")
 
     if (selectedList == splitList[1]) {
         ShowSplitTunnelList(apps)