From 98c3eb0dfbffd0afe079cd9f7333df2a8f42e0a6 Mon Sep 17 00:00:00 2001 From: Marko Kocic Date: Tue, 4 Feb 2025 09:40:49 +0100 Subject: [PATCH 1/2] Add onClick event to PremiumBadge on PremiumHomeScreen --- .../net/primal/android/navigation/PrimalAppNavigation.kt | 1 + .../net/primal/android/premium/home/PremiumHomeContract.kt | 1 + .../net/primal/android/premium/home/PremiumHomeScreen.kt | 7 +++++++ .../primal/android/premium/home/PremiumHomeViewModel.kt | 1 + 4 files changed, 10 insertions(+) diff --git a/app/src/main/kotlin/net/primal/android/navigation/PrimalAppNavigation.kt b/app/src/main/kotlin/net/primal/android/navigation/PrimalAppNavigation.kt index eace55926..13371356c 100644 --- a/app/src/main/kotlin/net/primal/android/navigation/PrimalAppNavigation.kt +++ b/app/src/main/kotlin/net/primal/android/navigation/PrimalAppNavigation.kt @@ -1155,6 +1155,7 @@ private fun NavGraphBuilder.premiumHome(route: String, navController: NavControl onClose = { navController.navigateUp() }, onRenewSubscription = { navController.navigateToPremiumExtendSubscription(primalName = it) }, onManagePremium = { navController.navigateToPremiumManage() }, + onLegendCardClick = { navController.navigateToPremiumLegendCard(profileId = it) }, onSupportPrimal = { navController.navigateToPremiumSupportPrimal() }, ) } diff --git a/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeContract.kt b/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeContract.kt index 9aabdf330..307e30663 100644 --- a/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeContract.kt +++ b/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeContract.kt @@ -8,6 +8,7 @@ import net.primal.android.premium.legend.domain.LegendaryCustomization interface PremiumHomeContract { data class UiState( + val profileId: String? = null, val avatarCdnImage: CdnImage? = null, val profileNostrAddress: String? = null, val profileLightningAddress: String? = null, diff --git a/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeScreen.kt b/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeScreen.kt index 932dff5ae..5ba1e745c 100644 --- a/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeScreen.kt +++ b/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeScreen.kt @@ -45,6 +45,7 @@ import net.primal.android.premium.ui.PremiumBadge import net.primal.android.premium.ui.PrimalPremiumTable import net.primal.android.premium.ui.toHumanReadableString import net.primal.android.premium.utils.isPremiumFreeTier +import net.primal.android.premium.utils.isPrimalLegendTier import net.primal.android.theme.AppTheme @Composable @@ -54,6 +55,7 @@ fun PremiumHomeScreen( onRenewSubscription: (primalName: String) -> Unit, onManagePremium: () -> Unit, onSupportPrimal: () -> Unit, + onLegendCardClick: (String) -> Unit, ) { val uiState = viewModel.state.collectAsState() @@ -70,6 +72,7 @@ fun PremiumHomeScreen( onRenewSubscription = onRenewSubscription, onManagePremium = onManagePremium, onSupportPrimal = onSupportPrimal, + onLegendCardClick = onLegendCardClick, eventPublisher = viewModel::setEvent, ) } @@ -82,6 +85,7 @@ private fun PremiumHomeScreen( onRenewSubscription: (primalName: String) -> Unit, onManagePremium: () -> Unit, onSupportPrimal: () -> Unit, + onLegendCardClick: (String) -> Unit, eventPublisher: (PremiumHomeContract.UiEvent) -> Unit, ) { val snackbarHostState = remember { SnackbarHostState() } @@ -153,6 +157,9 @@ private fun PremiumHomeScreen( if (state.membership != null) { PremiumBadge( + modifier = Modifier.clickable(enabled = state.membership.isPrimalLegendTier()) { + state.profileId?.let { onLegendCardClick(it) } + }, firstCohort = state.membership.cohort1, secondCohort = state.membership.cohort2, membershipExpired = state.membership.isExpired(), diff --git a/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeViewModel.kt b/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeViewModel.kt index 9281870fc..9327b3fec 100644 --- a/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeViewModel.kt +++ b/app/src/main/kotlin/net/primal/android/premium/home/PremiumHomeViewModel.kt @@ -62,6 +62,7 @@ class PremiumHomeViewModel @Inject constructor( activeAccountStore.activeUserAccount.collect { setState { copy( + profileId = it.pubkey, avatarCdnImage = it.avatarCdnImage, profileNostrAddress = it.internetIdentifier, profileLightningAddress = it.lightningAddress, From 26fa12c4c19e8d2f760ef8177e6777ce8f69cbeb Mon Sep 17 00:00:00 2001 From: Marko Kocic Date: Tue, 4 Feb 2025 09:44:49 +0100 Subject: [PATCH 2/2] Update detekt baseline --- app/detekt-baseline.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index 477abb65d..c563921dd 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -66,7 +66,7 @@ LongMethod:PremiumBuyingScreen.kt$@OptIn(ExperimentalMaterial3Api::class) @Composable private fun PremiumBuyingScreen( state: PremiumBuyingContract.UiState, eventPublisher: (PremiumBuyingContract.UiEvent) -> Unit, screenCallbacks: PremiumBuyingContract.ScreenCallbacks, ) LongMethod:PremiumContactListScreen.kt$@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) @Composable private fun PremiumContactListScreen( state: PremiumContactListContract.UiState, eventPublisher: (PremiumContactListContract.UiEvent) -> Unit, snackbarHostState: SnackbarHostState, onClose: () -> Unit, ) LongMethod:PremiumContentBackupScreen.kt$@OptIn(ExperimentalMaterial3Api::class) @Composable fun PremiumContentBackupScreen( state: PremiumContentBackupContract.UiState, eventPublisher: (PremiumContentBackupContract.UiEvent) -> Unit, onClose: () -> Unit, ) - LongMethod:PremiumHomeScreen.kt$@OptIn(ExperimentalMaterial3Api::class) @Composable private fun PremiumHomeScreen( state: PremiumHomeContract.UiState, onClose: () -> Unit, onRenewSubscription: (primalName: String) -> Unit, onManagePremium: () -> Unit, onSupportPrimal: () -> Unit, eventPublisher: (PremiumHomeContract.UiEvent) -> Unit, ) + LongMethod:PremiumHomeScreen.kt$@OptIn(ExperimentalMaterial3Api::class) @Composable private fun PremiumHomeScreen( state: PremiumHomeContract.UiState, onClose: () -> Unit, onRenewSubscription: (primalName: String) -> Unit, onManagePremium: () -> Unit, onSupportPrimal: () -> Unit, onLegendCardClick: (String) -> Unit, eventPublisher: (PremiumHomeContract.UiEvent) -> Unit, ) LongMethod:PremiumOrderHistoryScreen.kt$@Composable private fun SubscriptionHeader( modifier: Modifier, state: PremiumOrderHistoryContract.UiState, onExtendSubscription: (primalName: String) -> Unit, onCancelSubscription: () -> Unit, ) LongMethod:PremiumOrderHistoryScreen.kt$@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) @Composable private fun PremiumOrderHistoryScreen( state: PremiumOrderHistoryContract.UiState, eventPublisher: (PremiumOrderHistoryContract.UiEvent) -> Unit, onExtendSubscription: (primalName: String) -> Unit, onClose: () -> Unit, ) LongMethod:PremiumPurchaseStage.kt$@ExperimentalMaterial3Api @Composable fun PremiumPurchaseStage( state: PremiumBuyingContract.UiState, onBack: () -> Unit, onLearnMoreClick: () -> Unit, eventPublisher: (PremiumBuyingContract.UiEvent) -> Unit, )