Parcourir la source

Showing all servers list even Splash API not working, handled on splash screen also

Khubaib il y a 4 mois
Parent
commit
064d7e8849

+ 39 - 37
app/src/main/AndroidManifest.xml

@@ -14,16 +14,18 @@
 
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
-    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
-    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
-    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
     <uses-permission android:name="com.android.vending.BILLING" />
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
-    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
-    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
+
+<!--    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />-->
+<!--    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />-->
+<!--    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />-->
+<!--    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />-->
+<!--    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />-->
+<!--    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />-->
+
     <uses-permission android:name="android.webkit.PermissionRequest" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
@@ -204,37 +206,37 @@
                 android:value="true" />
         </service>
 
-        <receiver
-            android:name=".utils.WifiScanReceiver"
-            android:enabled="true"
-            android:exported="true"
-            android:permission="android.permission.BIND_VPN_SERVICE"
-            >
-            <intent-filter>
-                <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
-                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
-                <action android:name="android.net.wifi.STATE_CHANGE" />
-                <action android:name="android.net.wifi.SCAN_RESULTS" />
-                <action android:name="android.net.wifi.supplicant.CONNECTION_CHANGE" />
-            </intent-filter>
-        </receiver>
-
-        <service
-            android:name=".fcm.WiFiMonitorService"
-            android:enabled="true"
-            android:exported="true"
-            android:foregroundServiceType="specialUse" />
-
-        <service
-            android:name=".utils.AutoConnectService"
-            android:enabled="true"
-            android:exported="true"
-            android:permission="android.permission.BIND_VPN_SERVICE"
-            android:foregroundServiceType="specialUse" />
-
-        <service
-            android:name=".fcm.NetworkJobService"
-            android:permission="android.permission.BIND_JOB_SERVICE" />
+<!--        <receiver-->
+<!--            android:name=".utils.WifiScanReceiver"-->
+<!--            android:enabled="true"-->
+<!--            android:exported="true"-->
+<!--            android:permission="android.permission.BIND_VPN_SERVICE"-->
+<!--            >-->
+<!--            <intent-filter>-->
+<!--                <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />-->
+<!--                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />-->
+<!--                <action android:name="android.net.wifi.STATE_CHANGE" />-->
+<!--                <action android:name="android.net.wifi.SCAN_RESULTS" />-->
+<!--                <action android:name="android.net.wifi.supplicant.CONNECTION_CHANGE" />-->
+<!--            </intent-filter>-->
+<!--        </receiver>-->
+
+<!--        <service-->
+<!--            android:name=".fcm.WiFiMonitorService"-->
+<!--            android:enabled="true"-->
+<!--            android:exported="true"-->
+<!--            android:foregroundServiceType="specialUse" />-->
+
+<!--        <service-->
+<!--            android:name=".utils.AutoConnectService"-->
+<!--            android:enabled="true"-->
+<!--            android:exported="true"-->
+<!--            android:permission="android.permission.BIND_VPN_SERVICE"-->
+<!--            android:foregroundServiceType="specialUse" />-->
+
+<!--        <service-->
+<!--            android:name=".fcm.NetworkJobService"-->
+<!--            android:permission="android.permission.BIND_JOB_SERVICE" />-->
 
     </application>
 

+ 13 - 13
app/src/main/java/com/vpn/fastestvpnservice/MainActivity.kt

@@ -53,9 +53,9 @@ import de.blinkt.openvpn.core.App
 
 open class MainActivity : DockActivity(), ConnectivityReceiver.ConnectivityReceiverListener {
 
-    lateinit var wifiManager: WifiManager
-    lateinit var wifiScanReceiver: WifiScanReceiver
-    lateinit var intentFilter: IntentFilter
+//    lateinit var wifiManager: WifiManager
+//    lateinit var wifiScanReceiver: WifiScanReceiver
+//    lateinit var intentFilter: IntentFilter
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -89,13 +89,13 @@ open class MainActivity : DockActivity(), ConnectivityReceiver.ConnectivityRecei
             }
         }
 
