浏览代码

ping also showing on search servers

Khubaib 10 月之前
父节点
当前提交
03eb8fae9c

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

@@ -284,26 +284,26 @@ fun FavoriteServerItem(server: Server, navHostController: NavHostController, ser
                     }
                 }
         ) {
-            var ping by rememberSaveable { mutableIntStateOf(0) }
-            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 {
-                                    if (ping == 0) updatePing(it.timeTaken.toInt())
-                                }
-                            }
-                        }
-
-                        override fun onError(e: Exception?) {}
-                        override fun onFinished(pingStats: PingStats?) {}
-                    }
-                )
-            }
+//            var ping by rememberSaveable { mutableIntStateOf(0) }
+//            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 {
+//                                    if (ping == 0) 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)
 
@@ -330,7 +330,7 @@ fun FavoriteServerItem(server: Server, navHostController: NavHostController, ser
                     .align(Alignment.CenterVertically)
             )
             Spacer(modifier = Modifier.weight(1F))
-            Text(text = "$ping ms",
+            Text(text = "$serverPing ms",
                 color = colorResource(id = R.color.blue_text),
                 style = MaterialTheme.typography.displayMedium,
                 modifier = Modifier
@@ -384,6 +384,7 @@ fun ServerSearchItem(
     bgColor: Color = Color.White,
     textColor: Color = MaterialTheme.colorScheme.primary,
     isServerCallbackShown: Boolean = true,
+    serverPing: Int,
     onServerDisable: () -> Unit
 ) {
     val context = LocalContext.current
@@ -460,30 +461,28 @@ fun ServerSearchItem(
 
                 }
         ) {
-            var ping by rememberSaveable { mutableIntStateOf(0) }
-
-            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()}")
-                                if (ping == 0) updatePing(it.timeTaken.toInt())
-                            }
-                        }
-                        override fun onError(e: Exception?) {}
-                        override fun onFinished(pingStats: PingStats?) {}
-                    }
-                )
-//                    delay(3 * 1000)
-//                }
-            }
+//            var ping by rememberSaveable { mutableIntStateOf(0) }
+//            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()}")
+//                                if (ping == 0) 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)
 
@@ -509,7 +508,7 @@ fun ServerSearchItem(
                     .align(Alignment.CenterVertically)
             )
             Spacer(modifier = Modifier.weight(1F))
