Sfoglia il codice sorgente

Implemented server api on TV and get response on settings screen then set country data and recommended server on shared prefs

Khubaib 11 mesi fa
parent
commit
afb2c0b656

+ 2 - 2
.idea/deploymentTargetSelector.xml

@@ -4,10 +4,10 @@
     <selectionStates>
       <SelectionState runConfigName="app">
         <option name="selectionMode" value="DROPDOWN" />
-        <DropdownSelection timestamp="2024-09-11T11:33:27.739232601Z">
+        <DropdownSelection timestamp="2024-09-12T09:58:09.025375703Z">
           <Target type="DEFAULT_BOOT">
             <handle>
-              <DeviceId pluginId="PhysicalDevice" identifier="serial=1C051FDF60048Z" />
+              <DeviceId pluginId="LocalEmulator" identifier="path=/home/ubuntu/.android/avd/Television_1080p_API_31.avd" />
             </handle>
           </Target>
         </DropdownSelection>

BIN
app/release/app-release.apk


+ 8 - 3
app/src/main/java/com/vpn/fastestvpnservice/screensTV/HomeScreenTV.kt

@@ -360,30 +360,35 @@ fun HomeTV(
         isHomeScreenPressed.value = false
     }
 
-    var isLaunched by rememberSaveable { mutableStateOf(true) }
+    var isLaunched by remember { mutableStateOf(true) }
 
     if (isLaunched) {
-        Log.d("test_launch","liveDataGetServersGlobal")
-        val countries = serverListViewModelSplash.liveDataGetServersGlobal.value
+        Log.d("test_lingual_splash", "isLaunched - true")
+        val countries = serverListViewModelSplash.liveDataGetServersGlobal.observeAsState().value
         countries?.forEachIndexed { index, serverData ->
             Log.d("test_serverlist_tv","$index ${serverData?.name} ${serverData?.servers?.size}")
             if (serverData?.name?.equals("Servers") == true) {
+                Log.d("test_serverlist_tv","$index ${serverData?.name}")
                 serverData.servers?.let { locations = it }
                 if (locations.size > 0) isLocationsEnabled.value = true
             }
             else if (serverData?.name?.equals("Dedicated IP") == true) {
+                Log.d("test_serverlist_tv","$index ${serverData?.name}")
                 serverData.servers?.let { dedicatedIP = it }
                 if (dedicatedIP.size > 0) isDedicatedIpEnabled.value = true
             }
             else if (serverData?.name?.equals("Streaming") == true) {
+                Log.d("test_serverlist_tv","$index ${serverData?.name}")
                 serverData.servers?.let { streaming = it }
                 if (streaming.size > 0) isStreamingEnabled.value = true
             }
             else if (serverData?.name?.equals("D-VPN") == true) {
+                Log.d("test_serverlist_tv","$index ${serverData?.name}")
                 serverData.servers?.let { dvpn = it }
                 if (dvpn.size > 0) isDvpnEnabled.value = true
             }
             else if (serverData?.name?.equals("P2P") == true) {
+                Log.d("test_serverlist_tv","$index ${serverData?.name}")
                 serverData.servers?.let { p2p = it }
                 if (p2p.size > 0) isP2pEnabled.value = true
             }

+ 63 - 2
app/src/main/java/com/vpn/fastestvpnservice/screensTV/SettingsScreenTV.kt

@@ -4,6 +4,7 @@ import android.app.Activity
 import android.app.LocaleManager
 import android.content.Context
 import android.content.Intent
+import android.location.Location
 import android.os.Build
 import android.os.Bundle
 import android.os.Handler
@@ -96,6 +97,7 @@ import androidx.navigation.NavHostController
 import androidx.navigation.compose.currentBackStackEntryAsState
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.Protocol
+import com.vpn.fastestvpnservice.beans.Server
 import com.vpn.fastestvpnservice.beans.isDarkTheme
 import com.vpn.fastestvpnservice.beans.languages
 import com.vpn.fastestvpnservice.beans.themesList
@@ -141,6 +143,7 @@ fun SettingsTV(navHostController: NavHostController) {
     }
     val vpnConnectionsUtil = VPNConnectionsUtil(context, activityGlobal, homeViewModel)
     var settingsString by remember { mutableStateOf(context.getString(R.string.settings)) }
+    val basePreferenceHelper = BasePreferenceHelper(context)
 
     if (isSettingsScreenPressed.value) {
         LaunchedEffect(Unit) {
@@ -263,6 +266,64 @@ fun SettingsTV(navHostController: NavHostController) {
                 ) {
                     settingsString = it
                 }
+
+                val serversResponse = splashViewModelSplash.liveDataServerData.observeAsState().value
+                serversResponse?.let { data ->
+                    Log.d("test_lingual_splash", "serversResponse - in")
+                    if (data.status) {
+                        Log.d("test_lingual_splash", "serversResponse - true")
+                        serverListViewModelSplash.setCountryDataTV()
+                        val smartLocationList: MutableList<Server> = ArrayList<Server>()
+                        basePreferenceHelper.getServerData().get(0).servers?.let {
+                            val serverDataLocation = it
+
+                            val distinctdatanotnull =
+                                serverDataLocation.filter {   // servers's lt and lt not be null
+                                    it.lt != null && it.lg != null
+                                }
+
+                            val distinctdata =
+                                distinctdatanotnull.distinctBy { // servers's lt filter, no same lt of a server
+                                    it.lt
+                                }
+
+                            val result = FloatArray(1)
+                            val ipinfo = basePreferenceHelper.getIpinfo()
+
+                            distinctdata.forEachIndexed { index, server ->
+                                val lat1 = ipinfo?.latitute
+                                val lon1 = ipinfo?.longitude
+                                val lat2 = server.lt
+                                val lon2 = server.lg
+
+                                if (lat1 != null && lat2 != null && lon1 != null && lon2 != null) {
+                                    Location.distanceBetween(lat1, lon1, lat2, lon2, result)
+                                }
+
+                                val distance: Float = result[0]
+                                distinctdata.get(index).distance = distance
+
+                            }
+
+                            val sortedDistance = distinctdata.sortedBy {
+                                it.distance
+                            }
+
+                            if (sortedDistance.isNotEmpty()) {
+                                for (i in 0..0) {
+                                    smartLocationList.add(sortedDistance.get(i))
+                                }
+                            }
+
+                            smartLocationList.forEach {
+//                            prefHelper.setSmartServerObject(it)
+                                basePreferenceHelper.setRecommendedServerObject(it)
+                                Log.d("test_lingual_splash", "L:: server = ${it.server_name}")
+                            }
+                        }
+                    }
+                    splashViewModelSplash.mutableLiveDataServerData.value = null
+                }
             }
         }
     }
@@ -1568,7 +1629,7 @@ fun AddLanguageTV(
                                         }
 
                                         splashViewModelSplash.serverDataApi()
-                                        isLanguageSheetOpen = false
+//                                        isLanguageSheetOpen = false
                                     },
                                 )
 //                                    .indication(
@@ -1608,7 +1669,7 @@ fun AddLanguageTV(
                                     }
 
                                     splashViewModelSplash.serverDataApi()
-                                    isLanguageSheetOpen = false
+//                                    isLanguageSheetOpen = false
                                 },
                                 colors = RadioButtonDefaults.colors(
                                     selectedColor = colorResource(id = R.color.radio_button_blue),

+ 2 - 0
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/ServerListViewModel.kt

@@ -261,6 +261,8 @@ class ServerListViewModel(context: Context): ViewModel() {
             serverDataGlobal?.servers?.let { serversListAllGlobal.addAll(it) }
         }
 
+        Log.d("test_lingual_splash", "serversListGlobalTV - ${serversListGlobalTV.size}")
+
         _mutableLiveDataGetServersGlobal.value = serversListGlobalTV
         mutableLiveDataAllServers.value = serversListAllGlobal
     }