Kaynağa Gözat

optimized fav server logic on all ServerItems... whole app()

Khubaib 1 yıl önce
ebeveyn
işleme
18f80bb1ea

+ 8 - 34
app/src/main/java/com/vpn/fastestvpnservice/customItems/CountryItem.kt

@@ -337,18 +337,10 @@ fun ColumnScope.ExpandableRow(server: ArrayList<Server>, navHostController: NavH
     val serverListViewModel: ServerListViewModel = viewModel{
         ServerListViewModel(context)
     }
-    val splashViewModel: SplashViewModel = viewModel{
-        SplashViewModel(context)
-    }
-
+    val splashViewModel: SplashViewModel = viewModel{ SplashViewModel(context) }
     val scope = rememberCoroutineScope()
-    val homeViewModel: HomeViewModel = viewModel {
-        HomeViewModel(context, scope)
-    }
-    var isExpServerClicked by remember {
-        mutableStateOf(false)
-    }
-
+    val homeViewModel: HomeViewModel = viewModel { HomeViewModel(context, scope) }
+    var isExpServerClicked by remember { mutableStateOf(false) }
 
     Column(
         modifier = Modifier
@@ -359,17 +351,16 @@ fun ColumnScope.ExpandableRow(server: ArrayList<Server>, navHostController: NavH
             .background(Color.Transparent)
     ) {
 
-//        var ping: Int = 0
-
-
         // Expandable Row
-
         server.let { serverData ->
                 serverData.forEachIndexed { index, serverInfo ->
                     Log.d("serverInfo_ping", "serverInfo ${serverInfo.server_name} :: ${serverInfo.ping}")
 
+                    var isFavorite by rememberSaveable { mutableStateOf(serverInfo.isFavourited) }
+                    val isServerFavourited: Boolean = serverInfo.isFavourited == true
+                    Log.d("test-server_fav_d", "$isFavorite")
+
                     if (isExpServerClicked) {
-//                        Log.d("ServerCallbacks", "isServerClicked $isExpServerClicked :: ${serverInfo.server_name}")
                         onServer.onServerSelected(
                             context,
                             homeViewModel,
@@ -393,9 +384,6 @@ fun ColumnScope.ExpandableRow(server: ArrayList<Server>, navHostController: NavH
                                 indication = null,
                                 interactionSource = remember { MutableInteractionSource() }
                             ) {
-//                                Toast.makeText(
-//                                    context, serverInfo.server_name, Toast.LENGTH_SHORT
-//                                ).show()
                                 basePreferenceHelper.setServerObject(serverInfo)
                                 isExpServerClicked = true
 //                                navHostController.popBackStack()
@@ -411,8 +399,6 @@ fun ColumnScope.ExpandableRow(server: ArrayList<Server>, navHostController: NavH
                         )
                         Spacer(modifier = Modifier.weight(1F))
 
-//                        serverListViewModel.calculatePing(server)
-
                         Text(text = "${serverInfo.ping} ms",
                             style = MaterialTheme.typography.displayMedium,
                             color = colorResource(id = R.color.blue_text),
@@ -420,9 +406,6 @@ fun ColumnScope.ExpandableRow(server: ArrayList<Server>, navHostController: NavH
                                 .padding(start = 0.dp, end = 30.dp)
                                 .align(Alignment.CenterVertically)
                         )
-                        var isFavorite by rememberSaveable {
-                            mutableStateOf(serverInfo.isFavourited)
-                        }
 
                         IconButton(
                             modifier = Modifier
@@ -435,23 +418,14 @@ 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
-//                            }
                             Icon(
 //                                    .clickable(
 //                                        indication = null,
 //                                        interactionSource = remember { MutableInteractionSource() }
 //                                    ) {  },
-
-                                painter = if (isFavorite == true) painterResource(
+                                painter = if (isServerFavourited) painterResource(
                                     id = R.drawable.fav_server3x) else painterResource(
                                     id = R.drawable.unfav_server3x),
-
                                 contentDescription = "Server Logo",
                                 tint = Color.Unspecified,
                             )

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

@@ -81,7 +81,6 @@ fun ServerItem(server: Server, navHostController: NavHostController) {
     val basePreferenceHelper = BasePreferenceHelper(context)
 
     var isFavorite by remember { mutableStateOf(server.isFavourited) }
-
     val isServerFavourited: Boolean = server.isFavourited == true
     Log.d("test-server_fav_d", "$isFavorite")
 
@@ -218,9 +217,12 @@ fun FavoriteServerItem(server: Server, navHostController: NavHostController) {
     val homeViewModel: HomeViewModel = viewModel {
         HomeViewModel(context, scope)
     }
-    var isFavServerClicked by remember {
-        mutableStateOf(false)
-    }
+
+    var isFavorite by remember { mutableStateOf(server.isFavourited) }
+    val isServerFavourited: Boolean = server.isFavourited == true
+    Log.d("test-server_fav_d", "$isFavorite")
+
+    var isFavServerClicked by remember { mutableStateOf(false) }
 
     if (isFavServerClicked) {
         Log.d("ServerCallbacks", "isServerClicked $isFavServerClicked")
@@ -310,7 +312,6 @@ fun FavoriteServerItem(server: Server, navHostController: NavHostController) {
                     .align(Alignment.CenterVertically)
             )
 //            Spacer(modifier = Modifier.weight(1F))
-            var isFavorite by rememberSaveable { mutableStateOf(server.isFavourited) }
 
 
 
@@ -337,7 +338,7 @@ fun FavoriteServerItem(server: Server, navHostController: NavHostController) {
 
                 Icon(
 
-                    painter = if (isFavorite == true) painterResource(
+                    painter = if (isServerFavourited) painterResource(
                         id = R.drawable.fav_server3x) else painterResource(
                         id = R.drawable.unfav_server3x),
 
@@ -389,6 +390,10 @@ fun ServerSearchItem(
         mutableStateOf(false)
     }
 
+    var isFavorite by remember { mutableStateOf(server.isFavourited) }
+    val isServerFavourited: Boolean = server.isFavourited == true
+    Log.d("test-server_fav_d", "$isFavorite")
+
     if (isSearchServerClicked) {
         Log.d("ServerCallbacks", "isServerClicked $isSearchServerClicked")
         onServer.onServerSelected(
@@ -407,7 +412,6 @@ fun ServerSearchItem(
             .background(color = bgColor)
             .padding(bottom = 1.dp)
     ) {
-
         Row(
             verticalAlignment = Alignment.Top,
             horizontalArrangement = Arrangement.Start,
@@ -470,59 +474,23 @@ fun ServerSearchItem(
                     .padding(end = 30.dp, bottom = 18.dp)
                     .align(Alignment.CenterVertically)
             )
-//            Spacer(modifier = Modifier.weight(1F))
-            var isFavorite by rememberSaveable { mutableStateOf(server.isFavourited) }
 
             IconButton(
                 modifier = Modifier
                     .padding(bottom = 18.dp, end = 8.dp)
-                    .size(22.dp, 21.dp)
-                ,
+                    .size(22.dp, 21.dp),
                 onClick = {
                 isFavorite = !isFavorite!!
                 serverListViewModel.favAndUnFav(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()
-//                }
-
-
                 Icon(
-                    painter = if (isFavorite == true) painterResource(
+                    painter = if (isServerFavourited) painterResource(
                         id = R.drawable.fav_server3x) else painterResource(
                         id = R.drawable.unfav_server3x),
-
                     contentDescription = "Server Logo",
                     tint = Color.Unspecified,
                 )
             }
-
-
-
-//            IconButton(
-//                onClick = { isFavorite = !isFavorite },
-//                modifier = Modifier
-//                    .clickable(
-//                        indication = null,
-//                        interactionSource = remember { MutableInteractionSource() },
-//                        ) {
-//                        isFavorite = !isFavorite
-//                    }
-//            ) {
-//
-//
-//            }
-
         }
 
         Surface(
@@ -531,8 +499,7 @@ fun ServerSearchItem(
                 .height(1.dp)
                 .fillMaxWidth()
                 .alpha(0.6F)
-                .align(Alignment.BottomCenter)
-            ,
+                .align(Alignment.BottomCenter),
             color = colorResource(id = R.color.gray_icon)
         ) {}
     }