From 8690ed006e12a9bd1cf4005f2eb54f7541a1d541 Mon Sep 17 00:00:00 2001 From: Joren Date: Tue, 30 Apr 2024 11:59:20 +0200 Subject: [PATCH] Add a toggle for access --- .../com/ti/mobpo/ui/screens/Favourites.kt | 29 ++++++++++++++++++- .../ui/viewmodels/FavouritesViewModel.kt | 14 +++++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/ti/mobpo/ui/screens/Favourites.kt b/app/src/main/java/com/ti/mobpo/ui/screens/Favourites.kt index 69fa014..022b788 100644 --- a/app/src/main/java/com/ti/mobpo/ui/screens/Favourites.kt +++ b/app/src/main/java/com/ti/mobpo/ui/screens/Favourites.kt @@ -16,6 +16,8 @@ import com.ti.mobpo.ui.viewmodels.FavouritesViewModel import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.items +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.Button import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier @@ -41,6 +43,31 @@ fun Favorites(favoritesViewModel: FavouritesViewModel) { ) { Spacer(modifier = Modifier.height(16.dp)) + // Show AlertDialog if access check failed + if (favoritesViewModel.accessCheckFailed.value) { + AlertDialog( + onDismissRequest = { + // Dismiss the dialog + favoritesViewModel.accessCheckFailed.value = false + }, + title = { + Text("Access Denied") + }, + text = { + Text("You do not have access to this feature.") + }, + confirmButton = { + Button( + onClick = { + favoritesViewModel.accessCheckFailed.value = false + } + ) { + Text("OK") + } + } + ) + } + favorites?.let { favoritesList -> if (favoritesList.isNotEmpty()) { LazyVerticalGrid( @@ -59,4 +86,4 @@ fun Favorites(favoritesViewModel: FavouritesViewModel) { } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/ti/mobpo/ui/viewmodels/FavouritesViewModel.kt b/app/src/main/java/com/ti/mobpo/ui/viewmodels/FavouritesViewModel.kt index db27440..09108a4 100644 --- a/app/src/main/java/com/ti/mobpo/ui/viewmodels/FavouritesViewModel.kt +++ b/app/src/main/java/com/ti/mobpo/ui/viewmodels/FavouritesViewModel.kt @@ -1,5 +1,7 @@ package com.ti.mobpo.ui.viewmodels +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ti.mobpo.data.Favourite @@ -17,15 +19,23 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import java.io.IOException -class FavouritesViewModel(private val favouritesRepository: FavouritesRepository, featureManager: FeatureManager) : ViewModel() { - private val service = PokeApi.retrofitService +class FavouritesViewModel(private val favouritesRepository: FavouritesRepository, + private val featureManager: FeatureManager +) : ViewModel() { + private val service = PokeApi.retrofitService private val _pokemonDetails = MutableStateFlow?>(null) val pokemonDetails: StateFlow?> = _pokemonDetails.asStateFlow() + val accessCheckFailed: MutableState = mutableStateOf(false) fun loadFavourites() { + // featureManager.setPaidFeatureEnabled(false) enable and disable acccess // Ugly workaround to make sure all the favourites are loaded before displaying them viewModelScope.launch { + if(!featureManager.hasAccessToPaidFeature()) { + accessCheckFailed.value = true + return@launch + } try { val favouritesList: StateFlow = favouritesRepository.getAllItems().map { FavouriteUiState(it) }