Просмотр исходного кода

MutableList of server using on serverlist TV and using LaunchedEffect, when list ready it displayed after some sec delay

Khubaib 9 месяцев назад
Родитель
Сommit
8653c28dd2

+ 38 - 29
app/src/main/java/com/vpn/fastestvpnservice/screensTV/ServerListScreenTV.kt

@@ -1,6 +1,7 @@
 package com.vpn.fastestvpnservice.screensTV
 
 import android.util.Log
+import android.widget.Toast
 import androidx.compose.foundation.background
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.focusable
@@ -59,11 +60,18 @@ fun ServerListTV(navHostController: NavHostController) {
     ) {
         HeaderRowSL(navHostController = navHostController)
 
-        var locations = ArrayList<Server>()
-        var dedicatedIP = ArrayList<Server>()
-        var streaming = ArrayList<Server>()
-        var dvpn = ArrayList<Server>()
-        var p2p = ArrayList<Server>()
+//        var locations = ArrayList<Server>()
+//        var dedicatedIP = ArrayList<Server>()
+//        var streaming = ArrayList<Server>()
+//        var dvpn = ArrayList<Server>()
+//        var p2p = ArrayList<Server>()
+
+        var locations by remember { mutableStateOf(ArrayList<Server>()) }
+        var dedicatedIP by remember { mutableStateOf(ArrayList<Server>()) }
+        var streaming by remember { mutableStateOf(ArrayList<Server>()) }
+        var dvpn by remember { mutableStateOf(ArrayList<Server>()) }
+        var p2p by remember { mutableStateOf(ArrayList<Server>()) }
+
 
         var isLocationsEnabled by remember { mutableStateOf(false) }
         var isDedicatedIpEnabled by remember { mutableStateOf(false) }
@@ -71,29 +79,30 @@ fun ServerListTV(navHostController: NavHostController) {
         var isDvpnEnabled by remember { mutableStateOf(false) }
         var isP2pEnabled by remember { mutableStateOf(false) }
 
-
-        val countries = serverListViewModelSplash.liveDataGetServersGlobal.value
-        countries?.forEachIndexed { index, serverData ->
-            Log.d("test_serverlist_tv","$index ${serverData?.name} ${serverData?.servers?.size}")
-            if (serverData?.name?.equals("Servers") == true) {
-                serverData.servers?.let { locations = it }
-                if (locations.size > 0) isLocationsEnabled = true
-            }
-            else if (serverData?.name?.equals("Dedicated IP") == true) {
-                serverData.servers?.let { dedicatedIP = it }
-                if (dedicatedIP.size > 0) isDedicatedIpEnabled = true
-            }
-            else if (serverData?.name?.equals("Streaming") == true) {
-                serverData.servers?.let { streaming = it }
-                if (streaming.size > 0) isStreamingEnabled = true
-            }
-            else if (serverData?.name?.equals("D-VPN") == true) {
-                serverData.servers?.let { dvpn = it }
-                if (dvpn.size > 0) isDvpnEnabled = true
-            }
-            else if (serverData?.name?.equals("P2P") == true) {
-                serverData.servers?.let { p2p = it }
-                if (p2p.size > 0) isP2pEnabled = true
+        LaunchedEffect(key1 = Unit) {
+            val countries = serverListViewModelSplash.liveDataGetServersGlobal.value
+            countries?.forEachIndexed { index, serverData ->
+                Log.d("test_serverlist_tv","$index ${serverData?.name} ${serverData?.servers?.size}")
+                if (serverData?.name?.equals("Servers") == true) {
+                    serverData.servers?.let { locations = it }
+                    if (locations.size > 0) isLocationsEnabled = true
+                }
+                else if (serverData?.name?.equals("Dedicated IP") == true) {
+                    serverData.servers?.let { dedicatedIP = it }
+                    if (dedicatedIP.size > 0) isDedicatedIpEnabled = true
+                }
+                else if (serverData?.name?.equals("Streaming") == true) {
+                    serverData.servers?.let { streaming = it }
+                    if (streaming.size > 0) isStreamingEnabled = true
+                }
+                else if (serverData?.name?.equals("D-VPN") == true) {
+                    serverData.servers?.let { dvpn = it }
+                    if (dvpn.size > 0) isDvpnEnabled = true
+                }
+                else if (serverData?.name?.equals("P2P") == true) {
+                    serverData.servers?.let { p2p = it }
+                    if (p2p.size > 0) isP2pEnabled = true
+                }
             }
         }
 
@@ -109,7 +118,7 @@ fun ServerListTV(navHostController: NavHostController) {
 
             if (isLocationsEnabled) {
                 Text(
-                    text = "Top Locations",
+                    text = "Top Locations ${locations.size}",
                     style = MaterialTheme.typography.labelLarge,
                     color = colorResource(id = R.color.dark_blue_gray_text),
                     modifier = Modifier