-        ActivityCompat.requestPermissions(this,
-            arrayOf(
-                android.Manifest.permission.ACCESS_FINE_LOCATION,
-                android.Manifest.permission.ACCESS_COARSE_LOCATION
-            ),
-            PackageManager.PERMISSION_GRANTED
-        )
+//        ActivityCompat.requestPermissions(this,
+//            arrayOf(
+//                android.Manifest.permission.ACCESS_FINE_LOCATION,
+//                android.Manifest.permission.ACCESS_COARSE_LOCATION
+//            ),
+//            PackageManager.PERMISSION_GRANTED
+//        )
 
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && Settings.canDrawOverlays(this)) {
             isSwitch.value = true
@@ -105,9 +105,9 @@ open class MainActivity : DockActivity(), ConnectivityReceiver.ConnectivityRecei
         WindowCompat.setDecorFitsSystemWindows(window, false)
 
 //        wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
-        wifiScanReceiver = WifiScanReceiver()
-        intentFilter = IntentFilter()
-        intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION)
+//        wifiScanReceiver = WifiScanReceiver()
+//        intentFilter = IntentFilter()
+//        intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION)
 //
 //        ContextCompat.registerReceiver(applicationContext, wifiScanReceiver, intentFilter, ContextCompat.RECEIVER_NOT_EXPORTED)
 

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

@@ -2,6 +2,7 @@ package com.vpn.fastestvpnservice.screens
 
 import android.app.Activity
 import android.content.res.Configuration
+import android.util.Log
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Row
@@ -14,6 +15,7 @@ import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.layout.windowInsetsPadding
 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
@@ -154,6 +156,30 @@ fun Splash(navHostController: NavHostController) {
         }
 
     }
+
+    if (isLoggedIn) {
+        val splashResponse = splashViewModelSplash.liveDataServerData.observeAsState().value
+        val serversGlobalResponse = serverListViewModelSplash.liveDataGetServersGlobal.observeAsState().value
+        val allServersResponse = serverListViewModelSplash.liveDataAllServers.observeAsState().value
+        val serverData = basePreferenceHelper.getServerData()
+
+        Log.d("splashResponse", "splashResponse = ${splashResponse?.status} ${splashResponse?.message}")
+        Log.d("splashResponse", "getServerData = ${serverData.size}")
+        Log.d("splashResponse", "liveDataGetServersGlobal = ${serversGlobalResponse?.size}")
+        Log.d("splashResponse", "liveDataAllServers = ${allServersResponse?.size}")
+
+        if (serversGlobalResponse.isNullOrEmpty() && serverData.size > 0) {
+            Log.d("splashResponse", "liveDataGetServersGlobal -> isNullOrEmpty")
+            serverListViewModelSplash.setRecommendedSmartServers()
+            serverListViewModelSplash.setCountryData()
+            splashViewModelSplash.setRecommendedServer()
+            splashViewModelSplash.setRecentlyServer()
+            splashViewModelSplash.setServerObject()
+            splashViewModelSplash.setSmartServerObject()
+        }
+
+
+    }
 }
 
 @Preview(uiMode = Configuration.UI_MODE_NIGHT_NO)

+ 8 - 8
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/SettingsScreen.kt

@@ -260,14 +260,14 @@ fun Settings(navHostController: NavHostController, activity: ComponentActivity)
                     settingsString = it
                 }
 
