Explorar o código

ping added on each server item, calculating and put inside LaunchedEffect

Khubaib hai 1 ano
pai
achega
1ffd23b177

+ 30 - 2
app/src/main/java/com/vpn/fastestvpnservice/customItems/CountryItem.kt

@@ -347,7 +347,10 @@ fun CountryItem(
 }
 
 @Composable
-fun ColumnScope.ExpandableRow(server: ArrayList<Server>, navHostController: NavHostController) {
+fun ColumnScope.ExpandableRow(
+    server: ArrayList<Server>,
+    navHostController: NavHostController
+) {
     val context = LocalContext.current
     val basePreferenceHelper = BasePreferenceHelper(context)
     val serverListViewModel: ServerListViewModel = viewModel{
@@ -387,6 +390,31 @@ fun ColumnScope.ExpandableRow(server: ArrayList<Server>, navHostController: NavH
                         navHostController.popBackStack()
                     }
 
+                    var ping by remember { mutableIntStateOf(0) }
+
+                    fun updatePing(newPing: Int) {
+                        ping = newPing
+                    }
+
+                    LaunchedEffect(key1 = Unit) {
+                        Log.d("test_new_ping", "Inside LE")
+//                while (true) {
+                        Ping.onAddress(serverInfo.ip as String).setTimeOutMillis(1000).doPing(
+                            object : Ping.PingListener{
+                                override fun onResult(pingResult: PingResult?) {
+                                    pingResult?.let {
+                                        Log.d("test_new_ping", "pingResult = ${it.timeTaken.toInt()}")
+                                        updatePing(it.timeTaken.toInt())
+                                    }
+                                }
+                                override fun onError(e: Exception?) {}
+                                override fun onFinished(pingStats: PingStats?) {}
+                            }
+                        )
+//                    delay(3 * 1000)
+//                }
+                    }
+
                     Row(
                         verticalAlignment = Alignment.CenterVertically,
                         horizontalArrangement = Arrangement.Start,
@@ -421,7 +449,7 @@ fun ColumnScope.ExpandableRow(server: ArrayList<Server>, navHostController: NavH
                         )
                         Spacer(modifier = Modifier.weight(1F))
 
-                        Text(text = "${serverInfo.ping} ms",
+                        Text(text = "$ping ms",
                             style = MaterialTheme.typography.displayMedium,
                             color = colorResource(id = R.color.blue_text),
                             modifier = Modifier

+ 70 - 39
app/src/main/java/com/vpn/fastestvpnservice/customItems/ServerItem.kt

@@ -29,6 +29,7 @@ import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Surface
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.livedata.observeAsState
 import androidx.compose.runtime.mutableIntStateOf
@@ -76,6 +77,7 @@ 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 kotlinx.coroutines.delay
 import java.lang.Exception
 
 @Composable
@@ -138,18 +140,30 @@ fun ServerItem(server: Server, navHostController: NavHostController, serverPing:
                 }
         ) {
             var ping by remember { mutableIntStateOf(0) }
-//            Ping.onAddress(server.ip as String).setTimeOutMillis(1000).doPing(
-//                object : Ping.PingListener{
-//                    override fun onResult(pingResult: PingResult?) {
-//                        android.os.Handler(Looper.getMainLooper()).post {
-//                            ping = pingResult?.timeTaken?.toInt()!!
-//                        }
-//                    }
-//
-//                    override fun onError(e: Exception?) {}
-//                    override fun onFinished(pingStats: PingStats?) {}
+
+            fun updatePing(newPing: Int) {
+                ping = newPing
+            }
+
+            LaunchedEffect(key1 = Unit) {
+                Log.d("test_new_ping", "Inside LE")
+//                while (true) {
+                    Ping.onAddress(server.ip as String).setTimeOutMillis(1000).doPing(
+                        object : Ping.PingListener{
+                            override fun onResult(pingResult: PingResult?) {
+                                pingResult?.let {
+                                    Log.d("test_new_ping", "pingResult = ${it.timeTaken.toInt()}")
+                                    updatePing(it.timeTaken.toInt())
+                                }
+                            }
+                            override fun onError(e: Exception?) {}
+                            override fun onFinished(pingStats: PingStats?) {}
+                        }
+                    )
+//                    delay(3 * 1000)
 //                }
-//            )
+            }
+
             val icon = if (server.enable == 1) Utils.getDrawable(context, server.iso)
             else Utils.getDrawableGray(context, server.iso)
 
@@ -174,7 +188,7 @@ fun ServerItem(server: Server, navHostController: NavHostController, serverPing:
                     .align(Alignment.CenterVertically)
                 )
             Spacer(modifier = Modifier.weight(1F))
-            Text(text = "$serverPing ms",
+            Text(text = "$ping ms",
                 style = MaterialTheme.typography.displayMedium,
                 color = colorResource(id = R.color.blue_text),
                 modifier = Modifier
@@ -277,18 +291,25 @@ fun FavoriteServerItem(server: Server, navHostController: NavHostController) {
                 }
         ) {
             var ping by remember { mutableIntStateOf(0) }
-//            Ping.onAddress(server.ip as String).setTimeOutMillis(1000).doPing(
-//                object : Ping.PingListener{
-//                    override fun onResult(pingResult: PingResult?) {
-//                        android.os.Handler(Looper.getMainLooper()).post {
-//                            ping = pingResult?.timeTaken?.toInt()!!
-//                        }
-//                    }
-//
-//                    override fun onError(e: Exception?) {}
-//                    override fun onFinished(pingStats: PingStats?) {}
-//                }
-//            )
+            fun updatePing(newPing: Int) {
+                ping = newPing
+            }
+            LaunchedEffect(key1 = Unit) {
+                Ping.onAddress(server.ip as String).setTimeOutMillis(1000).doPing(
+                    object : Ping.PingListener{
+                        override fun onResult(pingResult: PingResult?) {
+                            android.os.Handler(Looper.getMainLooper()).post {
+                                pingResult?.let {
+                                    updatePing(it.timeTaken.toInt())
+                                }
+                            }
+                        }
+
+                        override fun onError(e: Exception?) {}
+                        override fun onFinished(pingStats: PingStats?) {}
+                    }
+                )
+            }
             val icon = if (server.enable == 1) Utils.getDrawable(context, server.iso)
             else Utils.getDrawableGray(context, server.iso)
 
@@ -315,7 +336,7 @@ fun FavoriteServerItem(server: Server, navHostController: NavHostController) {
                     .align(Alignment.CenterVertically)
             )
             Spacer(modifier = Modifier.weight(1F))
-            Text(text = "${server.ping} ms",
+            Text(text = "$ping ms",
                 color = colorResource(id = R.color.blue_text),
                 style = MaterialTheme.typography.displayMedium,
                 modifier = Modifier
@@ -431,8 +452,7 @@ fun ServerSearchItem(
                         if (!isServerCallbackShown) {
                             onServerDisable()
                         }
-                    }
-                    else {
+                    } else {
                         navHostController.navigate(
                             Screen.Subscription.route
                         )
@@ -441,18 +461,29 @@ fun ServerSearchItem(
                 }
         ) {
             var ping by remember { mutableIntStateOf(0) }
-//            Ping.onAddress(server.ip as String).setTimeOutMillis(1000).doPing(
-//                object : Ping.PingListener{
-//                    override fun onResult(pingResult: PingResult?) {
-//                        android.os.Handler(Looper.getMainLooper()).post {
-//                            ping = pingResult?.timeTaken?.toInt()!!
-//                        }
-//                    }
-//
-//                    override fun onError(e: Exception?) {}
-//                    override fun onFinished(pingStats: PingStats?) {}
+
+            fun updatePing(newPing: Int) {
+                ping = newPing
+            }
+
+            LaunchedEffect(key1 = Unit) {
+                Log.d("test_new_ping", "Inside LE")
+//                while (true) {
+                Ping.onAddress(server.ip as String).setTimeOutMillis(1000).doPing(
+                    object : Ping.PingListener{
+                        override fun onResult(pingResult: PingResult?) {
+                            pingResult?.let {
+                                Log.d("test_new_ping", "pingResult = ${it.timeTaken.toInt()}")
+                                updatePing(it.timeTaken.toInt())
+                            }
+                        }
+                        override fun onError(e: Exception?) {}
+                        override fun onFinished(pingStats: PingStats?) {}
+                    }
+                )
+//                    delay(3 * 1000)
 //                }
-//            )
+            }
             val icon = if (server.enable == 1) Utils.getDrawable(context, server.iso)
             else Utils.getDrawableGray(context, server.iso)
 
@@ -477,7 +508,7 @@ fun ServerSearchItem(
                     .align(Alignment.CenterVertically)
             )
             Spacer(modifier = Modifier.weight(1F))
-            Text(text = "${server.ping} ms",
+            Text(text = "$ping ms",
                 color = colorResource(id = R.color.blue_text),
                 style = MaterialTheme.typography.displayMedium,
                 modifier = Modifier