Selaa lähdekoodia

loader shown on products api..

Khubaib 1 vuosi sitten
vanhempi
commit
5ae712da51

+ 25 - 23
app/src/main/java/com/vpn/fastestvpnservice/customItems/SubscriptionPackageItem.kt

@@ -94,26 +94,16 @@ fun SubscriptionPackageItem(item: SubscriptionPackageList, position: Int, activi
                 detectTapGestures {
                     Log.d(
                         "test_plan",
-                        "Same position ${item.packageDuration} ${item.isSelected.value} :: selectedPosition = $selectedPosition position = $position"
+                        "Same position ${item.packageDuration} ${item.isSelected.value} :: selectedPosition = ${SubscriptionViewModel.selectedPosition} position = $position"
                     )
-                    if (!item.isSelected.value) {
-                        selectedPosition = position
+                    if (SubscriptionViewModel.selectedPosition != position) {
+                        SubscriptionViewModel.selectedPosition = position
                         Log.d(
                             "test_plan",
-                            "False : selectedPosition = $selectedPosition position = $position"
+                            "False : selectedPosition = ${SubscriptionViewModel.selectedPosition} position = $position"
                         )
 
-                        // uncomment this below
-//                        subscriptionViewModel.mutableLiveDataProducts.value?.let { it1 ->
-//                            subscriptionViewModel.setProductsData(
-//                                it1
-//                            )
-//                        }
-
-//                            subscriptionViewModel.setSelectedPosition(position)
-
-                        val subscriptionPackageListData =
-                            subscriptionViewModel.selectPriceList.value
+                        val subscriptionPackageListData = subscriptionViewModel.selectPriceList.value
                         subscriptionPackageListData?.forEachIndexed { index, subscriptionPackageList ->
 
                             Log.d(
@@ -121,20 +111,33 @@ fun SubscriptionPackageItem(item: SubscriptionPackageList, position: Int, activi
                                 "Update ${subscriptionPackageList.packageDuration} $index $position"
                             )
 
-                            subscriptionPackageList.isSelected.value = index == position
+                            if (index == SubscriptionViewModel.selectedPosition)
+                            {
+                                subscriptionPackageList.isSelected.value = true
+                                // uncomment this below
+
+                            } else {
+                                subscriptionPackageList.isSelected.value = false
+                            }
+
+//                            subscriptionViewModel.selectPriceList.postValue(subscriptionPackageListData)
+//
+//                            subscriptionViewModel.featuresListSorted.value?.let {
+//                                it.get(SubscriptionViewModel.selectedPosition).features?.let { features ->
+//                                    subscriptionViewModel.featuresListSortedItems.postValue(features)
+//                                }
+//                            }
 
-                            getPosition = position
-                            SubscriptionViewModel.selectedPosition = position
                             Log.d(
                                 "test_plan",
                                 "Update[2] ${subscriptionPackageList.packageDuration} ${subscriptionPackageList.isSelected.value}"
                             )
                         }
-
-//                        subscriptionViewModel.selectPriceList.postValue(subscriptionPackageListData)
                     }
-
                 }
+
+
+
             },
     )
     {
@@ -152,7 +155,7 @@ fun SubscriptionPackageItem(item: SubscriptionPackageList, position: Int, activi
                 modifier = Modifier
                     .fillMaxWidth()
             ) {
-                Text(text = item.packageDuration + " " + item.isSelected.value,
+                Text(text = item.packageDuration,
                     style = TextStyle(
                         color = if (item.isSelected.value) colorResource(
                             id = R.color.blue_text) else colorResource(
@@ -209,7 +212,6 @@ fun SubscriptionPackageItem(item: SubscriptionPackageList, position: Int, activi
 }
 
 fun getSelectedPosition(): Int {
-
     return SubscriptionViewModel.selectedPosition
 }
 

+ 35 - 10
app/src/main/java/com/vpn/fastestvpnservice/screens/accountScreensAll/SubscriptionScreen.kt

@@ -33,13 +33,16 @@ import androidx.compose.material.Surface
 import androidx.compose.material.Text
 import androidx.compose.material3.Button
 import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.CircularProgressIndicator
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.DisposableEffect
 import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.MutableState
 import androidx.compose.runtime.getValue
 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.rememberUpdatedState
@@ -90,6 +93,7 @@ import com.vpn.fastestvpnservice.ui.theme.FastestVPNTheme
 import com.vpn.fastestvpnservice.utils.Utils
 import com.vpn.fastestvpnservice.viewmodels.BillingViewModel
 import com.vpn.fastestvpnservice.viewmodels.SubscriptionViewModel
+import kotlinx.coroutines.delay
 import kotlin.random.Random
 import kotlin.random.nextInt
 
@@ -106,6 +110,7 @@ fun SubscriptionScreen(navHostController: NavHostController, activity: Component
     var selectedPosition: Int = 0
     var skuDetailsList: List<SkuDetails>? = null
     val basePreferenceHelper = BasePreferenceHelper(context)
+    var isLoaderShow by remember { mutableStateOf(true) }
 
     Box(
         modifier = Modifier
@@ -118,6 +123,29 @@ fun SubscriptionScreen(navHostController: NavHostController, activity: Component
             subscriptionViewModel.getProducts()
         }
 
+        if (isLoaderShow) {
+            var progress by remember { mutableFloatStateOf(0.1F) }
+
+            LaunchedEffect(key1 = Unit) {
+                while (true) {
+                    for (i in 1..100) {
+                        progress = i.toFloat()/100F
+                        delay(150)
+                    }
+                    progress = 0.1F
+                }
+            }
+
+            CircularProgressIndicator(
+                progress = { progress },
+                modifier = Modifier
+                    .size(50.dp)
+                    .align(Alignment.Center),
+                color = colorResource(id = R.color.yellow_text),
+                strokeWidth = 5.dp,
+            )
+        }
+
         HeaderRowSS(navHostController = navHostController)
 
         Column(
@@ -148,29 +176,26 @@ fun SubscriptionScreen(navHostController: NavHostController, activity: Component
                 CompositionLocalProvider(
                     LocalOverscrollConfiguration provides null
                 ) {
-                    val featuresList = subscriptionViewModel.featuresListSorted.observeAsState().value
+                    val selectedPosition1 = SubscriptionViewModel.selectedPosition
+                    val featuresList = subscriptionViewModel.featuresListSortedItems.observeAsState().value
                     featuresList?.let {
                         Log.d("test_subscription_list", "featuresListSorted[SS] size = ${it.size}")
 
                     }
-
-                    val productsData = subscriptionViewModel.featuresListSorted.observeAsState().value
                     val selectPriceList = subscriptionViewModel.selectPriceList.observeAsState().value
-                    val selectedPosition1 = subscriptionViewModel.mutableLiveDataNumber.observeAsState().value
 
                     LazyColumn {
 
-//                        selectedPosition = getSelectedPosition()
-
-                        productsData?.let {
+                        featuresList?.let {
 
                             it.let {
                                 Log.d("test_api_response_p",
                                     "Products screen = ${it.size}, selectedPosition = $selectedPosition1")
 
                                 if (it.size > 0) {
-                                    val features = selectedPosition1?.let { it1 -> it.get(it1).features }
-                                    features?.let {
+                                    isLoaderShow = false
+//                                    val features = selectedPosition1.let { it1 -> it.features }
+                                    it.let {
                                         items(items = it) {item ->
                                             SubscriptionDataItem(item = item)
                                         }
@@ -200,7 +225,7 @@ fun SubscriptionScreen(navHostController: NavHostController, activity: Component
 
             onClick = {
                 selectedPosition = getSelectedPosition()
-                Toast.makeText(context, "$selectedPosition", Toast.LENGTH_SHORT).show()
+//                Toast.makeText(context, "$selectedPosition", Toast.LENGTH_SHORT).show()
                 Log.d("test_button", "onClick")
 //                subscriptionViewModel.mutableLiveDataNumber.value = 1
                 Log.d("SubscriptionViewModel", "liveData ${skuDetailsListsSubs}")

+ 8 - 0
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/SubscriptionViewModel.kt

@@ -21,6 +21,7 @@ import com.google.gson.Gson
 import com.google.gson.reflect.TypeToken
 import com.vpn.fastestvpnservice.application.App
 import com.vpn.fastestvpnservice.beans.DataResponse
+import com.vpn.fastestvpnservice.beans.Features
 import com.vpn.fastestvpnservice.beans.ProductFeatures
 import com.vpn.fastestvpnservice.beans.SubscriptionPackageList
 import com.vpn.fastestvpnservice.customItems.getSelectedPosition
@@ -52,6 +53,9 @@ class SubscriptionViewModel constructor(context: Context, activity: ComponentAct
 
     var featuresList = MutableLiveData<MutableList<ProductFeatures>>()
     var featuresListSorted = MutableLiveData<MutableList<ProductFeatures>>()
+    var featuresListSortedItems = MutableLiveData<MutableList<Features>>()
+
+
     var selectPriceList = MutableLiveData<MutableList<SubscriptionPackageList>>()
 
 
@@ -247,6 +251,10 @@ class SubscriptionViewModel constructor(context: Context, activity: ComponentAct
             }
             featuresListSorted.postValue(featuresListSortedData)
 
+            featuresListSortedData.get(selectedPosition).features?.let {
+                featuresListSortedItems.postValue(it)
+            }
+
 
             val list = featuresListSorted.value
             Log.d("test_subscription_list", "featuresListSorted size = ${list?.size}")