-            Text(text = "$ping ms",
+            Text(text = "$serverPing ms",
                 color = colorResource(id = R.color.blue_text),
                 style = MaterialTheme.typography.displayMedium,
                 modifier = Modifier
@@ -665,5 +664,5 @@ fun FavoriteServerItemPreviewDark() {
 @Preview
 @Composable
 fun ServerSearchItemPreview() {
-    ServerSearchItem(server = favListServer[0], rememberNavController()) {}
+    ServerSearchItem(server = favListServer[0], rememberNavController(), serverPing = 0) {}
 }

+ 4 - 2
app/src/main/java/com/vpn/fastestvpnservice/screens/ServerListScreen.kt

@@ -837,7 +837,9 @@ fun ColumnScope.ShowSearchBar(
         LocalOverscrollConfiguration provides null
     ) {
         val searchServersList = searchListViewModel.countriesList.observeAsState().value
-        Log.d("test_search", "SLS_${searchServersList?.size.toString()}")
+        searchServersList?.forEachIndexed { index, server ->
+            Log.d("test_search", "SLS_ ${server.server_name} ${server.ping}")
+        }
         if (searchServersList != null) {
             val fraction = if (searchServersList.size > 0) 1f else if (searchText1.isNotEmpty()) 1f else 0f
             LazyColumn(
@@ -848,7 +850,7 @@ fun ColumnScope.ShowSearchBar(
             ) {
                 searchServersList.let {
                     items(items = it) { server ->
-                        ServerSearchItem(server, navHostController = navHostController) {}
+                        ServerSearchItem(server, navHostController = navHostController, serverPing = server.ping) {}
                     }
                 }
             }

+ 1 - 2
app/src/main/java/com/vpn/fastestvpnservice/screens/SplashScreen.kt

@@ -70,8 +70,7 @@ import kotlinx.coroutines.delay
 
 var recommendedListGlobal: ArrayList<Server> = ArrayList<Server>()
 val smartLocationListGlobal: ArrayList<Server> = ArrayList<Server>()
-val countryListTestGlobal: ArrayList<Server> = ArrayList<Server>()
-var countriesListGlobal: ArrayList<Server> = ArrayList<Server>()
+var serversListAllGlobal: ArrayList<Server> = ArrayList<Server>()
 var serversGroupListGlobal: ArrayList<ServerDataGlobal?> = ArrayList<ServerDataGlobal?>()
 var serversListGlobal: ArrayList<ServerDataGlobal?> = ArrayList<ServerDataGlobal?>()
 

+ 46 - 39
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/SearchListViewModel.kt

@@ -3,6 +3,7 @@ package com.vpn.fastestvpnservice.viewmodels
 import android.content.Context
 import android.util.Log
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.livedata.observeAsState
 import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.ui.platform.LocalContext
 import androidx.lifecycle.LiveData
@@ -18,6 +19,8 @@ import com.vpn.fastestvpnservice.beans.ServerResponse
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import com.vpn.fastestvpnservice.retrofit.RetrofitNetworkHandling
 import com.vpn.fastestvpnservice.retrofit.WebServiceFactory
+import com.vpn.fastestvpnservice.screens.CalculatePing
+import com.vpn.fastestvpnservice.screens.serverListViewModelSplash
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.FlowPreview
@@ -102,28 +105,32 @@ class SearchListViewModel constructor(
             }
         }
 
-        val searchServersList = serverListViewModel.filterServersAllCategory(allServers)
+        val allServers2 = serverListViewModelSplash.liveDataAllServers.value
+        val searchServersList = allServers2?.let { serverListViewModelSplash.filterServersAllCategory(it) }
 
-        searchServersList.forEachIndexed { index, server ->
-            if (server.country?.lowercase()?.contains(text.lowercase().toString()) == true
-                || server.server_name?.lowercase()?.contains(text.lowercase().toString()) == true
-                || server.name?.lowercase()?.contains(text.lowercase().toString()) == true
-                || server.iso?.lowercase()?.contains(text.lowercase().toString()) == true) {
+        searchServersList?.forEachIndexed { index, server ->
+            if (server?.country?.lowercase()?.contains(text.lowercase().toString()) == true
+                || server?.server_name?.lowercase()?.contains(text.lowercase().toString()) == true
+                || server?.name?.lowercase()?.contains(text.lowercase().toString()) == true
+                || server?.iso?.lowercase()?.contains(text.lowercase().toString()) == true) {
                 serversArray.add(server)
             }
         }
 
-        filtersArray = if (text == ""){
-            emptyArray
-        } else {
+         if (text == ""){
+             filtersArray = emptyArray
+        }
+        else {
             if (serversArray.size > 0) {
-                serversArray
+                filtersArray = serversArray
             }
             else if (text == "settings_screen") {
-                searchServersList
+                searchServersList?.let {
+                    filtersArray = it
+                }
             }
             else {
-                emptyArray
+                filtersArray = emptyArray
             }
         }
 
@@ -136,32 +143,32 @@ class SearchListViewModel constructor(
         return filtersArray
     }
 
-    fun updateFavUnFavServerState(server: Server) {
-        server.isFavourited = server.isFavourited != true
-        val serverData = basePreferenceHelper.getServerData()
-        val allServers: ArrayList<Server> = ArrayList<Server>()
-
-        serverData.forEachIndexed { i, serverDataList ->
-            serverDataList.servers?.let {serverList ->
-                serverList.forEachIndexed { index, obj ->
-                    if (obj.id == server.id) {
-                        obj.isFavourited = server.isFavourited
-                        serverList.set(index, obj)
-                    }
-                }
-            }
-        }
-
-        serverData.forEachIndexed { index1, serverData1 ->
-            serverData1.servers?.forEachIndexed { indexes, server ->
-                allServers.add(indexes, server)
-            }
-        }
-
-        val searchServersList = serverListViewModel.filterServersAllCategory(allServers)
-        _countriesList.value = searchServersList
-
-        basePreferenceHelper.saveServerData(serverData)
-    }
+//    fun updateFavUnFavServerState(server: Server) {
+//        server.isFavourited = server.isFavourited != true
+//        val serverData = basePreferenceHelper.getServerData()
+//        val allServers: ArrayList<Server> = ArrayList<Server>()
+//
+//        serverData.forEachIndexed { i, serverDataList ->
+//            serverDataList.servers?.let {serverList ->
+//                serverList.forEachIndexed { index, obj ->
+//                    if (obj.id == server.id) {
+//                        obj.isFavourited = server.isFavourited
+//                        serverList.set(index, obj)
+//                    }
+//                }
+//            }
+//        }
+//
+//        serverData.forEachIndexed { index1, serverData1 ->
+//            serverData1.servers?.forEachIndexed { indexes, server ->
+//                allServers.add(indexes, server)
+//            }
+//        }
+//
+//        val searchServersList = serverListViewModel.filterServersAllCategory(allServers)
+//        _countriesList.value = searchServersList
+//
+//        basePreferenceHelper.saveServerData(serverData)
+//    }
 
 }

+ 23 - 13
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/ServerListViewModel.kt

@@ -21,11 +21,11 @@ import com.vpn.fastestvpnservice.beans.ServerResponse
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import com.vpn.fastestvpnservice.retrofit.RetrofitNetworkHandling
 import com.vpn.fastestvpnservice.retrofit.WebServiceFactory
-import com.vpn.fastestvpnservice.screens.countriesListGlobal
 import com.vpn.fastestvpnservice.screens.isAlphabetList
 import com.vpn.fastestvpnservice.screens.recommendedListGlobal
 import com.vpn.fastestvpnservice.screens.serverListViewModelSplash
 import com.vpn.fastestvpnservice.screens.serversGroupListGlobal
+import com.vpn.fastestvpnservice.screens.serversListAllGlobal
 import com.vpn.fastestvpnservice.screens.serversListGlobal
 import com.vpn.fastestvpnservice.screens.smartLocationListGlobal
 import retrofit2.Call
@@ -62,12 +62,8 @@ class ServerListViewModel(context: Context): ViewModel() {
     var mutableLiveDataGroupServers = MutableLiveData<ArrayList<ServerDataGlobal?>?>()
     var liveDataGroupServers: LiveData<ArrayList<ServerDataGlobal?>?> = mutableLiveDataGroupServers
 
-    var _mutableLiveDataGetServerData = MutableLiveData<ArrayList<ServerData>>(getServerData())
-    var liveDataGetServerData: LiveData<ArrayList<ServerData>> = _mutableLiveDataGetServerData
-
-//    init {
-//        preferencesHelper = BasePreferenceHelper(context)
-//    }
+    var mutableLiveDataAllServers = MutableLiveData<ArrayList<Server>>()
+    var liveDataAllServers: LiveData<ArrayList<Server>> = mutableLiveDataAllServers
 
     fun setPagerIndex(index: Int) {
         _mutableLiveDataPagerIndex.value = index
@@ -184,9 +180,15 @@ class ServerListViewModel(context: Context): ViewModel() {
 
         serversListGlobal.forEachIndexed { index, serverData ->
             Log.d("test_serverData G", "$index: ${serverData?.name} => ${serverData?.servers?.size}")
+            serverData?.servers?.let { serversListAllGlobal.addAll(it) }
         }
 
+//        serversListAllGlobal.forEachIndexed { index, serverData ->
+//            Log.d("test_serverDataAll", "$index: ${serverData.server_name} ${serverData.ping}")
+//        }
+
         _mutableLiveDataGetServersGlobal.value = serversListGlobal
+        mutableLiveDataAllServers.value = serversListAllGlobal
     }
     fun calculatePing(server: Server, onPingResult: (Int) -> Unit) {
         Ping.onAddress(server.ip as String).setTimeOutMillis(1000).doPing(
@@ -322,11 +324,17 @@ class ServerListViewModel(context: Context): ViewModel() {
             it.server_name
         }
 
-        data.forEachIndexed { index, server ->
-            calculatePing(server) {
-                server.ping = it
-            }
-        }
+//        val data2 = ArrayList<Server>()
+
+//        data.forEachIndexed { index, server ->
+//            calculatePing(server) {
+//                Log.d("serverInfo_ping", "All: ${server.server_name} $it")
+//                server.ping = it
+//            }
+//            data2.add(server)
+//        }
+
+//        serversListAllGlobal = (data2)
 //        serverProtocol.groupBy(Server::country).mapValues { entry ->
 //            for ((index, value) in distinctBy.withIndex()) {
 //                if (entry.key == value.country) {
@@ -335,6 +343,8 @@ class ServerListViewModel(context: Context): ViewModel() {
 //            }
 //        }
 
+        mutableLiveDataAllServers.value = data
+
         return (data)
     }
 
@@ -640,7 +650,7 @@ class ServerListViewModel(context: Context): ViewModel() {
 
         tempList.forEachIndexed { index1, server1 ->
             calculatePing(server1){
-                Log.d("serverInfo_ping", "In: ${server1.server_name} $it")
+//                Log.d("serverInfo_ping", "In: ${server1.server_name} $it")
                 server1.ping = it
             }
             tempList2.add(server1)