@@ -14,6 +14,7 @@ import com.flipcash.app.menu.MenuItem
1414import com.flipcash.app.onramp.ConfirmationEvent
1515import com.flipcash.app.onramp.OnRampAmount
1616import com.flipcash.app.onramp.OnRampAmountController
17+ import com.flipcash.app.userflags.UserFlagsCoordinator
1718import com.flipcash.features.menu.R
1819import com.flipcash.services.internal.model.thirdparty.OnRampProvider
1920import com.flipcash.services.internal.model.thirdparty.OnRampType
@@ -53,6 +54,7 @@ private val FullMenuList = buildList {
5354internal class MenuScreenViewModel @Inject constructor(
5455 private val resources : ResourceHelper ,
5556 userManager : UserManager ,
57+ userFlags : UserFlagsCoordinator ,
5658 authManager : AuthManager ,
5759 versionInfo : VersionInfo ,
5860 mnemonicManager : MnemonicManager ,
@@ -70,7 +72,7 @@ internal class MenuScreenViewModel @Inject constructor(
7072 val items : List <MenuItem <Event >> = FullMenuList ,
7173 val logoTapCount : Int = 0 ,
7274 val isStaff : Boolean = false ,
73- val preferredOnRampProvider : OnRampProvider ? = null ,
75+ val preferredOnRampProvider : OnRampProvider . Defined ? = null ,
7476 val showQuickActions : Boolean = false ,
7577 val flags : List <BetaFeature > = emptyList(),
7678 val unlockedBetaFeaturesManually : Boolean = false ,
@@ -81,7 +83,7 @@ internal class MenuScreenViewModel @Inject constructor(
8183 data object OnLogoTapped : Event
8284 data class OnBetaFeaturesUnlocked (val unlocked : Boolean ): Event
8385 data class OnFeatureFlagsUpdated (val flags : List <BetaFeature >): Event
84- data class OnPreferredOnRampProviderChanged (val provider : OnRampProvider ? ): Event
86+ data class OnPreferredOnRampProviderChanged (val provider : OnRampProvider . Defined ? ): Event
8587 data class OnAppVersionUpdated (val versionInfo : VersionInfo ) : Event
8688 data class OnStaffUserDetermined (val staff : Boolean ) : Event
8789 data class OpenScreen (val screen : AppRoute ) : Event
@@ -100,8 +102,8 @@ internal class MenuScreenViewModel @Inject constructor(
100102
101103 userManager.state
102104 .filter { it.authState is AuthState .LoggedInWithUser }
103- .mapNotNull { it.flags }
104- .map { it.isStaff }
105+ .flatMapLatest { userFlags.resolvedFlags }
106+ .mapNotNull { it.isStaff.effectiveValue }
105107 .onEach {
106108 dispatchEvent(Event .OnStaffUserDetermined (it))
107109 }.launchIn(viewModelScope)
@@ -116,8 +118,9 @@ internal class MenuScreenViewModel @Inject constructor(
116118
117119 userManager.state
118120 .filter { it.authState is AuthState .LoggedInWithUser }
119- .mapNotNull { it.flags }
120- .map { it.preferredOnRampProvider }
121+ .flatMapLatest { userFlags.resolvedFlags }
122+ .mapNotNull { it.preferredOnRampProvider.effectiveValue }
123+ .filterIsInstance<OnRampProvider .Defined >()
121124 .onEach { provider ->
122125 dispatchEvent(Event .OnPreferredOnRampProviderChanged (provider))
123126 }
0 commit comments