diff --git a/api/src/main/java/com/getcode/analytics/AnalyticsManager.kt b/api/src/main/java/com/getcode/analytics/AnalyticsManager.kt index 1fccc04f1..8033b9c18 100644 --- a/api/src/main/java/com/getcode/analytics/AnalyticsManager.kt +++ b/api/src/main/java/com/getcode/analytics/AnalyticsManager.kt @@ -269,6 +269,10 @@ class AnalyticsManager @Inject constructor( ) } + override fun tipCardLinked() { + track(Name.TipCardLinked) + } + override fun backgroundSwapInitiated() { track(Name.BackgroundSwap) } @@ -319,6 +323,7 @@ class AnalyticsManager @Inject constructor( Login("Login"), CreateAccount("Create Account"), UnintentionalLogout("Unintentional Logout"), + TipCardLinked("Tip Card Linked"), //Bill Bill("Bill"), diff --git a/api/src/main/java/com/getcode/analytics/AnalyticsService.kt b/api/src/main/java/com/getcode/analytics/AnalyticsService.kt index 2f00587c8..fea464b54 100644 --- a/api/src/main/java/com/getcode/analytics/AnalyticsService.kt +++ b/api/src/main/java/com/getcode/analytics/AnalyticsService.kt @@ -45,6 +45,7 @@ interface AnalyticsService { fun withdrawal(amount: KinAmount, successful: Boolean) fun tipCardShown(username: String) + fun tipCardLinked() fun backgroundSwapInitiated() fun unintentionalLogout() @@ -93,6 +94,7 @@ class AnalyticsServiceNull : AnalyticsService { override fun upgradePrivacy(successful: Boolean, intentId: PublicKey, actionCount: Int) = Unit override fun onBillReceived() = Unit override fun tipCardShown(username: String) = Unit + override fun tipCardLinked() = Unit override fun backgroundSwapInitiated() = Unit override fun unintentionalLogout() = Unit override fun appSettingToggled(setting: AppSetting, value: Boolean) = Unit diff --git a/api/src/main/java/com/getcode/network/TipController.kt b/api/src/main/java/com/getcode/network/TipController.kt index 0cbfb92fa..d693913a5 100644 --- a/api/src/main/java/com/getcode/network/TipController.kt +++ b/api/src/main/java/com/getcode/network/TipController.kt @@ -3,6 +3,7 @@ package com.getcode.network import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleOwner +import com.getcode.analytics.AnalyticsService import com.getcode.manager.SessionManager import com.getcode.model.CodePayload import com.getcode.model.PrefsBool @@ -11,6 +12,8 @@ import com.getcode.model.TipMetadata import com.getcode.model.TwitterUser import com.getcode.network.client.Client import com.getcode.network.client.fetchTwitterUser +import com.getcode.network.repository.BetaFlagsRepository +import com.getcode.network.repository.BetaOptions import com.getcode.network.repository.PrefRepository import com.getcode.network.repository.TwitterUserFetchError import com.getcode.network.repository.base58 @@ -24,6 +27,7 @@ import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map @@ -44,6 +48,7 @@ typealias TipUser = Pair @Singleton class TipController @Inject constructor( private val client: Client, + betaFlags: BetaFlagsRepository, private val prefRepository: PrefRepository, ): LifecycleEventObserver { @@ -70,7 +75,7 @@ class TipController @Inject constructor( val showTwitterSplat: Flow = combine( connectedAccount, - prefRepository.observeOrDefault(PrefsBool.TIPS_ENABLED, false), + betaFlags.observe().map { it.tipsEnabled }, prefRepository.observeOrDefault(PrefsBool.SEEN_TIP_CARD, false) ) { connected, tipsEnabled, seen -> connected != null && !seen && tipsEnabled diff --git a/app/src/main/java/com/getcode/util/DeeplinkHandler.kt b/app/src/main/java/com/getcode/util/DeeplinkHandler.kt index cddc002c1..b9c2e44a5 100644 --- a/app/src/main/java/com/getcode/util/DeeplinkHandler.kt +++ b/app/src/main/java/com/getcode/util/DeeplinkHandler.kt @@ -5,23 +5,17 @@ import android.content.Intent import android.net.Uri import androidx.core.net.toUri import cafe.adriel.voyager.core.screen.Screen -import com.getcode.model.BetaFlag import com.getcode.model.PrefsBool import com.getcode.models.DeepLinkRequest -import com.getcode.models.encode import com.getcode.navigation.screens.HomeScreen import com.getcode.navigation.screens.LoginScreen import com.getcode.network.repository.BetaFlagsRepository -import com.getcode.network.repository.encodeBase64 import com.getcode.network.repository.urlDecode -import com.getcode.ui.utils.getActivity import com.getcode.utils.TraceType import com.getcode.utils.base64EncodedData import com.getcode.utils.trace import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.serialization.json.buildJsonObject -import kotlinx.serialization.json.put import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/com/getcode/view/main/home/HomeViewModel.kt b/app/src/main/java/com/getcode/view/main/home/HomeViewModel.kt index b1f95b52b..f7a113060 100644 --- a/app/src/main/java/com/getcode/view/main/home/HomeViewModel.kt +++ b/app/src/main/java/com/getcode/view/main/home/HomeViewModel.kt @@ -242,6 +242,7 @@ class HomeViewModel @Inject constructor( .onEach { when (it) { is TwitterUser -> { + analytics.tipCardLinked() TopBarManager.showMessage( topBarMessage = TopBarManager.TopBarMessage( type = TopBarManager.TopBarMessageType.SUCCESS,