Skip to content

Commit 2cb19cd

Browse files
committed
chore(analytics): add share token action
Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
1 parent 864f00c commit 2cb19cd

11 files changed

Lines changed: 35 additions & 14 deletions

File tree

apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/email/EmailMagicLinkScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import cafe.adriel.voyager.core.screen.ScreenKey
1717
import cafe.adriel.voyager.core.screen.uniqueScreenKey
1818
import com.flipcash.app.analytics.AnalyticsEvent
1919
import com.flipcash.app.analytics.FlipcashAnalyticsService
20+
import com.flipcash.app.analytics.rememberAnalytics
2021
import com.flipcash.app.contact.verification.EmailVerificationFlow
2122
import com.flipcash.app.contact.verification.VerificationFlowStep
2223
import com.flipcash.app.contact.verification.internal.email.EmailMagicLinkScreen
@@ -58,7 +59,7 @@ class EmailMagicLinkScreen(
5859
flowNavigator.exit(false)
5960
}
6061

61-
val analytics = LocalAnalytics.current as FlipcashAnalyticsService
62+
val analytics = rememberAnalytics()
6263
LifecycleEffectOnce {
6364
analytics.onrampVerification(AnalyticsEvent.OnRampVerificationEvent.ConfirmEmail)
6465
}

apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/email/EmailVerificationScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import cafe.adriel.voyager.navigator.LocalNavigator
1818
import cafe.adriel.voyager.navigator.currentOrThrow
1919
import com.flipcash.app.analytics.AnalyticsEvent
2020
import com.flipcash.app.analytics.FlipcashAnalyticsService
21+
import com.flipcash.app.analytics.rememberAnalytics
2122
import com.flipcash.app.contact.verification.EmailVerificationFlow
2223
import com.flipcash.app.contact.verification.internal.email.EmailEntryScreen
2324
import com.flipcash.app.contact.verification.internal.email.EmailVerificationViewModel
@@ -68,7 +69,7 @@ class EmailVerificationScreen : Screen, NamedScreen, Parcelable {
6869
EmailEntryScreen(viewModel)
6970
}
7071

71-
val analytics = LocalAnalytics.current as FlipcashAnalyticsService
72+
val analytics = rememberAnalytics()
7273
LifecycleEffectOnce {
7374
analytics.onrampVerification(AnalyticsEvent.OnRampVerificationEvent.EnterEmail)
7475
}

apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/internal/VerificationFlowIntroScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import cafe.adriel.voyager.core.screen.ScreenKey
3030
import cafe.adriel.voyager.core.screen.uniqueScreenKey
3131
import com.flipcash.app.analytics.AnalyticsEvent
3232
import com.flipcash.app.analytics.FlipcashAnalyticsService
33+
import com.flipcash.app.analytics.rememberAnalytics
3334
import com.flipcash.app.contact.verification.VerificationFlowStep
3435
import com.flipcash.app.navigation.FlowNavigator
3536
import com.flipcash.app.navigation.LocalFlowNavigator
@@ -65,7 +66,7 @@ class VerificationFlowIntroScreen(
6566
onClick = { flowNavigator.continueFlowFrom(VerificationFlowStep.Intro) },
6667
)
6768

68-
val analytics = LocalAnalytics.current as FlipcashAnalyticsService
69+
val analytics = rememberAnalytics()
6970
LifecycleEffectOnce {
7071
analytics.onrampVerification(AnalyticsEvent.OnRampVerificationEvent.ShowInfo)
7172
}

apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/phone/PhoneCodeScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import cafe.adriel.voyager.core.screen.ScreenKey
1616
import cafe.adriel.voyager.core.screen.uniqueScreenKey
1717
import com.flipcash.app.analytics.AnalyticsEvent
1818
import com.flipcash.app.analytics.FlipcashAnalyticsService
19+
import com.flipcash.app.analytics.rememberAnalytics
1920
import com.flipcash.app.contact.verification.PhoneVerificationFlow
2021
import com.flipcash.app.contact.verification.VerificationFlowStep
2122
import com.flipcash.app.contact.verification.internal.phone.PhoneCodeScreen
@@ -63,7 +64,7 @@ class PhoneCodeScreen: Screen, NamedScreen, Parcelable {
6364
PhoneCodeScreen(viewModel)
6465
}
6566

