Forráskód Böngészése

set filter by countrysort & High_connectioncount on Popularity

Khubaib 10 hónapja
szülő
commit
b4c9c35954

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

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

+ 18 - 34
app/src/main/java/com/vpn/fastestvpnservice/screens/ServerListScreen.kt

@@ -2,9 +2,6 @@ package com.vpn.fastestvpnservice.screens
 
 import android.app.Activity
 import android.content.res.Configuration
-import android.location.Location
-import android.os.Handler
-import android.os.Looper
 import android.util.Log
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.LocalOverscrollConfiguration
@@ -22,7 +19,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.items
 import androidx.compose.foundation.lazy.itemsIndexed
@@ -41,7 +37,6 @@ import androidx.compose.material3.ModalBottomSheet
 import androidx.compose.material3.RadioButton
 import androidx.compose.material3.RadioButtonDefaults
 import androidx.compose.material3.ScrollableTabRow
-import androidx.compose.material3.SearchBar
 import androidx.compose.material3.SearchBarDefaults
 import androidx.compose.material3.Surface
 import androidx.compose.material3.Tab
@@ -55,12 +50,10 @@ import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.MutableState
-import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.livedata.observeAsState
 import androidx.compose.runtime.mutableFloatStateOf
-import androidx.compose.runtime.mutableIntStateOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberCoroutineScope
@@ -84,14 +77,10 @@ import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 import androidx.navigation.NavHostController
 import androidx.navigation.compose.rememberNavController
-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.ServerDataGlobal
 import com.vpn.fastestvpnservice.beans.filterList
-import com.vpn.fastestvpnservice.beans.serversListTest
 import com.vpn.fastestvpnservice.customItems.CountryItem
 import com.vpn.fastestvpnservice.customItems.ServerItem
 import com.vpn.fastestvpnservice.customItems.ServerSearchItem
@@ -100,14 +89,12 @@ import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddTextSettings
 import com.vpn.fastestvpnservice.sealedClass.Screen
 import com.vpn.fastestvpnservice.ui.theme.customTypography2
 import com.vpn.fastestvpnservice.utils.isTablet
-import com.vpn.fastestvpnservice.viewmodels.SearchListViewModel
 import com.vpn.fastestvpnservice.viewmodels.ServerListViewModel
-import com.vpn.fastestvpnservice.viewmodels.SplashViewModel
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 
 var isAlphabetList: MutableState<Boolean> = mutableStateOf(false)