-                AddRowSettings(
-                    icon = R.drawable.autoconnect3x,
-                    text = "Auto Connect",
-                    onClick = {
-                        settingsViewModel.getConnectedWifi()
-                        navHostController.navigate(Screen.AutoConnect.route)
-                    }
-                )
+//                AddRowSettings(
+//                    icon = R.drawable.autoconnect3x,
+//                    text = "Auto Connect",
+//                    onClick = {
+//                        settingsViewModel.getConnectedWifi()
+//                        navHostController.navigate(Screen.AutoConnect.route)
+//                    }
+//                )
 
                 if (isLaunched) {
                     AlertDialog(

+ 0 - 4
app/src/main/java/com/vpn/fastestvpnservice/screens/settingsScreenAll/AutoConnectScreen.kt

@@ -48,21 +48,17 @@ import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.unit.dp
-import androidx.lifecycle.ViewModel
-import androidx.lifecycle.viewmodel.compose.viewModel
 import androidx.navigation.NavHostController
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.AutoConnectModel
 import com.vpn.fastestvpnservice.customItems.AutoConnectItem
 import com.vpn.fastestvpnservice.customItems.AutoConnectWifiItem
-import com.vpn.fastestvpnservice.fcm.WiFiMonitorService
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import com.vpn.fastestvpnservice.interfaces.AutoConnectCallback
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddRowSettingsSmart
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.isSettingsViewModel
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.settingsViewModel
 import com.vpn.fastestvpnservice.utils.AutoConnectService
-import com.vpn.fastestvpnservice.viewmodels.SettingsViewModel
 
 var selectedSmart: MutableState<String> = mutableStateOf("")
 var isSwitchMutable: MutableState<Boolean> = mutableStateOf(false)

+ 2 - 0
app/src/main/java/com/vpn/fastestvpnservice/screensTV/SplashScreenTV.kt

@@ -1,5 +1,6 @@
 package com.vpn.fastestvpnservice.screensTV
 
+import android.util.Log
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Row
@@ -10,6 +11,7 @@ import androidx.compose.foundation.layout.width
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
+import androidx.compose.runtime.livedata.observeAsState
 import androidx.compose.runtime.mutableStateListOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember

+ 60 - 58
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/ServerListViewModel.kt

@@ -84,71 +84,73 @@ class ServerListViewModel(context: Context): ViewModel() {
         recommendedListGlobal.clear()
         smartLocationListGlobal.clear()
 
-        preferencesHelper.getServerData().get(0).servers?.let {
-            val serverDataLocation = it
+        val serverData = preferencesHelper.getServerData()
+        if (serverData.size > 0) {
+            serverData.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 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 distinctdata =
+                    distinctdatanotnull.distinctBy { // servers's lt filter, no same lt of a server
+                        it.lt
+                    }
 
-            val result = FloatArray(1)
-            val ipinfo = preferencesHelper.getIpinfo()
+                val result = FloatArray(1)
+                val ipinfo = preferencesHelper.getIpinfo()
 
-            distinctdata.forEachIndexed { index, server ->
-                val lat1 = ipinfo?.latitute
-                val lon1 = ipinfo?.longitude
-                val lat2 = server.lt
-                val lon2 = server.lg
+                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)
-                }
+                    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 distance: Float = result[0]
+                    distinctdata.get(index).distance = distance
 
-            }
+                }
 
-            val sortedDistance = distinctdata.sortedBy {
-                it.distance
-            }
+                val sortedDistance = distinctdata.sortedBy {
+                    it.distance
+                }
 
-            if (sortedDistance.isNotEmpty()) {
-                var intRange: IntRange = 0..0
-                intRange = when (sortedDistance.size) {
-                    1 -> {
-                        0..0
-                    }
+                if (sortedDistance.isNotEmpty()) {
+                    var intRange: IntRange = 0..0
+                    intRange = when (sortedDistance.size) {
+                        1 -> {
+                            0..0
+                        }
 
-                    2 -> {
-                        0..1
-                    }
+                        2 -> {
+                            0..1
+                        }
 
-                    3 -> {
-                        0..2
-                    }
-                    else -> {
-                        0..2
-                    }
-                }
-                if (sortedDistance.isNotEmpty()) {
-                    for (i in intRange) {
-                        calculatePing(sortedDistance.get(i)) {
-                            sortedDistance.get(i).ping = it
+                        3 -> {
+                            0..2
+                        }
+                        else -> {
+                            0..2
                         }
-                        recommendedListGlobal.add(sortedDistance.get(i))
+                    }
+                    if (sortedDistance.isNotEmpty()) {
+                        for (i in intRange) {
+                            calculatePing(sortedDistance.get(i)) {
+                                sortedDistance.get(i).ping = it
+                            }
+                            recommendedListGlobal.add(sortedDistance.get(i))
 //                    Log.d("recommendedListGlobal", "SS:: server = ${sortedDistance.get(i).server_name} ${sortedDistance.get(i).ping}")
+                        }
                     }
                 }
-            }
 
-            recommendedListFinalGlobal = recommendedListGlobal
+                recommendedListFinalGlobal = recommendedListGlobal
 
 //            recommendedListFinalGlobal.forEachIndexed { index, server ->
 //                Log.d("recommendedListGlobal F", "SS:: server = ${server.server_name} ${server.ping}")
@@ -162,18 +164,18 @@ class ServerListViewModel(context: Context): ViewModel() {
 //            }
 
 //            Log.d("test_filter_list", "setRecommendedSmartServers")
-            _mutableLiveDataGetRecommendedServers.value = recommendedListGlobal
-            preferencesHelper.setRecommendedList(recommendedListGlobal)
+                _mutableLiveDataGetRecommendedServers.value = recommendedListGlobal
+                preferencesHelper.setRecommendedList(recommendedListGlobal)
 
-            if (sortedDistance.isNotEmpty()) {
-                for (i in 0..0) {
+                if (sortedDistance.isNotEmpty()) {
+                    for (i in 0..0) {
 //                    smartLocationList.add(sortedDistance.get(i))
-                    calculatePing(sortedDistance.get(i)) {
-                        sortedDistance.get(i).ping = it
+                        calculatePing(sortedDistance.get(i)) {
+                            sortedDistance.get(i).ping = it
+                        }
+                        smartLocationListGlobal.add(sortedDistance.get(i))
                     }
-                    smartLocationListGlobal.add(sortedDistance.get(i))
                 }
-            }
 
 //            smartLocationList.forEach {
 ////                preferencesHelper.setSmartServerObject(it)
@@ -181,8 +183,8 @@ class ServerListViewModel(context: Context): ViewModel() {
 //                Log.d("smartLocationList", "SS:: server = ${it.server_name}")
 //            }
 
+            }
         }
-
     }
 
     fun setCountryData() {

+ 37 - 33
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/SplashViewModel.kt

@@ -94,7 +94,8 @@ class SplashViewModel constructor(context: Context): ViewModel() {
                                     setRecentlyServer()
                                     setServerObject()
                                     setSmartServerObject()
-                                } else {
+                                }
+                                else {
                                     Log.d("test_api_response_s", "serverDataApi Android")
                                     serverListViewModelSplash.setRecommendedSmartServers()
                                     serverListViewModelSplash.setCountryData()
@@ -133,50 +134,53 @@ class SplashViewModel constructor(context: Context): ViewModel() {
 
     fun setRecommendedServer() {
         val smartLocationList: MutableList<Server> = ArrayList<Server>()
-        preferenceHelper.getServerData().get(0).servers?.let {
-            val serverDataLocation = it
+        val serverData = preferenceHelper.getServerData()
+        if (serverData.size > 0) {
+            serverData.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 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 distinctdata =
+                    distinctdatanotnull.distinctBy { // servers's lt filter, no same lt of a server
+                        it.lt
+                    }
 
-            val result = FloatArray(1)
-            val ipinfo = preferenceHelper.getIpinfo()
+                val result = FloatArray(1)
+                val ipinfo = preferenceHelper.getIpinfo()
 
-            distinctdata.forEachIndexed { index, server ->
-                val lat1 = ipinfo?.latitute
-                val lon1 = ipinfo?.longitude
-                val lat2 = server.lt
-                val lon2 = server.lg
+                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)
-                }
+                    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 distance: Float = result[0]
+                    distinctdata.get(index).distance = distance
 
-            }
+                }
 
-            val sortedDistance = distinctdata.sortedBy {
-                it.distance
-            }
+                val sortedDistance = distinctdata.sortedBy {
+                    it.distance
+                }
 
-            if (sortedDistance.isNotEmpty()) {
-                for (i in 0..0) {
-                    smartLocationList.add(sortedDistance.get(i))
+                if (sortedDistance.isNotEmpty()) {
+                    for (i in 0..0) {
+                        smartLocationList.add(sortedDistance.get(i))
+                    }
                 }
-            }
 
-            smartLocationList.forEach {
+                smartLocationList.forEach {
 //                            prefHelper.setSmartServerObject(it)
-                preferenceHelper.setRecommendedServerObject(it)
+                    preferenceHelper.setRecommendedServerObject(it)
+                }
             }
         }
     }