66-
val analytics = LocalAnalytics.current as FlipcashAnalyticsService
67+
val analytics = rememberAnalytics()
6768
LifecycleEffectOnce {
6869
analytics.onrampVerification(AnalyticsEvent.OnRampVerificationEvent.ConfirmPhone)
6970
}

apps/flipcash/features/contact-verification/src/main/kotlin/com/flipcash/app/contact/verification/phone/PhoneVerificationScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import cafe.adriel.voyager.navigator.LocalNavigator
1818
import cafe.adriel.voyager.navigator.currentOrThrow
1919
import com.flipcash.app.analytics.AnalyticsEvent
2020
import com.flipcash.app.analytics.FlipcashAnalyticsService
21+
import com.flipcash.app.analytics.rememberAnalytics
2122
import com.flipcash.app.contact.verification.PhoneVerificationFlow
2223
import com.flipcash.app.contact.verification.internal.phone.PhoneEntryScreen
2324
import com.flipcash.app.contact.verification.internal.phone.PhoneVerificationViewModel
@@ -69,7 +70,7 @@ class PhoneVerificationScreen : Screen, NamedScreen, Parcelable {
6970
PhoneEntryScreen(viewModel)
7071
}
7172

72-
val analytics = LocalAnalytics.current as FlipcashAnalyticsService
73+
val analytics = rememberAnalytics()
7374
LifecycleEffectOnce {
7475
analytics.onrampVerification(AnalyticsEvent.OnRampVerificationEvent.EnterPhone)
7576
}

