Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import com.flipcash.app.core.transfers.TransferDirection
import com.flipcash.app.onramp.ConfirmationEvent
import com.flipcash.app.onramp.OnRampAmount
import com.flipcash.app.onramp.OnRampAmountController
import com.flipcash.features.balance.R
import com.flipcash.services.analytics.AnalyticsEvent
import com.flipcash.services.analytics.FlipcashAnalyticsService
import com.flipcash.services.internal.model.thirdparty.OnRampProvider
import com.flipcash.services.internal.model.thirdparty.OnRampType
import com.flipcash.services.user.AuthState
Expand All @@ -26,6 +29,7 @@ import javax.inject.Inject
internal class BalanceViewModel @Inject constructor(
userManager: UserManager,
onrampController: OnRampAmountController,
analytics: FlipcashAnalyticsService,
) : BaseViewModel2<BalanceViewModel.State, BalanceViewModel.Event>(
initialState = State(),
updateStateForEvent = updateStateForEvent
Expand Down Expand Up @@ -58,6 +62,7 @@ internal class BalanceViewModel @Inject constructor(
eventFlow
.filterIsInstance<Event.OnAddCashClicked>()
.onEach {
analytics.openOnramp(AnalyticsEvent.OnRampOpenEvent.Balance)
val provider = stateFlow.value.preferredOnRampProvider
if (provider is OnRampProvider.Coinbase && provider.type == OnRampType.Virtual) {
// has coinbase provider supporting google pay - pop selection for quick add
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import com.flipcash.app.onramp.ConfirmationEvent
import com.flipcash.app.onramp.OnRampAmount
import com.flipcash.app.onramp.OnRampAmountController
import com.flipcash.features.cash.R
import com.flipcash.services.analytics.AnalyticsEvent
import com.flipcash.services.analytics.FlipcashAnalyticsService
import com.flipcash.services.internal.model.thirdparty.OnRampProvider
import com.flipcash.services.internal.model.thirdparty.OnRampType
import com.getcode.manager.BottomBarAction
Expand Down Expand Up @@ -55,6 +57,7 @@ internal class CashScreenViewModel @Inject constructor(
tokenController: TokenController,
transactionController: TransactionController,
onrampController: OnRampAmountController,
analytics: FlipcashAnalyticsService,
) : BaseViewModel2<CashScreenViewModel.State, CashScreenViewModel.Event>(
initialState = State(),
updateStateForEvent = updateStateForEvent
Expand Down Expand Up @@ -320,6 +323,7 @@ internal class CashScreenViewModel @Inject constructor(
.filterIsInstance<Event.AddCashToWallet>()
.map { it.amount }
.onEach { amount ->
analytics.openOnramp(AnalyticsEvent.OnRampOpenEvent.Give)
val provider = stateFlow.value.preferredOnRampProvider
if (provider is OnRampProvider.Coinbase && provider.type == OnRampType.Virtual) {
// has coinbase provider supporting google pay - pop selection for quick add
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ import com.flipcash.app.navigation.FlowNavigator
import com.flipcash.app.navigation.LocalFlowNavigator
import com.flipcash.app.navigation.NavigationFlowStep
import com.flipcash.features.contact.verification.R
import com.flipcash.services.analytics.AnalyticsEvent
import com.flipcash.services.analytics.FlipcashAnalyticsService
import com.getcode.libs.analytics.LocalAnalytics
import com.getcode.manager.BottomBarAction
import com.getcode.manager.BottomBarManager
import com.getcode.navigation.core.CodeNavigator
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi
import cafe.adriel.voyager.core.lifecycle.LifecycleEffectOnce
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.core.screen.ScreenKey
import cafe.adriel.voyager.core.screen.uniqueScreenKey
Expand All @@ -21,6 +23,9 @@ import com.flipcash.app.core.android.IntentUtils
import com.flipcash.app.navigation.FlowNavigator
import com.flipcash.app.navigation.LocalFlowNavigator
import com.flipcash.features.contact.verification.R
import com.flipcash.services.analytics.AnalyticsEvent
import com.flipcash.services.analytics.FlipcashAnalyticsService
import com.getcode.libs.analytics.LocalAnalytics
import com.getcode.navigation.extensions.getStackScopedViewModel
import com.getcode.navigation.screens.NamedScreen
import com.getcode.ui.components.AppBarWithTitle
Expand All @@ -42,6 +47,7 @@ class EmailMagicLinkScreen(
override val name: String
@Composable get() = stringResource(R.string.title_verifyEmailAddress)

@OptIn(ExperimentalVoyagerApi::class)
@Composable
override fun Content() {
val flowNavigator = LocalFlowNavigator.current as FlowNavigator<VerificationFlowStep>
Expand All @@ -52,6 +58,11 @@ class EmailMagicLinkScreen(
flowNavigator.exit(false)
}

val analytics = LocalAnalytics.current as FlipcashAnalyticsService
LifecycleEffectOnce {
analytics.onrampVerification(AnalyticsEvent.OnRampVerificationEvent.ConfirmEmail)
}

Column(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi
import cafe.adriel.voyager.core.lifecycle.LifecycleEffectOnce
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.core.screen.ScreenKey
import cafe.adriel.voyager.core.screen.uniqueScreenKey
Expand All @@ -18,6 +20,9 @@ import com.flipcash.app.contact.verification.EmailVerificationFlow
import com.flipcash.app.contact.verification.internal.email.EmailEntryScreen
import com.flipcash.app.contact.verification.internal.email.EmailVerificationViewModel
import com.flipcash.features.contact.verification.R
import com.flipcash.services.analytics.AnalyticsEvent
import com.flipcash.services.analytics.FlipcashAnalyticsService
import com.getcode.libs.analytics.LocalAnalytics
import com.getcode.navigation.core.LocalCodeNavigator
import com.getcode.navigation.extensions.getStackScopedViewModel
import com.getcode.navigation.screens.NamedScreen
Expand All @@ -38,6 +43,7 @@ class EmailVerificationScreen : Screen, NamedScreen, Parcelable {
override val name: String
@Composable get() = stringResource(R.string.title_verifyEmailAddress)

@OptIn(ExperimentalVoyagerApi::class)
@Composable
override fun Content() {
val codeNavigator = LocalCodeNavigator.current
Expand All @@ -62,6 +68,11 @@ class EmailVerificationScreen : Screen, NamedScreen, Parcelable {
EmailEntryScreen(viewModel)
}

val analytics = LocalAnalytics.current as FlipcashAnalyticsService
LifecycleEffectOnce {
analytics.onrampVerification(AnalyticsEvent.OnRampVerificationEvent.EnterEmail)
}

BackHandler {
keyboard.hideIfVisible {
codeNavigator.pop()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi
import cafe.adriel.voyager.core.lifecycle.LifecycleEffectOnce
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.core.screen.ScreenKey
import cafe.adriel.voyager.core.screen.uniqueScreenKey
Expand All @@ -31,6 +33,9 @@ import com.flipcash.app.navigation.FlowNavigator
import com.flipcash.app.navigation.LocalFlowNavigator
import com.flipcash.app.theme.FlipcashDesignSystem
import com.flipcash.features.contact.verification.R
import com.flipcash.services.analytics.AnalyticsEvent
import com.flipcash.services.analytics.FlipcashAnalyticsService
import com.getcode.libs.analytics.LocalAnalytics
import com.getcode.navigation.core.LocalCodeNavigator
import com.getcode.theme.CodeTheme
import com.getcode.ui.theme.ButtonState
Expand All @@ -48,6 +53,7 @@ class VerificationFlowIntroScreen(
@IgnoredOnParcel
override val key: ScreenKey = uniqueScreenKey

@OptIn(ExperimentalVoyagerApi::class)
@Composable
override fun Content() {
val codeNavigator = LocalCodeNavigator.current
Expand All @@ -59,6 +65,11 @@ class VerificationFlowIntroScreen(
onClick = { flowNavigator.continueFlowFrom(VerificationFlowStep.Intro) },
)

val analytics = LocalAnalytics.current as FlipcashAnalyticsService
LifecycleEffectOnce {
analytics.onrampVerification(AnalyticsEvent.OnRampVerificationEvent.ShowInfo)
}

BackHandler {
keyboard.hideIfVisible {
codeNavigator.pop()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi
import cafe.adriel.voyager.core.lifecycle.LifecycleEffectOnce
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.core.screen.ScreenKey
import cafe.adriel.voyager.core.screen.uniqueScreenKey
Expand All @@ -19,6 +21,9 @@ import com.flipcash.app.contact.verification.internal.phone.PhoneVerificationVie
import com.flipcash.app.navigation.FlowNavigator
import com.flipcash.app.navigation.LocalFlowNavigator
import com.flipcash.features.contact.verification.R
import com.flipcash.services.analytics.AnalyticsEvent
import com.flipcash.services.analytics.FlipcashAnalyticsService
import com.getcode.libs.analytics.LocalAnalytics
import com.getcode.navigation.extensions.getStackScopedViewModel
import com.getcode.navigation.screens.NamedScreen
import com.getcode.ui.components.AppBarWithTitle
Expand All @@ -37,6 +42,7 @@ class PhoneCodeScreen: Screen, NamedScreen, Parcelable {
override val name: String
@Composable get() = stringResource(R.string.title_enterTheCode)

@OptIn(ExperimentalVoyagerApi::class)
@Composable
override fun Content() {
val flowNavigator = LocalFlowNavigator.current as FlowNavigator<VerificationFlowStep>
Expand All @@ -57,6 +63,11 @@ class PhoneCodeScreen: Screen, NamedScreen, Parcelable {
PhoneCodeScreen(viewModel)
}

val analytics = LocalAnalytics.current as FlipcashAnalyticsService
LifecycleEffectOnce {
analytics.onrampVerification(AnalyticsEvent.OnRampVerificationEvent.ConfirmPhone)
}

LaunchedEffect(viewModel) {
viewModel.eventFlow
.filterIsInstance<PhoneVerificationViewModel.Event.OnMaxAttemptsReached>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi
import cafe.adriel.voyager.core.lifecycle.LifecycleEffectOnce
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.core.screen.ScreenKey
import cafe.adriel.voyager.core.screen.uniqueScreenKey
Expand All @@ -18,6 +20,9 @@ import com.flipcash.app.contact.verification.PhoneVerificationFlow
import com.flipcash.app.contact.verification.internal.phone.PhoneEntryScreen
import com.flipcash.app.contact.verification.internal.phone.PhoneVerificationViewModel
import com.flipcash.features.contact.verification.R
import com.flipcash.services.analytics.AnalyticsEvent
import com.flipcash.services.analytics.FlipcashAnalyticsService
import com.getcode.libs.analytics.LocalAnalytics
import com.getcode.navigation.core.LocalCodeNavigator
import com.getcode.navigation.extensions.getStackScopedViewModel
import com.getcode.navigation.screens.NamedScreen
Expand All @@ -38,6 +43,7 @@ class PhoneVerificationScreen : Screen, NamedScreen, Parcelable {
override val name: String
@Composable get() = stringResource(R.string.title_verifyPhoneNumber)

@OptIn(ExperimentalVoyagerApi::class)
@Composable
override fun Content() {
val codeNavigator = LocalCodeNavigator.current
Expand All @@ -63,6 +69,11 @@ class PhoneVerificationScreen : Screen, NamedScreen, Parcelable {
PhoneEntryScreen(viewModel)
}

val analytics = LocalAnalytics.current as FlipcashAnalyticsService
LifecycleEffectOnce {
analytics.onrampVerification(AnalyticsEvent.OnRampVerificationEvent.EnterPhone)
}

BackHandler {
keyboard.hideIfVisible {
codeNavigator.pop()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import com.flipcash.app.onramp.ConfirmationEvent
import com.flipcash.app.onramp.OnRampAmount
import com.flipcash.app.onramp.OnRampAmountController
import com.flipcash.features.menu.R
import com.flipcash.services.analytics.AnalyticsEvent
import com.flipcash.services.analytics.FlipcashAnalyticsService
import com.flipcash.services.internal.model.thirdparty.OnRampProvider
import com.flipcash.services.internal.model.thirdparty.OnRampType
import com.flipcash.services.user.AuthState
Expand Down Expand Up @@ -54,6 +56,7 @@ internal class MenuScreenViewModel @Inject constructor(
mnemonicManager: MnemonicManager,
featureFlags: FeatureFlagController,
onrampController: OnRampAmountController,
analytics: FlipcashAnalyticsService,
) :
BaseViewModel2<MenuScreenViewModel.State, MenuScreenViewModel.Event>(
initialState = State(),
Expand Down Expand Up @@ -126,6 +129,7 @@ internal class MenuScreenViewModel @Inject constructor(
eventFlow
.filterIsInstance<Event.OnAddCashClicked>()
.onEach {
analytics.openOnramp(AnalyticsEvent.OnRampOpenEvent.Settings)
val provider = stateFlow.value.preferredOnRampProvider
if (provider is OnRampProvider.Coinbase && provider.type == OnRampType.Virtual) {
// has coinbase provider supporting google pay - pop selection for quick add
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.Divider
import androidx.compose.material.Icon
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
Expand Down Expand Up @@ -63,7 +62,7 @@ private fun OnRampProviderListScreenContent(
item {
Column(
modifier = Modifier.fillParentMaxWidth(),
verticalArrangement = Arrangement.spacedBy(CodeTheme.dimens.grid.x7),
verticalArrangement = Arrangement.spacedBy(CodeTheme.dimens.grid.x5),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Spacer(Modifier.height(CodeTheme.dimens.grid.x4))
Expand All @@ -72,11 +71,11 @@ private fun OnRampProviderListScreenContent(
contentDescription = null
)
Text(
modifier = Modifier.padding(bottom = CodeTheme.dimens.grid.x3),
text = stringResource(R.string.subtitle_addUsdcToWallet),
style = CodeTheme.typography.textMedium,
color = CodeTheme.colors.textSecondary,
)
Spacer(Modifier.height(CodeTheme.dimens.grid.x1))
}
}
items(state.providers) { provider ->
Expand All @@ -85,7 +84,6 @@ private fun OnRampProviderListScreenContent(
modifier = Modifier.fillMaxWidth(),
onClick = { dispatchEvent(OnRampViewModel.Event.OnProviderSelected(provider)) },
)
Divider(color = CodeTheme.colors.divider)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,17 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import com.flipcash.app.onramp.internal.InternalOnRampAmountController
import com.flipcash.app.theme.FlipcashDesignSystem
import com.flipcash.services.analytics.StubFlipcashAnalytics
import com.flipcash.services.internal.model.thirdparty.OnRampProvider
import com.flipcash.services.internal.model.thirdparty.OnRampType
import com.flipcash.shared.onramp.common.R
import com.getcode.opencode.model.financial.Fiat
import com.getcode.opencode.model.financial.toFiat
import com.getcode.theme.CodeTheme
import com.getcode.theme.extraSmall
import com.getcode.ui.components.AppBarWithTitle
import com.getcode.ui.components.Modal
import com.getcode.ui.theme.ButtonState
import com.getcode.ui.theme.CodeButton
import com.flipcash.shared.onramp.common.R
import com.getcode.ui.components.Modal


private val amounts = listOf(
Expand Down Expand Up @@ -184,7 +184,7 @@ private fun ClickableCell(
@Composable
@Preview
private fun OnRampAmountSelectionModal_Preview() {
val controller = InternalOnRampAmountController().apply {
val controller = InternalOnRampAmountController(StubFlipcashAnalytics()).apply {
requestAmountSelection(OnRampProvider.Phantom)
selectAmount(OnRampAmount.Predefined(amounts.first()))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.flipcash.app.onramp.inject

import com.flipcash.app.onramp.OnRampAmountController
import com.flipcash.app.onramp.internal.InternalOnRampAmountController
import com.flipcash.services.analytics.FlipcashAnalyticsService
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
Expand All @@ -14,5 +15,7 @@ object OnRampAmountModule {

@Provides
@Singleton
fun providesOnRampAmountController(): OnRampAmountController = InternalOnRampAmountController()
fun providesOnRampAmountController(
analytics: FlipcashAnalyticsService
): OnRampAmountController = InternalOnRampAmountController(analytics)
}
Loading
Loading