Procházet zdrojové kódy

subscription work completed except loader

Khubaib před 1 rokem
rodič
revize
d7806643e6

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

@@ -110,6 +110,7 @@ class MainActivity : ComponentActivity() {
         var isSnrNotify: Boolean = false
         var isSelectedServersShown: Boolean = false
         var vpnConnectionCallBacks: VPNConnectionCallBacks? = null
+        var isStopSubscriptionNavigation: Boolean = true
     }
 }
 

+ 2 - 0
app/src/main/java/com/vpn/fastestvpnservice/customItems/CountryItem.kt

@@ -153,6 +153,7 @@ fun CountryItem(
 //                                basePreferenceHelper.setServerObject(server)
                                 isCountryServerClicked = true
                             } else {
+                                basePreferenceHelper.setSubscriptionServerObject(server)
                                 Screen.Subscription.isTrue = true
                                 navHostController.navigate(
                                     Screen.Subscription.route
@@ -325,6 +326,7 @@ fun ColumnScope.ExpandableRow(
 //                                    basePreferenceHelper.setServerObject(serverInfo)
                                     isExpServerClicked = true
                                 } else {
+                                    basePreferenceHelper.setSubscriptionServerObject(serverInfo)
                                     Screen.Subscription.isTrue = true
                                     navHostController.navigate(
                                         Screen.Subscription.route

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

@@ -132,6 +132,7 @@ fun ServerItem(server: Server, navHostController: NavHostController, serverPing:
 //                        basePreferenceHelper.setServerObject(server)
                         isServerClicked = true
                     } else {
+                        basePreferenceHelper.setSubscriptionServerObject(server)
                         Screen.Subscription.isTrue = true
                         navHostController.navigate(
                             Screen.Subscription.route
@@ -286,6 +287,7 @@ fun FavoriteServerItem(server: Server, navHostController: NavHostController) {
                     if (server.enable == 1) {
                         isFavServerClicked = true
                     } else {
+                        basePreferenceHelper.setSubscriptionServerObject(server)
                         Screen.Subscription.isTrue = true
                         navHostController.navigate(
                             Screen.Subscription.route
@@ -457,6 +459,7 @@ fun ServerSearchItem(
                             onServerDisable()
                         }
                     } else {
+                        basePreferenceHelper.setSubscriptionServerObject(server)
                         Screen.Subscription.isTrue = true
                         navHostController.navigate(
                             Screen.Subscription.route
@@ -601,6 +604,7 @@ fun ServerSpecificItem(
                         basePreferenceHelper.setSmartServerObject(server)
                         onServerDisable()
                     } else {
+                        basePreferenceHelper.setSubscriptionServerObject(server)
                         Screen.Subscription.isTrue = true
                         navHostController.navigate(
                             Screen.Subscription.route

+ 16 - 0
app/src/main/java/com/vpn/fastestvpnservice/helpers/BasePreferenceHelper.kt

@@ -46,6 +46,7 @@ class BasePreferenceHelper(private val context: Context) : PreferencesHelper() {
         removePreference(context, KEY_FILENAME, KEY_SMART_SERVER)
         removePreference(context, KEY_FILENAME, KEY_AUTO_OPENVPN)
         removePreference(context, KEY_FILENAME, KEY_RECOMMENDED)
+        removePreference(context, KEY_FILENAME, KEY_SUBSCRIPTION)
     }
 
     fun saveUser(user: UserResponse) {
@@ -349,6 +350,20 @@ class BasePreferenceHelper(private val context: Context) : PreferencesHelper() {
         putStringPreference(context, KEY_FILENAME, KEY_RECOMMENDED, Gson().toJson(recommended))
     }
 
+    fun getSubscriptionServerObject(): Server? {
+        var serverObj: Server? = null
+        val serverObjStr: String = getStringPreference(context, KEY_FILENAME, KEY_SUBSCRIPTION)
+        if (serverObjStr != null) {
+            val gson = GsonBuilder().create()
+            serverObj = gson.fromJson(serverObjStr, Server::class.java)
+        }
+        return serverObj
+    }
+
+    fun setSubscriptionServerObject(subscription: Server?) {
+        putStringPreference(context, KEY_FILENAME, KEY_SUBSCRIPTION, Gson().toJson(subscription))
+    }
+
 
     fun getSplitTunneledApps(): String? {
         return getStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS)
@@ -567,5 +582,6 @@ class BasePreferenceHelper(private val context: Context) : PreferencesHelper() {
         private const val KEY_AUTO_OPENVPN = "keydata_auto_openvpn"
         private const val KEY_RECOMMENDED = "keydata_recommended"
         private const val KEY_CONNECTED_SERVER = "keydata_connected_server"
+        private const val KEY_SUBSCRIPTION = "keydata_subscription"
     }
 }

+ 50 - 17
app/src/main/java/com/vpn/fastestvpnservice/screens/accountScreensAll/SubscriptionScreen.kt

@@ -46,6 +46,7 @@ import androidx.compose.runtime.livedata.observeAsState
 import androidx.compose.runtime.mutableFloatStateOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.runtime.rememberUpdatedState
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
@@ -77,6 +78,7 @@ import com.android.billingclient.api.BillingClientStateListener
 import com.android.billingclient.api.BillingResult
 import com.android.billingclient.api.PurchasesUpdatedListener
 import com.android.billingclient.api.SkuDetails
+import com.vpn.fastestvpnservice.MainActivity
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.DataResponse
 import com.vpn.fastestvpnservice.beans.ProductFeatures
@@ -88,12 +90,14 @@ import com.vpn.fastestvpnservice.customItems.SubscriptionPackageItem
 import com.vpn.fastestvpnservice.customItems.getSelectedPosition
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.OnLifecycleEvent
+import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.onServer
 import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
 import com.vpn.fastestvpnservice.sealedClass.Screen
 import com.vpn.fastestvpnservice.ui.theme.FastestVPNTheme
 import com.vpn.fastestvpnservice.ui.theme.customTypography2
 import com.vpn.fastestvpnservice.utils.Utils
 import com.vpn.fastestvpnservice.viewmodels.BillingViewModel
+import com.vpn.fastestvpnservice.viewmodels.HomeViewModel
 import com.vpn.fastestvpnservice.viewmodels.SubscriptionViewModel
 import kotlinx.coroutines.delay
 import kotlin.random.Random
@@ -104,7 +108,6 @@ import kotlin.random.nextInt
 @Composable
 fun SubscriptionScreen(navHostController: NavHostController, activity: ComponentActivity)
 {
-
     val context = LocalContext.current
     val subscriptionViewModel: SubscriptionViewModel = viewModel{
         SubscriptionViewModel(context = context, activity)
@@ -113,6 +116,11 @@ fun SubscriptionScreen(navHostController: NavHostController, activity: Component
     var skuDetailsList: List<SkuDetails>? = null
     val basePreferenceHelper = BasePreferenceHelper(context)
     var isLoaderShow by remember { mutableStateOf(true) }
+    var isSubscriptionServerClicked by remember { mutableStateOf(false) }
+    val scope = rememberCoroutineScope()
+    val homeViewModel: HomeViewModel = viewModel {
+        HomeViewModel(context, scope)
+    }
 
     Box(
         modifier = Modifier
@@ -122,6 +130,7 @@ fun SubscriptionScreen(navHostController: NavHostController, activity: Component
 
         LaunchedEffect(key1 = true) {
             Log.d("test_api_response_p", "Products API called!")
+            MainActivity.isStopSubscriptionNavigation = true
             subscriptionViewModel.getProducts(onProductResult = {
                 isLoaderShow = false
             })
@@ -222,28 +231,34 @@ fun SubscriptionScreen(navHostController: NavHostController, activity: Component
 
         val skuDetailsListsSubs = subscriptionViewModel.liveDataSkuDetails.observeAsState().value
 
-        Button(
+        if (isSubscriptionServerClicked) {
+            val server = basePreferenceHelper.getSubscriptionServerObject()
+            Log.d("getSubscriptionServer", "server = ${server?.server_name}")
+            Log.d("ServerCallbacks", "isServerClicked $isSubscriptionServerClicked")
+            if (server != null) {
+                onServer.onServerSelected(
+                    context,
+                    homeViewModel,
+                    onClick =  { isSubscriptionServerClicked = false },
+                    true,
+                    server
+                )
+                navHostController.popBackStack(BottomBarScreen.Home.route, false)
+            }
+        }
 
+        Button(
             onClick = {
                 selectedPosition = getSelectedPosition()
                 Log.d("test_button", "onClick")
                 Log.d("SubscriptionViewModel", "liveData ${skuDetailsListsSubs}")
 
-                if (Screen.Subscription.isTrue)
-                {
-                    navHostController.popBackStack(BottomBarScreen.Home.route, false)
-                } else {
-                    navHostController.popBackStack()
-                }
-                Screen.Subscription.isTrue = false
-
-
 //                subscriptionViewModel.startConnection(selectedPosition)
-//                if (skuDetailsListsSubs != null) {
-//                    subscriptionViewModel.subscriptionProduct(
-//                        selectedPosition, skuDetailsListsSubs, activity
-//                    )
-//                }
+                if (skuDetailsListsSubs != null) {
+                    subscriptionViewModel.subscriptionProduct(
+                        selectedPosition, skuDetailsListsSubs, activity
+                    )
+                }
 
             },
             modifier = Modifier
@@ -286,10 +301,28 @@ fun SubscriptionScreen(navHostController: NavHostController, activity: Component
             it.enabled_protocols.let {
                 basePreferenceHelper.saveEnabledProtocols(it)
             }
-
             it.data?.let {
                 basePreferenceHelper.saveServerData(it)
             }
+
+            if (Screen.Subscription.isTrue)
+            {
+                if (MainActivity.isStopSubscriptionNavigation) {
+                    Log.d("testing_subs_nav", "if ${Screen.Subscription.isTrue}")
+                    isSubscriptionServerClicked = true
+
+//                    navHostController.popBackStack(BottomBarScreen.Home.route, false)
+                    MainActivity.isStopSubscriptionNavigation = false
+                }
+
+            } else {
+                if (MainActivity.isStopSubscriptionNavigation) {
+                    Log.d("testing_subs_nav", "else ${Screen.Subscription.isTrue}")
+                    navHostController.popBackStack()
+                    MainActivity.isStopSubscriptionNavigation = false
+                }
+            }
+            Screen.Subscription.isTrue = false
         }
     }
 }

+ 1 - 1
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/HomeScreen.kt

@@ -142,7 +142,7 @@ lateinit var vpnConnectionsUtil: VPNConnectionsUtil
         context: Context, homeViewModel: HomeViewModel,
         onClick: () -> Unit, isServerDialogShown: Boolean, server: Server) {
         val wg = VPNConnectionsUtil(context, act ,homeViewModel)
-         val basePreferenceHelper = BasePreferenceHelper(context)
+        val basePreferenceHelper = BasePreferenceHelper(context)
 
         Log.d("ServerCallbacks", "onServerSelected called!")
         Log.d("ServerCallbacks", "onServerSelected server = ${server.server_name}")