apps/flipcash/features/tokens/src/main/kotlin/com/flipcash/app/tokens/TokenInfoScreen.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ import cafe.adriel.voyager.core.registry.ScreenRegistry
1616
import cafe.adriel.voyager.core.screen.ScreenKey
1717
import cafe.adriel.voyager.core.screen.uniqueScreenKey
1818
import cafe.adriel.voyager.hilt.getViewModel
19+
import com.flipcash.app.analytics.Action
1920
import com.flipcash.app.analytics.AnalyticsEvent
2021
import com.flipcash.app.analytics.FlipcashAnalyticsService
22+
import com.flipcash.app.analytics.rememberAnalytics
2123
import com.flipcash.app.core.ui.TokenIconWithName
2224
import com.flipcash.app.onramp.LocalExternalWalletState
2325
import com.flipcash.app.onramp.OnRampFlowTracker
@@ -63,7 +65,7 @@ class TokenInfoScreen(
6365
modifier = Modifier.fillMaxSize(),
6466
horizontalAlignment = Alignment.CenterHorizontally,
6567
) {
66-
val analytics = LocalAnalytics.current as FlipcashAnalyticsService
68+
val analytics = rememberAnalytics()
6769
val viewModel = getViewModel<TokenInfoViewModel>()
6870
val state by viewModel.stateFlow.collectAsStateWithLifecycle()
6971
AppBarWithTitle(
@@ -89,6 +91,7 @@ class TokenInfoScreen(
8991
state.token.dataOrNull?.let {
9092
if (!state.isCashReserve) {
9193
AppBarDefaults.Share {
94+
analytics.action(Action.TokenShare)
9295
viewModel.dispatchEvent(TokenInfoViewModel.Event.Share)
9396
}
9497
}

apps/flipcash/features/tokens/src/main/kotlin/com/flipcash/app/tokens/internal/TokenInfoScreen.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import androidx.compose.ui.unit.dp
3131
import androidx.lifecycle.compose.collectAsStateWithLifecycle
3232
import com.flipcash.app.analytics.Action
3333
import com.flipcash.app.analytics.FlipcashAnalyticsService
34+
import com.flipcash.app.analytics.rememberAnalytics
3435
import com.flipcash.app.core.AppRoute
3536
import com.flipcash.app.core.data.Loadable
3637
import com.flipcash.app.core.money.RegionSelectionKind
@@ -267,7 +268,7 @@ private fun BottomBarButtons(
267268
modifier: Modifier = Modifier,
268269
dispatch: (TokenInfoViewModel.Event) -> Unit
269270
) {
270-
val analytics = LocalAnalytics.current as FlipcashAnalyticsService
271+
val analytics = rememberAnalytics()
271272
when (val loadable = state.token) {
272273
is Loadable.Error -> Unit
273274
is Loadable.Loaded -> {
@@ -294,7 +295,7 @@ private fun BottomBarButtons(
294295
buttonState = ButtonState.Filled20,
295296
text = stringResource(R.string.action_sell),
296297
) {
297-
analytics.action(Action.Sell)
298+
analytics.action(Action.TokenSell)
298299
dispatch(
299300
TokenInfoViewModel.Event.OpenScreen(
300301
AppRoute.Token.SwapTransact(

apps/flipcash/shared/analytics/src/main/kotlin/com/flipcash/app/analytics/Actions.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,19 @@ sealed class Action : AppAction {
3131
override val value: String = "Complete Onboarding"
3232
}
3333

34-
data object BuyWithReserves : Action() {
34+
data object TokenBuyWithReserves : Action() {
3535
override val value: String = "Button: Buy With Reserves"
3636
}
3737

38-
data object BuyWithPhantom : Action() {
38+
data object TokenBuyWithPhantom : Action() {
3939
override val value: String = "Button: Buy With Phantom"
4040
}
4141

42-
data object Sell : Action() {
42+
data object TokenSell : Action() {
4343
override val value: String = "Button: Sell"
4444
}
45+
46+
data object TokenShare : Action() {
47+
override val value: String = "Button: Share Token Info"
48+
}
4549
}

apps/flipcash/shared/analytics/src/main/kotlin/com/flipcash/app/analytics/Analytics.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.flipcash.app.analytics
22

3+
import androidx.compose.runtime.Composable
34
import com.flipcash.services.internal.model.thirdparty.OnRampProvider
45
import com.getcode.ed25519.Ed25519.KeyPair
56
import com.getcode.libs.analytics.AnalyticsService
67
import com.getcode.libs.analytics.AppAction
78
import com.getcode.libs.analytics.AppActionSource
9+
import com.getcode.libs.analytics.LocalAnalytics
810
import com.getcode.opencode.model.financial.CurrencyCode
911
import com.getcode.opencode.model.financial.Fiat
1012
import com.getcode.opencode.model.financial.LocalFiat
@@ -129,4 +131,9 @@ class StubFlipcashAnalytics : FlipcashAnalyticsService {
129131
) = Unit
130132

131133
override fun sell(amount: Fiat, feeAmount: Fiat, mint: Mint, error: Throwable?) = Unit
134+
}
135+
136+
@Composable
137+
fun rememberAnalytics(): FlipcashAnalyticsService {
138+
return LocalAnalytics.current as FlipcashAnalyticsService
132139
}

apps/flipcash/shared/onramp/deeplinks/src/main/kotlin/com/flipcash/app/onramp/ExternalWalletOnRampHandler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import androidx.lifecycle.LifecycleOwner
1313
import androidx.lifecycle.compose.LocalLifecycleOwner
1414
import cafe.adriel.voyager.core.registry.ScreenRegistry
1515
import com.flipcash.app.analytics.FlipcashAnalyticsService
16+
import com.flipcash.app.analytics.rememberAnalytics
1617
import com.flipcash.app.core.AppRoute
1718
import com.flipcash.app.core.android.IntentUtils
1819
import com.flipcash.app.core.android.extensions.canNativelyHandle
@@ -54,7 +55,7 @@ fun ExternalWalletOnRampHandler(
5455
) {
5556
val permissions = LocalPermissionChecker.current
5657
val composeScope = rememberCoroutineScope()
57-
val analytics = LocalAnalytics.current as FlipcashAnalyticsService
58+
val analytics = rememberAnalytics()
5859

5960
fun close(exit: Boolean) {
6061
if (exit) {

0 commit comments

Comments
 (0)