瀏覽代碼

sorted alphabetically & popularity both on serverList

Khubaib 10 月之前
父節點
當前提交
7222929696

+ 2 - 1
app/src/main/java/com/vpn/fastestvpnservice/beans/ServerData.kt

@@ -14,5 +14,6 @@ class ServerData(
 
 
 class ServerDataGlobal(
 class ServerDataGlobal(
     var name: String? = null,
     var name: String? = null,
-    var servers: ArrayList<Server>? = null
+    var servers: ArrayList<Server>? = null,
+    var totalServers: Int = 0
 )
 )

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

@@ -88,6 +88,7 @@ import com.stealthcopter.networktools.ping.PingResult
 import com.stealthcopter.networktools.ping.PingStats
 import com.stealthcopter.networktools.ping.PingStats
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.Server
 import com.vpn.fastestvpnservice.beans.Server
+import com.vpn.fastestvpnservice.beans.ServerDataGlobal
 import com.vpn.fastestvpnservice.beans.filterList
 import com.vpn.fastestvpnservice.beans.filterList
 import com.vpn.fastestvpnservice.beans.serversListTest
 import com.vpn.fastestvpnservice.beans.serversListTest
 import com.vpn.fastestvpnservice.customItems.CountryItem
 import com.vpn.fastestvpnservice.customItems.CountryItem
@@ -629,10 +630,38 @@ fun ColumnScope.ShowAllLocationsList(
 //                    Log.d("filterServersList", "filterServersList: ${filterServersList.size}")
 //                    Log.d("filterServersList", "filterServersList: ${filterServersList.size}")
 
 
                     val countries = serverListViewModelSplash.liveDataGetServersGlobal.observeAsState().value
                     val countries = serverListViewModelSplash.liveDataGetServersGlobal.observeAsState().value
+                    val groupServers = serverListViewModelSplash.liveDataGroupServers.observeAsState().value
+                    var countriesFilter = ArrayList<ServerDataGlobal?>()
+                    var groupServersFilter = ArrayList<ServerDataGlobal?>()
+
+                    if (isAlphabetList.value) {
+                        countriesFilter = serversListFinalGlobal as ArrayList
+                        countriesFilter.get(selectedTabIndex)?.servers?.sortBy {
+                            if (selectedTabIndex == 0) it.country else it.server_name
+                        }
+                        groupServers?.sortBy {
+                            it?.name
+                        }
+
+                        serverListViewModelSplash.mutableLiveDataGroupServers.value = groupServers
+                    } else {
+                        if (countries != null) {
+                            countriesFilter = countries
+                            countriesFilter.get(selectedTabIndex)?.servers?.sortByDescending {
+                                it.totalServers
+                            }
+
+                            groupServers?.sortByDescending {
+                                it?.totalServers
+                            }
+
+                            serverListViewModelSplash.mutableLiveDataGroupServers.value = groupServers
+                        }
+                    }
                     when (selectedTabIndex) {
                     when (selectedTabIndex) {
                         0 -> {
                         0 -> {
                             LazyColumn() {
                             LazyColumn() {
-                                countries?.get(selectedTabIndex)?.servers?.let {
+                                countriesFilter?.get(selectedTabIndex)?.servers?.let {
                                     itemsIndexed(items = it, itemContent = {index, country ->
                                     itemsIndexed(items = it, itemContent = {index, country ->
                                         CountryItem(server = country, "servers", country.totalServers, navHostController, index)
                                         CountryItem(server = country, "servers", country.totalServers, navHostController, index)
                                     })
                                     })
@@ -641,7 +670,7 @@ fun ColumnScope.ShowAllLocationsList(
                         }
                         }
                         else -> {
                         else -> {
                             LazyColumn() {
                             LazyColumn() {
-                                countries?.get(selectedTabIndex)?.servers?.let {
+                                countriesFilter?.get(selectedTabIndex)?.servers?.let {
                                     items(items = it, itemContent = {country ->
                                     items(items = it, itemContent = {country ->
                                         ServerItem(server = country, navHostController, country.ping)
                                         ServerItem(server = country, navHostController, country.ping)
                                     })
                                     })

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

@@ -75,6 +75,7 @@ val smartLocationListGlobal: ArrayList<Server> = ArrayList<Server>()
 var serversListAllGlobal: ArrayList<Server> = ArrayList<Server>()
 var serversListAllGlobal: ArrayList<Server> = ArrayList<Server>()
 var serversGroupListGlobal: ArrayList<ServerDataGlobal?> = ArrayList<ServerDataGlobal?>()
 var serversGroupListGlobal: ArrayList<ServerDataGlobal?> = ArrayList<ServerDataGlobal?>()
 var serversListGlobal: ArrayList<ServerDataGlobal?> = ArrayList<ServerDataGlobal?>()
 var serversListGlobal: ArrayList<ServerDataGlobal?> = ArrayList<ServerDataGlobal?>()
+var serversListFinalGlobal: List<ServerDataGlobal?> = ArrayList()
 
 
 lateinit var splashViewModelSplash: SplashViewModel
 lateinit var splashViewModelSplash: SplashViewModel
 lateinit var serverListViewModelSplash: ServerListViewModel
 lateinit var serverListViewModelSplash: ServerListViewModel

+ 3 - 1
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/ServerListViewModel.kt

@@ -28,6 +28,7 @@ import com.vpn.fastestvpnservice.screens.recommendedListGlobal
 import com.vpn.fastestvpnservice.screens.serverListViewModelSplash
 import com.vpn.fastestvpnservice.screens.serverListViewModelSplash
 import com.vpn.fastestvpnservice.screens.serversGroupListGlobal
 import com.vpn.fastestvpnservice.screens.serversGroupListGlobal
 import com.vpn.fastestvpnservice.screens.serversListAllGlobal
 import com.vpn.fastestvpnservice.screens.serversListAllGlobal
+import com.vpn.fastestvpnservice.screens.serversListFinalGlobal
 import com.vpn.fastestvpnservice.screens.serversListGlobal
 import com.vpn.fastestvpnservice.screens.serversListGlobal
 import com.vpn.fastestvpnservice.screens.smartLocationListGlobal
 import com.vpn.fastestvpnservice.screens.smartLocationListGlobal
 import retrofit2.Call
 import retrofit2.Call
@@ -192,6 +193,7 @@ class ServerListViewModel(context: Context): ViewModel() {
             }
             }
         }
         }
 
 
+        serversListFinalGlobal = serversListGlobal
         serversListGlobal.forEachIndexed { index, serverData ->
         serversListGlobal.forEachIndexed { index, serverData ->
             Log.d("test_serverData G", "$index: ${serverData?.name} => ${serverData?.servers?.size}")
             Log.d("test_serverData G", "$index: ${serverData?.name} => ${serverData?.servers?.size}")
             serverData?.servers?.let { serversListAllGlobal.addAll(it) }
             serverData?.servers?.let { serversListAllGlobal.addAll(it) }
@@ -688,7 +690,7 @@ class ServerListViewModel(context: Context): ViewModel() {
             tempList2.add(server1)
             tempList2.add(server1)
         }
         }
 
 
-        serversGroupListGlobal.add(index, ServerDataGlobal(server.country, tempList2))
+        serversGroupListGlobal.add(index, ServerDataGlobal(server.country, tempList2, server.totalServers))
         serversGroupListGlobal.let {
         serversGroupListGlobal.let {
             mutableLiveDataGroupServers.value = it
             mutableLiveDataGroupServers.value = it
         }
         }