diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductListFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductListFragment.kt index c69f7ceca7c9..084ef52d3a61 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductListFragment.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductListFragment.kt @@ -101,6 +101,7 @@ class ProductListFragment : private val skeletonView = SkeletonView() private var searchMenuItem: MenuItem? = null + private var scanBarcodeMenuItem: MenuItem? = null private var searchView: SearchView? = null private var trashProductUndoSnack: Snackbar? = null @@ -252,6 +253,7 @@ class ProductListFragment : searchMenuItem = menu.findItem(R.id.menu_search) searchView = searchMenuItem?.actionView as SearchView? searchView?.queryHint = getString(R.string.product_search_hint) + scanBarcodeMenuItem = menu.findItem(R.id.menu_scan_barcode) } override fun onPrepareMenu(menu: Menu) { @@ -278,6 +280,7 @@ class ProductListFragment : } } } + scanBarcodeMenuItem?.isVisible = !productListViewModel.isSquarePluginActive() } private fun getSearchQueryHint(): String { diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductListViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductListViewModel.kt index 5e6dc600a5f3..b9fa601ebc84 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductListViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductListViewModel.kt @@ -23,6 +23,7 @@ import com.woocommerce.android.extensions.EXPAND_COLLAPSE_ANIMATION_DURATION_MIL import com.woocommerce.android.model.Product import com.woocommerce.android.model.RequestResult import com.woocommerce.android.tools.NetworkStatus +import com.woocommerce.android.tools.SelectedSite import com.woocommerce.android.ui.media.MediaFileUploadHandler import com.woocommerce.android.ui.products.ProductListViewModel.ProductListEvent.ScrollToTop import com.woocommerce.android.ui.products.ProductListViewModel.ProductListEvent.SelectProducts @@ -54,6 +55,7 @@ import org.wordpress.android.fluxc.store.WCProductStore.ProductSorting.DATE_DESC import org.wordpress.android.fluxc.store.WCProductStore.ProductSorting.TITLE_ASC import org.wordpress.android.fluxc.store.WCProductStore.ProductSorting.TITLE_DESC import org.wordpress.android.fluxc.store.WCProductStore.SkuSearchOptions +import org.wordpress.android.fluxc.store.WooCommerceStore import javax.inject.Inject @HiltViewModel @@ -62,7 +64,9 @@ class ProductListViewModel @Inject constructor( private val productRepository: ProductListRepository, private val networkStatus: NetworkStatus, mediaFileUploadHandler: MediaFileUploadHandler, - private val analyticsTracker: AnalyticsTrackerWrapper + private val analyticsTracker: AnalyticsTrackerWrapper, + private val selectedSite: SelectedSite, + private val wooCommerceStore: WooCommerceStore, ) : ScopedViewModel(savedState) { companion object { private const val KEY_PRODUCT_FILTER_OPTIONS = "key_product_filter_options" @@ -640,6 +644,14 @@ class ProductListViewModel @Inject constructor( triggerEvent(ShowUpdateDialog.Status(selectedProductsRemoteIds)) } + fun isSquarePluginActive(): Boolean { + val plugin = wooCommerceStore.getSitePlugin( + site = selectedSite.get(), + plugin = WooCommerceStore.WooPlugin.WOO_SQUARE + ) + return plugin != null && plugin.isActive + } + object OnProductSortingChanged @Parcelize diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductListViewModelTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductListViewModelTest.kt index 2af2c70546f4..b3372da4f58f 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductListViewModelTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductListViewModelTest.kt @@ -16,6 +16,7 @@ import com.woocommerce.android.extensions.takeIfNotEqualTo import com.woocommerce.android.model.Product import com.woocommerce.android.model.RequestResult import com.woocommerce.android.tools.NetworkStatus +import com.woocommerce.android.tools.SelectedSite import com.woocommerce.android.ui.media.MediaFileUploadHandler import com.woocommerce.android.ui.products.ProductListViewModel.ProductListEvent.ShowProductFilterScreen import com.woocommerce.android.ui.products.ProductListViewModel.ProductListEvent.ShowProductSortingBottomSheet @@ -39,6 +40,7 @@ import org.mockito.kotlin.times import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import org.wordpress.android.fluxc.store.WCProductStore.ProductSorting +import org.wordpress.android.fluxc.store.WooCommerceStore @ExperimentalCoroutinesApi class ProductListViewModelTest : BaseUnitTest() { @@ -48,6 +50,8 @@ class ProductListViewModelTest : BaseUnitTest() { private val analyticsTracker: AnalyticsTrackerWrapper = mock() private val savedStateHandle: SavedStateHandle = SavedStateHandle() + private val wooCommerceStore: WooCommerceStore = mock() + private val selectedSite: SelectedSite = mock() private val productList = ProductTestUtils.generateProductList() private lateinit var viewModel: ProductListViewModel @@ -65,7 +69,9 @@ class ProductListViewModelTest : BaseUnitTest() { productRepository, networkStatus, mediaFileUploadHandler, - analyticsTracker + analyticsTracker, + selectedSite, + wooCommerceStore ) ) }