-@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class)
+@OptIn(ExperimentalFoundationApi::class)
 @Composable
 fun ServerList(
     navHostController: NavHostController,
@@ -458,19 +445,10 @@ fun ColumnScope.ShowRecommendedList(
                     recommendedFilterList.sortBy {
                         it.server_name
                     }
-                    recommendedFilterList.forEachIndexed { index, server ->
-                        Log.d("test_filter_list", "if => ${server.server_name}")
-                    }
                 } else {
-//                    val recommended2 = serverListViewModelSplash.liveDataGetRecommendedServers.value
-//                    val recommended2 = prefHelper.getRecommendedList()
-                    val recommended2 = recommendedListFinalGlobal
-                    recommended2?.forEachIndexed { index, server ->
-                        Log.d("test_filter_list", "recommended2 => ${server.server_name}")
-                    }
-                    recommendedFilterList = recommended2 as ArrayList<Server>
-                    recommendedFilterList.forEachIndexed { index, server ->
-                        Log.d("test_filter_list", "else => ${server.server_name}")
+                    recommendedFilterList = recommended
+                    recommendedFilterList.sortByDescending {
+                        it.country_sort
                     }
                 }
             }
@@ -494,10 +472,7 @@ fun ColumnScope.ShowAllLocationsList(
     val pagerState = rememberPagerState(pageCount = {serverData.size})
     val selectedIndex by remember { derivedStateOf { pagerState.currentPage } }
     var selectedTabIndex by rememberSaveable { mutableStateOf(0) }
-    var indexTab = serverListViewModel.liveDataPagerIndex.observeAsState().value
     val scope = rememberCoroutineScope()
-    val data = basePreferenceHelper.getServerData()
-    val context = LocalContext.current
     var filterServersList: ArrayList<Server> = ArrayList<Server>()
 
     ScrollableTabRow(
@@ -585,7 +560,6 @@ fun ColumnScope.ShowAllLocationsList(
     }
 
 //    var isServersListExpanded by rememberSaveable { mutableStateOf(List(data.size) {true}) }
-    val isServersListExpanded by rememberSaveable { mutableStateOf(true) }
 
 //    filterServersList = if (
 //        data[selectedTabIndex].name?.lowercase().toString() == "servers") {
@@ -649,12 +623,21 @@ fun ColumnScope.ShowAllLocationsList(
                     } else {
                         if (countries != null) {
                             countriesFilter = countries
-                            countriesFilter.get(selectedTabIndex)?.servers?.sortByDescending {
-                                it.totalServers
+
+                            countriesFilter.get(selectedTabIndex)?.servers?.let {
+                                if (selectedTabIndex == 0) {
+                                    it.sortBy {server ->
+                                        server.country_sort
+                                    }
+                                } else {
+                                    it.sortByDescending {server ->
+                                        server.connection_count
+                                    }
+                                }
                             }
 
-                            groupServers?.sortByDescending {
-                                it?.totalServers
+                            groupServers?.sortBy {
+                                it?.country_sort
                             }
 
                             serverListViewModelSplash.mutableLiveDataGroupServers.value = groupServers
@@ -685,6 +668,7 @@ fun ColumnScope.ShowAllLocationsList(
         }
     }
 }
+
 @Composable
 fun ColumnScope.ShowHeaderItem(
     serverTitle: String,

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

@@ -2,38 +2,18 @@ package com.vpn.fastestvpnservice.screens
 
 import android.app.Activity
 import android.content.res.Configuration
-import android.graphics.fonts.Font
-import android.graphics.fonts.FontStyle
-import android.location.Location
-import android.provider.CalendarContract.Colors
-import android.text.Layout
-import android.util.Log
-import android.widget.Toast
 import androidx.compose.foundation.Image
-import androidx.compose.foundation.background
-import androidx.compose.foundation.isSystemInDarkTheme
-import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.systemBars
 import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.layout.windowInsetsPadding
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Lock
-import androidx.compose.material.icons.filled.ThumbUp
-import androidx.compose.material3.Icon
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.livedata.observeAsState
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.paint
@@ -42,26 +22,16 @@ import androidx.compose.ui.graphics.toArgb
 import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.LocalView
-import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.painterResource
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.text.style.LineHeightStyle
-import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.tooling.preview.Preview
-import androidx.compose.ui.tooling.preview.UiMode
 import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.sp
 import androidx.lifecycle.viewmodel.compose.viewModel
 import androidx.navigation.NavHostController
 import androidx.navigation.compose.rememberNavController
-import com.google.common.collect.ImmutableList
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.Server
-import com.vpn.fastestvpnservice.beans.ServerData
 import com.vpn.fastestvpnservice.beans.ServerDataGlobal
 import com.vpn.fastestvpnservice.beans.isDarkTheme
-import com.vpn.fastestvpnservice.beans.serversListTest
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import com.vpn.fastestvpnservice.sealedClass.Screen
 import com.vpn.fastestvpnservice.viewmodels.SearchListViewModel

+ 1 - 13
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/HomeScreen.kt

@@ -4,7 +4,6 @@ import android.app.Activity
 import android.content.Context
 import android.content.Intent
 import android.content.res.Configuration
-import androidx.compose.ui.graphics.Color
 import android.os.Handler
 import android.util.Log
 import androidx.activity.ComponentActivity
@@ -53,6 +52,7 @@ import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.alpha
 import androidx.compose.ui.draw.clip
 import androidx.compose.ui.draw.paint
+import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.ColorFilter
 import androidx.compose.ui.graphics.painter.Painter
 import androidx.compose.ui.graphics.toArgb
@@ -73,8 +73,6 @@ import androidx.compose.ui.unit.sp
 import androidx.compose.ui.window.DialogProperties
 import androidx.constraintlayout.compose.ConstraintLayout
 import androidx.constraintlayout.compose.Dimension
-import androidx.core.graphics.toColorInt
-import androidx.core.view.WindowCompat
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleEventObserver
 import androidx.lifecycle.LifecycleOwner
@@ -117,7 +115,6 @@ lateinit var navHostController1: NavHostController
 lateinit var homeViewModel1: HomeViewModel
 lateinit var vpnConnectionsUtil: VPNConnectionsUtil
 
-@OptIn(ExperimentalMaterial3Api::class)
  val onServer = object : ServerCallbacks {
 
      @Composable
@@ -237,10 +234,8 @@ val networkSpeed = object : NetworkSpeedCallback {
         StringUp.value = up
         Log.d("setNetworkSpeed", "Down: ${StringDown.value} Up: ${StringUp.value}")
     }
-
 }
 
-@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class)
 @Composable
 fun Home(
     navHostController: NavHostController,
@@ -1346,13 +1341,6 @@ fun HomePreview() {
 //    Home(rememberNavController())
 }
 
-@Preview(showSystemUi = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
-@Composable
-fun HomePreviewDark() {
-//    Home(rememberNavController())
-}
-
-
 // 1st box
 //        Box(
 //            modifier = Modifier

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

@@ -128,12 +128,12 @@ class ServerListViewModel(context: Context): ViewModel() {
                 Log.d("recommendedListGlobal F", "SS:: server = ${server.server_name} ${server.ping}")
             }
 
-            if (isAlphabetList.value) {
-                Log.d("test_filter_list", "inside flter: setRecommendedSmartServers")
-                recommendedListGlobal.sortBy {
-                    it.server_name
-                }
-            }
+//            if (isAlphabetList.value) {
+//                Log.d("test_filter_list", "inside flter: setRecommendedSmartServers")
+//                recommendedListGlobal.sortBy {
+//                    it.server_name
+//                }
+//            }
 
             Log.d("test_filter_list", "setRecommendedSmartServers")
             _mutableLiveDataGetRecommendedServers.value = recommendedListGlobal
@@ -367,24 +367,6 @@ class ServerListViewModel(context: Context): ViewModel() {
         return (data)
     }
 
-    fun filterServersAllCategoryPing(serverData: ArrayList<ServerData>) {
-
-        serverData.forEachIndexed { i, serverDataList ->
-            serverDataList.servers?.let {serverList ->
-                serverList.forEachIndexed { index, server ->
-                    calculatePing(server) {
-                        server.ping = it
-                        serverList.set(index, server)
-                    }
-                }
-            }
-        }
-
-        preferencesHelper.saveServerData(serverData)
-
-    }
-
-
     fun filterServersWithTvCountries(serverlist: ArrayList<Server>): ArrayList<Server> {
         serverlist.sortWith(Comparator { s1, s2 ->
             return@Comparator s1.country_sort.compareTo(s2.country_sort)
@@ -426,11 +408,19 @@ class ServerListViewModel(context: Context): ViewModel() {
             it.protocol.equals(preferencesHelper.getProtocol().title, ignoreCase = true)
         }
 
+        serverprotocol.forEachIndexed { index, server ->
+            Log.d("filter_streaming_s", "server: ${server.server_name} ${server.country_sort}")
+        }
+
         var distinctBy: List<Server>
         distinctBy = serverprotocol.distinctBy {
             it.server_name
         }
 
+        distinctBy.forEachIndexed { index, server ->
+            Log.d("filter_streaming_p", "server: ${server.server_name} ${server.country_sort}")
+        }
+
         serverprotocol.groupBy(Server::server_name).mapValues { entry ->
             for ((index, value) in distinctBy.withIndex()) {
                 if (entry.key == value.server_name) {
@@ -689,7 +679,7 @@ class ServerListViewModel(context: Context): ViewModel() {
             tempList2.add(server1)
         }
 
-        serversGroupListGlobal.add(index, ServerDataGlobal(server.country, tempList2, server.totalServers))
+        serversGroupListGlobal.add(index, ServerDataGlobal(server.country, tempList2, server.country_sort))
         serversGroupListGlobal.let {
             mutableLiveDataGroupServers.value = it
         }