Parcourir la source

working on ping to show on all servers..

Khubaib il y a 1 an
Parent
commit
d05908d76b

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

@@ -207,6 +207,7 @@ fun CountryItem(server: Server, category: String, countryTotalServers: Int, navH
                         val serversGroup = serverListViewModel.getServerGroupList(server, it)
                         ExpandableRow(server = serversGroup, navHostController)
                     }
+
                 }
             }
 

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

@@ -77,7 +77,7 @@ import com.vpn.fastestvpnservice.viewmodels.SplashViewModel
 import java.lang.Exception
 
 @Composable
-fun ServerItem(server: Server, navHostController: NavHostController) {
+fun ServerItem(server: Server, navHostController: NavHostController, serverPing: Int = 0) {
     val context = LocalContext.current
     val scope = rememberCoroutineScope()
     var isServerClicked by remember { mutableStateOf(false) }
@@ -165,7 +165,7 @@ fun ServerItem(server: Server, navHostController: NavHostController) {
                     .align(Alignment.CenterVertically)
                 )
             Spacer(modifier = Modifier.weight(1F))
-            Text(text = "${server.ping} ms",
+            Text(text = "$serverPing ms",
                 style = MaterialTheme.typography.displayMedium,
                 color = colorResource(id = R.color.blue_text),
                 modifier = Modifier

+ 40 - 9
app/src/main/java/com/vpn/fastestvpnservice/screens/ServerListScreen.kt

@@ -2,6 +2,7 @@ package com.vpn.fastestvpnservice.screens
 
 import android.content.res.Configuration
 import android.location.Location
+import android.os.Looper
 import android.util.Log
 import android.view.animation.Animation
 import android.view.animation.AnimationUtils
@@ -83,13 +84,15 @@ import androidx.compose.ui.platform.LocalFocusManager
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.zIndex
 import androidx.lifecycle.viewmodel.compose.viewModel
+import com.stealthcopter.networktools.Ping
+import com.stealthcopter.networktools.ping.PingResult
+import com.stealthcopter.networktools.ping.PingStats
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.Server
 import com.vpn.fastestvpnservice.beans.filterList
 import com.vpn.fastestvpnservice.customItems.CountryItem
 import com.vpn.fastestvpnservice.customItems.ServerItem
 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
@@ -394,7 +397,7 @@ fun ColumnScope.ShowRecommendedList(
 //                    favFilterList = it
 //                }
                 items(items = favList) { server ->
-                    ServerItem(server, navHostController)
+                    ServerItem(server, navHostController, server.ping)
                 }
             }
 
@@ -427,7 +430,7 @@ fun ColumnScope.ShowRecommendedList(
             }
 
             items(items = smartLocationList) { server ->
-                ServerItem(server, navHostController)
+                ServerItem(server, navHostController, server.ping)
             }
 
             /* Recent List */
@@ -470,7 +473,7 @@ fun ColumnScope.ShowRecommendedList(
                 recentLocation.add(it)
             }
             items(items = recentLocation) { server ->
-                ServerItem(server, navHostController)
+                ServerItem(server, navHostController, server.ping)
             }
 
             /* Recommended List */
@@ -510,7 +513,7 @@ fun ColumnScope.ShowRecommendedList(
 //            }
 
             items(items = recommendedList) { server ->
-                ServerItem(server, navHostController)
+                ServerItem(server, navHostController, server.ping)
             }
         }
     }
@@ -636,9 +639,13 @@ fun ColumnScope.ShowAllLocationsList(
         }!!
     }
 
-    filterServersList.forEachIndexed { index, server ->
-        Log.d("test_fav_server_logic", "${server.server_name} ${server.isFavourited}")
-    }
+//    filterServersList.forEachIndexed { index, server ->
+//        calculatePing(server) {
+//            server.ping = it
+//            Log.d("test_fav_server_logic", "${server.server_name} ${server.ping}")
+//        }
+//    }
+
 
     HorizontalPager(
         state = pagerState,
@@ -658,6 +665,7 @@ fun ColumnScope.ShowAllLocationsList(
                     LocalOverscrollConfiguration provides null
                 )
                 {
+                    var pingResult: Int = 0
 
                     Log.d("filterServersList", "filterServersList: ${filterServersList.size}")
                     when (selectedTabIndex) {
@@ -671,7 +679,13 @@ fun ColumnScope.ShowAllLocationsList(
                         else -> {
                             LazyColumn() {
                                 items(items = filterServersList, itemContent = {country ->
-                                    ServerItem(server = country, navHostController)
+                                    CalculatePing(country, onPingResult = {
+                                        Log.d("test_ping_stream", "SLS : ${country.server_name} ${it}")
+                                        pingResult = it
+                                    })
+                                    ServerItem(server = country, navHostController, pingResult)
+
+//                                        Log.d("test_fav_server_logic", "${country.server_name} ${it}")
                                 })
                             }
                         }
@@ -697,6 +711,23 @@ fun ColumnScope.ShowAllLocationsList(
     }
 }
 
+fun CalculatePing(server: Server, onPingResult: (Int) -> Unit) {
+    Ping.onAddress(server.ip as String).setTimeOutMillis(1000).doPing(
+        object : Ping.PingListener{
+            override fun onResult(pingResult: PingResult?) {
+                android.os.Handler(Looper.getMainLooper()).post {
+                    val ping = pingResult?.timeTaken?.toInt()!!
+                    onPingResult(ping)
+                    Log.d("test_ping", "ping[0] = $ping")
+                    Log.d("test_ping_stream", "calculatePing: ${ping}")
+                }
+            }
+            override fun onError(e: java.lang.Exception?) {}
+            override fun onFinished(pingStats: PingStats?) {}
+        }
+    )
+}
+
 @Composable
 fun ColumnScope.ShowHeaderItem(
     serverTitle: String,

+ 25 - 46
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/ServerListViewModel.kt

@@ -65,9 +65,9 @@ class ServerListViewModel(context: Context): ViewModel() {
                         val ping = pingResult?.timeTaken?.toInt()!!
                         onPingResult(ping)
                         Log.d("test_ping", "ping[0] = $ping")
+                        Log.d("test_ping_stream", "calculatePing: ${ping}")
                     }
                 }
-
                 override fun onError(e: java.lang.Exception?) {}
                 override fun onFinished(pingStats: PingStats?) {}
             }
@@ -309,7 +309,10 @@ class ServerListViewModel(context: Context): ViewModel() {
         return (enabledServer as ArrayList<Server>)
     }
 
-    fun filterServersByStreamingServers(serverlist: ArrayList<Server>, isAlphabet: Boolean): ArrayList<Server> {
+    fun filterServersByStreamingServers(
+        serverlist: ArrayList<Server>,
+        isAlphabet: Boolean
+    ): ArrayList<Server> {
 
         serverlist.sortWith(Comparator { s1, s2 ->
             return@Comparator s1.country_sort.compareTo(s2.country_sort)
@@ -337,16 +340,19 @@ class ServerListViewModel(context: Context): ViewModel() {
 
         val filterList = distinctBy as ArrayList<Server>
 
-        filterList.forEachIndexed { index, server ->
-            Log.d("test_servers_total", "${server.server_name} ${server.totalServers}")
-        }
-
         if (isAlphabet) {
             filterList.sortBy {
                 it.server_name
             }
         }
-//        Log.d("streaming_servers t", distinctBy.size.toString())
+
+        filterList.forEach {server ->
+            calculatePing(server) {
+                server.ping = it
+            }
+            Log.d("test_ping_stream", "${server.ping}")
+
+        }
         return (filterList)
     }
 
@@ -533,11 +539,19 @@ class ServerListViewModel(context: Context): ViewModel() {
             it.server_name
         }
 
-        tempList.forEachIndexed { index, servers ->
-            Log.d("tempList_servers", "${servers.server_name} , ${servers.country}")
-        }
+//        tempList.forEachIndexed { index, servers ->
+//            Log.d("tempList_servers", "${servers.server_name} , ${servers.country}")
+//        }
         mutableLiveDataGroupServers.value = tempList
 
+        tempList.forEachIndexed { index, server1 ->
+            calculatePing(server1){
+                Log.d("serverInfo_ping", "serverInfo $it")
+                server1.ping = it
+                tempList.set(index, server1)
+            }
+        }
+
         return tempList
     }
 
@@ -557,43 +571,8 @@ class ServerListViewModel(context: Context): ViewModel() {
             }
         }
 
-        serverData.forEachIndexed { i, serverDataList ->
-            if (serverDataList.name.equals("Streaming")) {
-                serverDataList.servers?.forEachIndexed { index, obj ->
-                    Log.d("test_serverData_Fav","server = ${obj.server_name} ${obj.isFavourited}")
-                }
-            }
-        }
-
-//        serverData.forEachIndexed { i, serverDataList ->
-//            serverDataList.servers?.let {serverList ->
-//                serverList.forEachIndexed { index, obj ->
-//                    if (obj.id == server.id) {
-//                        Log.d("test_serverData_Fav","if => index[$i]:: obj.id ${obj.id} , server_id = ${server.id}")
-//                        obj.isFavourited = server.isFavourited
-//                        serverList[index] = obj
-//                    }
-//                }
-//            }
-//        }
-
         preferencesHelper.saveServerData(serverData)
         _mutableLiveDataGetFavList.value = getFavList()
     }
 
-}
-
-//serverData.let {
-//            it.forEach {serverDataList ->
-//                Log.d("test_serverData_Fav","data = " + serverDataList.name)
-//
-//                serverDataList.servers?.let { serversList ->
-//                    serversList.forEachIndexed { index, obj ->
-//                        if (obj.id == server.id){
-//                            obj.isFavourited = server.isFavourited
-//                            it.set(index, serverDataList)
-//                        }
-//                    }
-//                }
-//            }
-//        }
+}