Skip to content

Commit d6c8879

Browse files
authored
Merge pull request #12641 from woocommerce/12189-woo-pos-m2-hide-pos-mode-for-ineligible-users
[Woo POS] Hide POS mode for ineligible users
2 parents 525e121 + 0e8113a commit d6c8879

File tree

8 files changed

+21
-41
lines changed

8 files changed

+21
-41
lines changed

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/moremenu/MoreMenuViewModel.kt

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import com.woocommerce.android.ui.payments.taptopay.isAvailable
3434
import com.woocommerce.android.ui.plans.domain.SitePlan
3535
import com.woocommerce.android.ui.plans.repository.SitePlanRepository
3636
import com.woocommerce.android.ui.woopos.WooPosIsEnabled
37-
import com.woocommerce.android.ui.woopos.WooPosIsFeatureFlagEnabled
3837
import com.woocommerce.android.util.WooLog
3938
import com.woocommerce.android.viewmodel.ResourceProvider
4039
import com.woocommerce.android.viewmodel.ScopedViewModel
@@ -71,7 +70,6 @@ class MoreMenuViewModel @Inject constructor(
7170
private val isGoogleForWooEnabled: IsGoogleForWooEnabled,
7271
private val hasGoogleAdsCampaigns: HasGoogleAdsCampaigns,
7372
private val isWooPosEnabled: WooPosIsEnabled,
74-
private val isWooPosFFEnabled: WooPosIsFeatureFlagEnabled,
7573
private val analyticsTrackerWrapper: AnalyticsTrackerWrapper
7674
) : ScopedViewModel(savedState) {
7775
private var storeHasGoogleAdsCampaigns = false
@@ -458,24 +456,17 @@ class MoreMenuViewModel @Inject constructor(
458456
.onStart { emit("") }
459457

460458
private fun checkFeaturesAvailability(): Flow<Map<MoreMenuItemButton.Type, MoreMenuItemButton.State>> {
461-
val initialState = MoreMenuItemButton.Type.entries.associateWith { MoreMenuItemButton.State.Loading }
462-
.toMutableMap()
459+
val initialState = MoreMenuItemButton.Type.entries.associateWith {
460+
MoreMenuItemButton.State.Loading
461+
}.toMutableMap()
463462

464-
val flows = mutableListOf(
463+
return listOf(
465464
doCheckAvailability(MoreMenuItemButton.Type.Blaze) { isBlazeEnabled() },
466465
doCheckAvailability(MoreMenuItemButton.Type.GoogleForWoo) { isGoogleForWooEnabled() },
467466
doCheckAvailability(MoreMenuItemButton.Type.Inbox) { moreMenuRepository.isInboxEnabled() },
468467
doCheckAvailability(MoreMenuItemButton.Type.Settings) { moreMenuRepository.isUpgradesEnabled() },
469-
)
470-
471-
// While this in development better to not show loading state for WooPos at all
472-
if (isWooPosFFEnabled()) {
473-
flows += doCheckAvailability(MoreMenuItemButton.Type.WooPos) { isWooPosEnabled() }
474-
} else {
475-
initialState[MoreMenuItemButton.Type.WooPos] = MoreMenuItemButton.State.Hidden
476-
}
477-
478-
return flows.merge()
468+
doCheckAvailability(MoreMenuItemButton.Type.WooPos) { isWooPosEnabled() }
469+
).merge()
479470
.map { update ->
480471
initialState[update.first] = update.second
481472
initialState

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/WooPosIsEnabled.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import com.woocommerce.android.ui.payments.cardreader.onboarding.CardReaderOnboa
66
import com.woocommerce.android.ui.payments.cardreader.onboarding.CardReaderOnboardingState
77
import com.woocommerce.android.ui.payments.cardreader.onboarding.PluginType
88
import com.woocommerce.android.util.GetWooCorePluginCachedVersion
9+
import com.woocommerce.android.util.IsRemoteFeatureFlagEnabled
10+
import com.woocommerce.android.util.RemoteFeatureFlag.WOO_POS
911
import org.wordpress.android.fluxc.model.SiteModel
1012
import org.wordpress.android.fluxc.model.payments.inperson.WCPaymentAccountResult
1113
import org.wordpress.android.fluxc.store.WCInPersonPaymentsStore
@@ -20,17 +22,17 @@ class WooPosIsEnabled @Inject constructor(
2022
private val selectedSite: SelectedSite,
2123
private val ippStore: WCInPersonPaymentsStore,
2224
private val isScreenSizeAllowed: WooPosIsScreenSizeAllowed,
23-
private val isFeatureFlagEnabled: WooPosIsFeatureFlagEnabled,
2425
private val getWooCoreVersion: GetWooCorePluginCachedVersion,
2526
private val cardReaderOnboardingChecker: CardReaderOnboardingChecker,
27+
private val isRemoteFeatureFlagEnabled: IsRemoteFeatureFlagEnabled,
2628
) {
2729
private var paymentAccountCache: HashMap<LocalSiteId, WCPaymentAccountResult> = hashMapOf()
2830

2931
@Suppress("ReturnCount")
3032
suspend operator fun invoke(): Boolean {
3133
val selectedSite = selectedSite.getOrNull() ?: return false
3234

33-
if (!isFeatureFlagEnabled()) return false
35+
if (!isRemoteFeatureFlagEnabled(WOO_POS)) return false
3436
if (!isScreenSizeAllowed()) return false
3537
if (!isWooCoreSupportsOrderAutoDraftsAndExtraPaymentsProps()) return false
3638

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/WooPosIsFeatureFlagEnabled.kt

Lines changed: 0 additions & 10 deletions
This file was deleted.

WooCommerce/src/main/kotlin/com/woocommerce/android/util/FeatureFlag.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import android.content.Context
66
* "Feature flags" are used to hide in-progress features from release versions
77
*/
88
enum class FeatureFlag {
9-
WOO_POS,
109
DB_DOWNGRADE,
1110
INBOX,
1211
WC_SHIPPING_BANNER,
@@ -25,7 +24,6 @@ enum class FeatureFlag {
2524
PackageUtils.isDebugBuild() || context != null && PackageUtils.isBetaBuild(context)
2625
}
2726

28-
WOO_POS,
2927
WC_SHIPPING_BANNER,
3028
BETTER_CUSTOMER_SEARCH_M2,
3129
ORDER_CREATION_AUTO_TAX_RATE,

WooCommerce/src/main/kotlin/com/woocommerce/android/util/IsRemoteFeatureFlagEnabled.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.woocommerce.android.util.RemoteFeatureFlag.LOCAL_NOTIFICATION_1D_AFTE
55
import com.woocommerce.android.util.RemoteFeatureFlag.LOCAL_NOTIFICATION_1D_BEFORE_FREE_TRIAL_EXPIRES
66
import com.woocommerce.android.util.RemoteFeatureFlag.LOCAL_NOTIFICATION_STORE_CREATION_READY
77
import com.woocommerce.android.util.RemoteFeatureFlag.WOO_BLAZE
8+
import com.woocommerce.android.util.RemoteFeatureFlag.WOO_POS
89
import javax.inject.Inject
910

1011
class IsRemoteFeatureFlagEnabled @Inject constructor(
@@ -15,6 +16,7 @@ class IsRemoteFeatureFlagEnabled @Inject constructor(
1516
LOCAL_NOTIFICATION_STORE_CREATION_READY,
1617
LOCAL_NOTIFICATION_1D_BEFORE_FREE_TRIAL_EXPIRES,
1718
LOCAL_NOTIFICATION_1D_AFTER_FREE_TRIAL_EXPIRES,
19+
WOO_POS,
1820
WOO_BLAZE ->
1921
PackageUtils.isDebugBuild() ||
2022
wpComRemoteFeatureFlagRepository.isRemoteFeatureFlagEnabled(featureFlag.remoteKey)

WooCommerce/src/main/kotlin/com/woocommerce/android/util/RemoteFeatureFlag.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ enum class RemoteFeatureFlag(val remoteKey: String) {
44
LOCAL_NOTIFICATION_STORE_CREATION_READY("woo_notification_store_creation_ready"),
55
LOCAL_NOTIFICATION_1D_BEFORE_FREE_TRIAL_EXPIRES("woo_notification_1d_before_free_trial_expires"),
66
LOCAL_NOTIFICATION_1D_AFTER_FREE_TRIAL_EXPIRES("woo_notification_1d_after_free_trial_expires"),
7-
WOO_BLAZE("woo_blaze")
7+
WOO_BLAZE("woo_blaze"),
8+
WOO_POS("woo_pos"),
89
}

WooCommerce/src/test/kotlin/com/woocommerce/android/ui/moremenu/MoreMenuViewModelTests.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import com.woocommerce.android.ui.payments.taptopay.TapToPayAvailabilityStatus
1313
import com.woocommerce.android.ui.plans.domain.SitePlan
1414
import com.woocommerce.android.ui.plans.repository.SitePlanRepository
1515
import com.woocommerce.android.ui.woopos.WooPosIsEnabled
16-
import com.woocommerce.android.ui.woopos.WooPosIsFeatureFlagEnabled
1716
import com.woocommerce.android.util.captureValues
1817
import com.woocommerce.android.util.runAndCaptureValues
1918
import com.woocommerce.android.viewmodel.BaseUnitTest
@@ -90,10 +89,6 @@ class MoreMenuViewModelTests : BaseUnitTest() {
9089

9190
private val analyticsTrackerWrapper: AnalyticsTrackerWrapper = mock()
9291

93-
private val isWooPosFFEnabled: WooPosIsFeatureFlagEnabled = mock {
94-
onBlocking { invoke() } doReturn true
95-
}
96-
9792
private val blazeCampaignsStore: BlazeCampaignsStore = mock()
9893

9994
private lateinit var viewModel: MoreMenuViewModel
@@ -116,7 +111,6 @@ class MoreMenuViewModelTests : BaseUnitTest() {
116111
isGoogleForWooEnabled = isGoogleForWooEnabled,
117112
hasGoogleAdsCampaigns = hasGoogleAdsCampaigns,
118113
isWooPosEnabled = isWooPosEnabled,
119-
isWooPosFFEnabled = isWooPosFFEnabled,
120114
analyticsTrackerWrapper = analyticsTrackerWrapper,
121115
)
122116
}

WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/WooPosIsEnabledTest.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import com.woocommerce.android.ui.payments.cardreader.onboarding.CardReaderOnboa
55
import com.woocommerce.android.ui.payments.cardreader.onboarding.CardReaderOnboardingState
66
import com.woocommerce.android.ui.payments.cardreader.onboarding.PluginType
77
import com.woocommerce.android.util.GetWooCorePluginCachedVersion
8+
import com.woocommerce.android.util.IsRemoteFeatureFlagEnabled
9+
import com.woocommerce.android.util.RemoteFeatureFlag.WOO_POS
810
import com.woocommerce.android.viewmodel.BaseUnitTest
911
import kotlinx.coroutines.ExperimentalCoroutinesApi
1012
import org.junit.Before
@@ -30,7 +32,7 @@ class WooPosIsEnabledTest : BaseUnitTest() {
3032
private val ippStore: WCInPersonPaymentsStore = mock()
3133
private val cardReaderOnboardingChecker: CardReaderOnboardingChecker = mock()
3234
private val isScreenSizeAllowed: WooPosIsScreenSizeAllowed = mock()
33-
private val isFeatureFlagEnabled: WooPosIsFeatureFlagEnabled = mock()
35+
private val isRemoteFeatureFlagEnabled: IsRemoteFeatureFlagEnabled = mock()
3436
private val getWooCoreVersion: GetWooCorePluginCachedVersion = mock {
3537
on { invoke() }.thenReturn("6.6.0")
3638
}
@@ -45,14 +47,14 @@ class WooPosIsEnabledTest : BaseUnitTest() {
4547
whenever(cardReaderOnboardingChecker.getOnboardingState()).thenReturn(onboardingCompleted)
4648
whenever(isScreenSizeAllowed()).thenReturn(true)
4749
whenever(ippStore.loadAccount(any(), any())).thenReturn(buildPaymentAccountResult())
48-
whenever(isFeatureFlagEnabled()).thenReturn(true)
50+
whenever(isRemoteFeatureFlagEnabled(WOO_POS)).thenReturn(true)
4951

5052
sut = WooPosIsEnabled(
5153
selectedSite = selectedSite,
5254
ippStore = ippStore,
5355
cardReaderOnboardingChecker = cardReaderOnboardingChecker,
5456
isScreenSizeAllowed = isScreenSizeAllowed,
55-
isFeatureFlagEnabled = isFeatureFlagEnabled,
57+
isRemoteFeatureFlagEnabled = isRemoteFeatureFlagEnabled,
5658
getWooCoreVersion = getWooCoreVersion,
5759
)
5860
}
@@ -67,7 +69,7 @@ class WooPosIsEnabledTest : BaseUnitTest() {
6769
whenever(onboardingCompleted.preferredPlugin).thenReturn(PluginType.WOOCOMMERCE_PAYMENTS)
6870
whenever(ippStore.loadAccount(any(), any()))
6971
.thenReturn(buildPaymentAccountResult(countryCode = "US", defaultCurrency = "USD"))
70-
whenever(isFeatureFlagEnabled()).thenReturn(true)
72+
whenever(isRemoteFeatureFlagEnabled(WOO_POS)).thenReturn(true)
7173

7274
assertTrue(sut())
7375
}
@@ -129,7 +131,7 @@ class WooPosIsEnabledTest : BaseUnitTest() {
129131

130132
@Test
131133
fun `given feature flag disabled, then return false`() = testBlocking {
132-
whenever(isFeatureFlagEnabled.invoke()).thenReturn(false)
134+
whenever(isRemoteFeatureFlagEnabled.invoke(WOO_POS)).thenReturn(false)
133135
assertFalse(sut())
134136
}
135137

0 commit comments

Comments
 (0)