Browse Source

remove servers api call on every server favorited, saving ping for all servers but this code deoesn't work as ping is getting 0

Khubaib 11 months ago
parent
commit
8eebf80b36

+ 1 - 14
.idea/deploymentTargetDropDown.xml

@@ -6,20 +6,7 @@
         <State />
         <State />
       </entry>
       </entry>
       <entry key="app">
       <entry key="app">
-        <State>
-          <runningDeviceTargetSelectedWithDropDown>
-            <Target>
-              <type value="RUNNING_DEVICE_TARGET" />
-              <deviceKey>
-                <Key>
-                  <type value="SERIAL_NUMBER" />
-                  <value value="1C051FDF60048Z" />
-                </Key>
-              </deviceKey>
-            </Target>
-          </runningDeviceTargetSelectedWithDropDown>
-          <timeTargetWasSelectedWithDropDown value="2024-03-20T09:52:00.878888415Z" />
-        </State>
+        <State />
       </entry>
       </entry>
     </value>
     </value>
   </component>
   </component>

+ 28 - 27
app/src/main/java/com/vpn/fastestvpnservice/customItems/CountryItem.kt

@@ -251,20 +251,20 @@ fun CountryItem(server: Server, category: String, navHostController: NavHostCont
                         /* Country Location's Row -> 1 Location() */
                         /* Country Location's Row -> 1 Location() */
 
 
 //                        var ping by remember { mutableIntStateOf(0) }
 //                        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 {
-                                        val ping = pingResult?.timeTaken?.toInt()!!
-                                        server.ping = ping
-                                        Log.d("test_ping", "ping = $ping")
-                                    }
-                                }
-
-                                override fun onError(e: Exception?) {}
-                                override fun onFinished(pingStats: PingStats?) {}
-                            }
-                        )
+//                        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()!!
+//                                        server.ping = ping
+//                                        Log.d("test_ping", "ping = $ping")
+//                                    }
+//                                }
+//
+//                                override fun onError(e: Exception?) {}
+//                                override fun onFinished(pingStats: PingStats?) {}
+//                            }
+//                        )
 
 
                         Row(
                         Row(
                             verticalAlignment = Alignment.Top,
                             verticalAlignment = Alignment.Top,
@@ -328,12 +328,12 @@ fun CountryItem(server: Server, category: String, navHostController: NavHostCont
                                 }
                                 }
                             )
                             )
                             {
                             {
-                                val favResponse = serverListViewModel.mutableLiveDataFavUnFav.observeAsState().value
-                                favResponse?.let {
-                                    Log.d("test_fav_response", it.message.toString())
-                                    splashViewModel.serverDataApi()
-                                    serverListViewModel.mutableLiveDataFavUnFav.value = null
-                                }
+//                                val favResponse = serverListViewModel.mutableLiveDataFavUnFav.observeAsState().value
+//                                favResponse?.let {
+//                                    Log.d("test_fav_response", it.message.toString())
+//                                    splashViewModel.serverDataApi()
+//                                    serverListViewModel.mutableLiveDataFavUnFav.value = null
+//                                }
 
 
                                 Icon(
                                 Icon(
 //                                    .clickable(
 //                                    .clickable(
@@ -403,9 +403,10 @@ fun ColumnScope.ExpandableRow(server: ArrayList<Server>, navHostController: NavH
 
 
         server.let { serverData ->
         server.let { serverData ->
                 serverData.forEachIndexed { index, serverInfo ->
                 serverData.forEachIndexed { index, serverInfo ->
+                    Log.d("serverInfo_ping", "serverInfo ${serverInfo.server_name} :: ${serverInfo.ping}")
 
 
                     if (isExpServerClicked) {
                     if (isExpServerClicked) {
-                        Log.d("ServerCallbacks", "isServerClicked $isExpServerClicked :: ${serverInfo.server_name}")
+//                        Log.d("ServerCallbacks", "isServerClicked $isExpServerClicked :: ${serverInfo.server_name}")
                         onServer.onServerSelected(
                         onServer.onServerSelected(
                             context,
                             context,
                             homeViewModel,
                             homeViewModel,
@@ -472,12 +473,12 @@ fun ColumnScope.ExpandableRow(server: ArrayList<Server>, navHostController: NavH
                         )
                         )
                         {
                         {
 
 
-                            val favResponse = serverListViewModel.mutableLiveDataFavUnFav.observeAsState().value
-                            favResponse?.let {
-                                Log.d("test_fav_response", it.message.toString())
-                                splashViewModel.serverDataApi()
-                                serverListViewModel.mutableLiveDataFavUnFav.value = null
-                            }
+//                            val favResponse = serverListViewModel.mutableLiveDataFavUnFav.observeAsState().value
+//                            favResponse?.let {
+//                                Log.d("test_fav_response", it.message.toString())
+//                                splashViewModel.serverDataApi()
+//                                serverListViewModel.mutableLiveDataFavUnFav.value = null
+//                            }
                             Icon(
                             Icon(
 //                                    .clickable(
 //                                    .clickable(
 //                                        indication = null,
 //                                        indication = null,

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

@@ -125,18 +125,18 @@ fun ServerItem(server: Server, navHostController: NavHostController) {
                 }
                 }
         ) {
         ) {
             var ping by remember { mutableIntStateOf(0) }
             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?) {}
-                }
-            )
+//            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?) {}
+//                }
+//            )
             val icon = if (server.enable == 1) Utils.getDrawable(context, server.iso)
             val icon = if (server.enable == 1) Utils.getDrawable(context, server.iso)
             else Utils.getDrawableGray(context, server.iso)
             else Utils.getDrawableGray(context, server.iso)
 
 
@@ -181,12 +181,12 @@ fun ServerItem(server: Server, navHostController: NavHostController) {
 //                    serverListViewModel.updateFavServer(server)
 //                    serverListViewModel.updateFavServer(server)
                 }
                 }
             ) {
             ) {
-                val favResponse = serverListViewModel.mutableLiveDataFavUnFav.observeAsState().value
-                favResponse?.let {
-                    Log.d("test_fav_response", it.message.toString())
-                    splashViewModel.serverDataApi()
-                    serverListViewModel.mutableLiveDataFavUnFav.value = null
-                }
+//                val favResponse = serverListViewModel.mutableLiveDataFavUnFav.observeAsState().value
+//                favResponse?.let {
+//                    Log.d("test_fav_response", it.message.toString())
+//                    splashViewModel.serverDataApi()
+//                    serverListViewModel.mutableLiveDataFavUnFav.value = null
+//                }
                 Icon(
                 Icon(
                     modifier = Modifier
                     modifier = Modifier
 //                        .padding(bottom = 18.dp, end = 8.dp)
 //                        .padding(bottom = 18.dp, end = 8.dp)
@@ -301,18 +301,18 @@ fun FavoriteServerItem(server: Server, navHostController: NavHostController) {
                 }
                 }
         ) {
         ) {
             var ping by remember { mutableIntStateOf(0) }
             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?) {}
-                }
-            )
+//            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?) {}
+//                }
+//            )
             val icon = if (server.enable == 1) Utils.getDrawable(context, server.iso)
             val icon = if (server.enable == 1) Utils.getDrawable(context, server.iso)
             else Utils.getDrawableGray(context, server.iso)
             else Utils.getDrawableGray(context, server.iso)
 
 
@@ -365,12 +365,12 @@ fun FavoriteServerItem(server: Server, navHostController: NavHostController) {
 //                    ) {  },
 //                    ) {  },
             ) {
             ) {
 
 
-                val favResponse = serverListViewModel.mutableLiveDataFavUnFav.observeAsState().value
-                favResponse?.let {
-                    Log.d("test_fav_response", it.message.toString())
-                    splashViewModel.serverDataApi()
-                    serverListViewModel.mutableLiveDataFavUnFav.value = null
-                }
+//                val favResponse = serverListViewModel.mutableLiveDataFavUnFav.observeAsState().value
+//                favResponse?.let {
+//                    Log.d("test_fav_response", it.message.toString())
+//                    splashViewModel.serverDataApi()
+//                    serverListViewModel.mutableLiveDataFavUnFav.value = null
+//                }
 
 
                 Icon(
                 Icon(
 
 
@@ -454,18 +454,18 @@ fun ServerSearchItem(server: Server, navHostController: NavHostController) {
                 }
                 }
         ) {
         ) {
             var ping by remember { mutableIntStateOf(0) }
             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?) {}
-                }
-            )
+//            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?) {}
+//                }
+//            )
             val icon = if (server.enable == 1) Utils.getDrawable(context, server.iso)
             val icon = if (server.enable == 1) Utils.getDrawable(context, server.iso)
             else Utils.getDrawableGray(context, server.iso)
             else Utils.getDrawableGray(context, server.iso)
 
 
@@ -510,18 +510,18 @@ fun ServerSearchItem(server: Server, navHostController: NavHostController) {
                 serverListViewModel.favAndUnFav(server)
                 serverListViewModel.favAndUnFav(server)
 //                        searchListViewModel.updateFavUnFavServerState(server)
 //                        searchListViewModel.updateFavUnFavServerState(server)
             }) {
             }) {
-                val favResponse = serverListViewModel.mutableLiveDataFavUnFav.observeAsState().value
-                favResponse?.let {
-//                    Log.d("test_fav_response", it.message.toString())
-                    splashViewModel.serverDataApi()
-                    serverListViewModel.mutableLiveDataFavUnFav.value = null
-                }
-
-                val serversApiResponse = splashViewModel.mutableLiveDataServerData.observeAsState().value
-                serversApiResponse?.let {
-                    serverListViewModel._mutableLiveDataGetFavList.value =
-                        serverListViewModel.getFavList()
-                }
+//                val favResponse = serverListViewModel.mutableLiveDataFavUnFav.observeAsState().value
+//                favResponse?.let {
+////                    Log.d("test_fav_response", it.message.toString())
+//                    splashViewModel.serverDataApi()
+//                    serverListViewModel.mutableLiveDataFavUnFav.value = null
+//                }
+
+//                val serversApiResponse = splashViewModel.mutableLiveDataServerData.observeAsState().value
+//                serversApiResponse?.let {
+//                    serverListViewModel._mutableLiveDataGetFavList.value =
+//                        serverListViewModel.getFavList()
+//                }
 
 
 
 
                 Icon(
                 Icon(

+ 93 - 72
app/src/main/java/com/vpn/fastestvpnservice/screens/ServerListScreen.kt

@@ -30,6 +30,7 @@ import androidx.compose.foundation.pager.HorizontalPager
 import androidx.compose.foundation.pager.rememberPagerState
 import androidx.compose.foundation.pager.rememberPagerState
 import androidx.compose.foundation.selection.selectable
 import androidx.compose.foundation.selection.selectable
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material.AppBarDefaults
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.automirrored.filled.ArrowBack
 import androidx.compose.material.icons.automirrored.filled.ArrowBack
 import androidx.compose.material3.ExperimentalMaterial3Api
 import androidx.compose.material3.ExperimentalMaterial3Api
@@ -71,11 +72,13 @@ import androidx.compose.runtime.livedata.observeAsState
 import androidx.compose.runtime.saveable.rememberSaveable
 import androidx.compose.runtime.saveable.rememberSaveable
 import androidx.compose.ui.draw.alpha
 import androidx.compose.ui.draw.alpha
 import androidx.compose.ui.draw.clip
 import androidx.compose.ui.draw.clip
+import androidx.compose.ui.draw.shadow
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.LocalFocusManager
 import androidx.compose.ui.platform.LocalFocusManager
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.zIndex
 import androidx.lifecycle.viewmodel.compose.viewModel
 import androidx.lifecycle.viewmodel.compose.viewModel
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.Server
 import com.vpn.fastestvpnservice.beans.Server
@@ -139,87 +142,103 @@ fun ServerList(
             }
             }
 
 
             // Tab Row [Recommended, All Locations]
             // Tab Row [Recommended, All Locations]
-            TabRow(
-                selectedTabIndex = selectedIndex,
-                containerColor = Color.White,
-                modifier = Modifier
-                    .fillMaxWidth()
-                    .padding(top = 16.dp)
-                    .background(Color.Transparent)
-                    .clip(RoundedCornerShape(28.dp))
-                    .height(68.dp)
-                   ,
-                indicator = {
+
+//            Surface(
+//                modifier = Modifier
+//                    .fillMaxWidth()
+//                    .padding(top = 16.dp)
+//                    .background(Color.Transparent)
+//                    .clip(RoundedCornerShape(28.dp))
+//                    .height(68.dp),
+//            ) {}
+
+                TabRow(
+                    selectedTabIndex = selectedIndex,
+                    containerColor = Color.White,
+                    modifier = Modifier
+                        .fillMaxWidth()
+                        .padding(top = 16.dp)
+                        .background(Color.Transparent)
+                        .clip(RoundedCornerShape(28.dp))
+                        .height(68.dp)
+//                        .shadow(
+//                            elevation = AppBarDefaults.TopAppBarElevation,
+//                            shape = MaterialTheme.shapes.small,
+//                            clip = true
+//                        )
+                    ,
+                    indicator = {
 //                    TabRowDefaults.Indicator()
 //                    TabRowDefaults.Indicator()
-                },
-                divider = {}
-            ) {
-                serverTabItems.forEachIndexed { index, currentTab ->
+                    },
+                    divider = {}
+                ) {
+                    serverTabItems.forEachIndexed { index, currentTab ->
 
 
-                    val color = remember { Animatable(Color.White) }
+                        val color = remember { Animatable(Color.White) }
 
 
-                    LaunchedEffect(key1 = selectedIndex == index) {
-                        color.animateTo(
-                            if (selectedIndex == index) Color(0xFFE9EDF9)
-                            else Color.White
-                        )
-                    }
+                        LaunchedEffect(key1 = selectedIndex == index) {
+                            color.animateTo(
+                                if (selectedIndex == index) Color(0xFFE9EDF9)
+                                else Color.White
+                            )
+                        }
 
 
-                    Tab(
-                        selected = selectedIndex == index,
-                        onClick = {
-                            scope.launch {
-                                pagerState.animateScrollToPage(index)
-                            }
-                        },
-                        selectedContentColor = Color.White,
-                        unselectedContentColor = Color.White,
-                        text = { Text(text = currentTab,
-                            style = MaterialTheme.typography.headlineMedium,
-                            color = colorResource(id = R.color.dark_blue_gray_text),
+                        Tab(
+                            selected = selectedIndex == index,
+                            onClick = {
+                                scope.launch {
+                                    pagerState.animateScrollToPage(index)
+                                }
+                            },
+                            selectedContentColor = Color.White,
+                            unselectedContentColor = Color.White,
+                            text = { Text(text = currentTab,
+                                style = MaterialTheme.typography.headlineMedium,
+                                color = colorResource(id = R.color.dark_blue_gray_text),
                             ) },
                             ) },
-                        modifier = Modifier
-                            .padding(
-                                start = 10.dp, end = 10.dp,
-                                top = 10.dp, bottom = 10.dp
-                            )
-                            .background(
-                                color = color.value,
-                                shape = RoundedCornerShape(20.dp)
-                            )
+                            modifier = Modifier
+                                .padding(
+                                    start = 10.dp, end = 10.dp,
+                                    top = 10.dp, bottom = 10.dp
+                                )
+                                .background(
+                                    color = color.value,
+                                    shape = RoundedCornerShape(20.dp)
+                                )
 
 
-                    )
+                        )
+                    }
                 }
                 }
-            }
 
 
-                HorizontalPager(
-                    state = pagerState,
-                    modifier = Modifier
-                        .padding(top = 14.dp)
-                        .fillMaxWidth()
-                        .background(Color.Transparent),
-                    userScrollEnabled = false
-                ) { page ->
-                    CompositionLocalProvider(
-                        LocalOverscrollConfiguration provides null
+
+            HorizontalPager(
+                state = pagerState,
+                modifier = Modifier
+                    .padding(top = 14.dp)
+                    .fillMaxWidth()
+                    .background(Color.Transparent),
+                userScrollEnabled = false
+            ) { page ->
+                CompositionLocalProvider(
+                    LocalOverscrollConfiguration provides null
+                ) {
+                    Column(
+                        modifier = Modifier
+                            .fillMaxSize()
+                            .padding(top = 0.dp, bottom = 10.dp)
                     ) {
                     ) {
-                        Column(
-                            modifier = Modifier
-                                .fillMaxSize()
-                                .padding(top = 0.dp, bottom = 10.dp)
-                        ) {
-                            if (page == 0) {
-                                ShowRecommendedList(serverListViewModel, basePreferenceHelper, navHostController)
-                            }
-                            else if (page == 1) {
-                                ShowAllLocationsList(serverListViewModel, basePreferenceHelper, navHostController)
-                            }
+                        if (page == 0) {
+                            ShowRecommendedList(serverListViewModel, basePreferenceHelper, navHostController)
+                        }
+                        else if (page == 1) {
+                            ShowAllLocationsList(serverListViewModel, basePreferenceHelper, navHostController)
                         }
                         }
                     }
                     }
+                }
 
 
 
 
 
 
-                }
+            }
         }
         }
     }
     }
 }
 }
@@ -643,7 +662,8 @@ fun ColumnScope.ShowAllLocationsList(
                         LocalOverscrollConfiguration provides null
                         LocalOverscrollConfiguration provides null
                     ) {
                     ) {
                         Log.d("test_compose_servers", "serverTabPager = $serverTabPager")
                         Log.d("test_compose_servers", "serverTabPager = $serverTabPager")
-                        filterServersList = if (data[serverTabPager].name?.lowercase().toString() == "servers") {
+                        filterServersList = if (
+                            data[serverTabPager].name?.lowercase().toString() == "servers") {
                             data.get(serverTabPager).servers?.let {
                             data.get(serverTabPager).servers?.let {
                                 serverListViewModel.filterServersByISO(
                                 serverListViewModel.filterServersByISO(
                                     it, isAlphabetList.value
                                     it, isAlphabetList.value
@@ -665,10 +685,11 @@ fun ColumnScope.ShowAllLocationsList(
                         LazyColumn() {
                         LazyColumn() {
 //                            Log.d("test_servers_size","size " + filterServersList?.size.toString())
 //                            Log.d("test_servers_size","size " + filterServersList?.size.toString())
                             items(items = filterServersList) { country ->
                             items(items = filterServersList) { country ->
-                                calculatePing(country) {
-                                    country.ping = it
-                                }
-                                CountryItem(server = country, data[serverTabPager].name!!, navHostController )
+//                                calculatePing(country) {
+//                                    country.ping = it
+//                                }
+                                CountryItem(server = country, data[serverTabPager].name!!,
+                                    navHostController )
                             }
                             }
                         }
                         }
                     }
                     }

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

@@ -47,8 +47,10 @@ import androidx.lifecycle.viewmodel.compose.viewModel
 import androidx.navigation.NavHostController
 import androidx.navigation.NavHostController
 import androidx.navigation.compose.rememberNavController
 import androidx.navigation.compose.rememberNavController
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.R
+import com.vpn.fastestvpnservice.beans.Server
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import com.vpn.fastestvpnservice.sealedClass.Screen
 import com.vpn.fastestvpnservice.sealedClass.Screen
+import com.vpn.fastestvpnservice.viewmodels.ServerListViewModel
 import com.vpn.fastestvpnservice.viewmodels.SplashViewModel
 import com.vpn.fastestvpnservice.viewmodels.SplashViewModel
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.delay
 
 
@@ -60,6 +62,7 @@ fun Splash(navHostController: NavHostController) {
         SplashViewModel(context)
         SplashViewModel(context)
     }
     }
 
 
+
     Box(modifier = Modifier
     Box(modifier = Modifier
         .paint(
         .paint(
             painter = painterResource(id = R.drawable.bg_img3),
             painter = painterResource(id = R.drawable.bg_img3),
@@ -101,12 +104,30 @@ fun Splash(navHostController: NavHostController) {
 
 
     val isLoggedIn = basePreferenceHelper.getLoggedInState()
     val isLoggedIn = basePreferenceHelper.getLoggedInState()
 
 
+    if (isLoggedIn) {
+        val serverListViewModel: ServerListViewModel = viewModel {
+            ServerListViewModel(context = context)
+        }
+
+//        val allServers: ArrayList<Server> = ArrayList<Server>()
+//        basePreferenceHelper.getServerData().let {
+//            it.forEachIndexed { index, serverData ->
+//                serverData.servers?.forEachIndexed { indexes, server ->
+//                    allServers.add(indexes, server)
+//                }
+//            }
+//        }
+
+        val serverData = basePreferenceHelper.getServerData()
+
+        serverListViewModel.filterServersAllCategoryPing(serverData)
+    }
+
     LaunchedEffect(key1 = true) {
     LaunchedEffect(key1 = true) {
         splashViewModel.serverDataApi()
         splashViewModel.serverDataApi()
         delay(3000)
         delay(3000)
 
 
         if (isLoggedIn) {
         if (isLoggedIn) {
-//            Toast.makeText(context, "if $isLoggedIn", Toast.LENGTH_SHORT).show()
             navHostController.popBackStack()
             navHostController.popBackStack()
             navHostController.navigate(Screen.BottomBarMainScreen.route)
             navHostController.navigate(Screen.BottomBarMainScreen.route)
         } else {
         } else {

+ 27 - 4
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/ServerListViewModel.kt

@@ -40,7 +40,7 @@ class ServerListViewModel(context: Context): ViewModel() {
     var _mutableLiveDataPagerIndex = MutableLiveData<Int>(0)
     var _mutableLiveDataPagerIndex = MutableLiveData<Int>(0)
     var liveDataPagerIndex: LiveData<Int> = _mutableLiveDataPagerIndex
     var liveDataPagerIndex: LiveData<Int> = _mutableLiveDataPagerIndex
 
 
-    var _mutableLiveDataGetFavList = MutableLiveData<ArrayList<Server>>(getFavList(isAlphabetList.value))
+    var _mutableLiveDataGetFavList = MutableLiveData<ArrayList<Server>>(getFavList())
     var liveDataGetFavList: LiveData<ArrayList<Server>> = _mutableLiveDataGetFavList
     var liveDataGetFavList: LiveData<ArrayList<Server>> = _mutableLiveDataGetFavList
 
 
     var _mutableLiveDataGetServers = MutableLiveData<ArrayList<Server>>()
     var _mutableLiveDataGetServers = MutableLiveData<ArrayList<Server>>()
@@ -150,9 +150,12 @@ class ServerListViewModel(context: Context): ViewModel() {
             }
             }
         }
         }
 
 
-        distinctBy.forEachIndexed { index, server ->
-            Log.d("serverlist_test_d2", server.server_name + " , " + server.country + " , " + server.totalServers)
-        }
+//        distinctBy.forEachIndexed { index, server ->
+//            calculatePing(server) {
+//                server.ping = it
+//            }
+//            Log.d("serverlist_test_d2", server.server_name + " , " + server.country + " , " + server.totalServers)
+//        }
 
 
         return (filterListCountries)
         return (filterListCountries)
     }
     }
@@ -258,6 +261,26 @@ class ServerListViewModel(context: Context): ViewModel() {
         return (data)
         return (data)
     }
     }
 
 
+    fun filterServersAllCategoryPing(serverData: ArrayList<ServerData>) {
+
+        serverData.forEachIndexed { i, serverDataList ->
+            serverDataList.servers?.let {serverList ->
+                serverList.forEachIndexed { index, server ->
+                    calculatePing(server) {
+                        Log.d("test_ping_servers", "${server.server_name} $it")
+                        server.ping = it
+                        Log.d("test_ping_data", "${server.server_name} ${server.ping}")
+                        serverList.set(index, server)
+                    }
+                }
+            }
+        }
+
+        preferencesHelper.saveServerData(serverData)
+
+    }
+
+
     fun filterServersWithTvCountries(serverlist: ArrayList<Server>): ArrayList<Server> {
     fun filterServersWithTvCountries(serverlist: ArrayList<Server>): ArrayList<Server> {
         serverlist.sortWith(Comparator { s1, s2 ->
         serverlist.sortWith(Comparator { s1, s2 ->
             return@Comparator s1.country_sort.compareTo(s2.country_sort)
             return@Comparator s1.country_sort.compareTo(s2.country_sort)

+ 1 - 0
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/SplashViewModel.kt

@@ -21,6 +21,7 @@ class SplashViewModel constructor(context: Context): ViewModel() {
         preferenceHelper = BasePreferenceHelper(context)
         preferenceHelper = BasePreferenceHelper(context)
     }
     }
     fun serverDataApi() {
     fun serverDataApi() {
+        Log.d("test_api_response_s", "serverDataApi called()")
         WebServiceFactory.getInstance().serverDataApi().enqueue(
         WebServiceFactory.getInstance().serverDataApi().enqueue(
             RetrofitNetworkHandling<Any>(object :
             RetrofitNetworkHandling<Any>(object :
                 RetrofitNetworkHandling.ResponseCallback<Any> {
                 RetrofitNetworkHandling.ResponseCallback<Any> {