From 962a481c9aceebb8c99e5b391351657fd70315d9 Mon Sep 17 00:00:00 2001 From: Nick Bradbury Date: Thu, 22 Jan 2026 13:37:35 -0500 Subject: [PATCH 1/9] Removed image from scan empty view --- .../android/ui/jetpack/scan/ScanFragment.kt | 42 ++++++++----------- .../android/ui/jetpack/scan/ScanViewModel.kt | 20 --------- .../items/listitem/SiteItemsViewModelSlice.kt | 8 ++-- 3 files changed, 23 insertions(+), 47 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/ScanFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/ScanFragment.kt index 6346dbf378a8..027eb34b1297 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/ScanFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/ScanFragment.kt @@ -30,7 +30,6 @@ import org.wordpress.android.ui.pages.SnackbarMessageHolder import org.wordpress.android.ui.prefs.EmptyViewRecyclerView import org.wordpress.android.ui.prefs.experimentalfeatures.ExperimentalFeatures import org.wordpress.android.ui.utils.UiHelpers -import org.wordpress.android.util.ColorUtils import org.wordpress.android.util.extensions.getSerializableCompat import org.wordpress.android.util.extensions.getSerializableExtraCompat import org.wordpress.android.util.image.ImageManager @@ -94,28 +93,27 @@ class ScanFragment : Fragment(R.layout.scan_fragment) { private fun ScanFragmentBinding.setupObservers() { viewModel.uiState.observe( - viewLifecycleOwner, - { uiState -> - uiHelpers.updateVisibility(progressBar, uiState.loadingVisible) - uiHelpers.updateVisibility(recyclerView, uiState.contentVisible) - uiHelpers.updateVisibility(actionableEmptyView, uiState.errorVisible) - - when (uiState) { - is ContentUiState -> updateContentLayout(uiState) - - is FullScreenLoadingUiState -> { // Do Nothing - } - - is ErrorUiState.NoConnection, - is ErrorUiState.GenericRequestFailed, - is ErrorUiState.ScanRequestFailed, - is ErrorUiState.MultisiteNotSupported, - is ErrorUiState.VaultPressActiveOnSite -> updateErrorLayout(uiState as ErrorUiState) + viewLifecycleOwner + ) { uiState -> + uiHelpers.updateVisibility(progressBar, uiState.loadingVisible) + uiHelpers.updateVisibility(recyclerView, uiState.contentVisible) + uiHelpers.updateVisibility(actionableEmptyView, uiState.errorVisible) + + when (uiState) { + is ContentUiState -> updateContentLayout(uiState) + + is FullScreenLoadingUiState -> { // Do Nothing } + + is ErrorUiState.NoConnection, + is ErrorUiState.GenericRequestFailed, + is ErrorUiState.ScanRequestFailed, + is ErrorUiState.MultisiteNotSupported, + is ErrorUiState.VaultPressActiveOnSite -> updateErrorLayout(uiState) } - ) + } - viewModel.snackbarEvents.observeEvent(viewLifecycleOwner, { it.showSnackbar() }) + viewModel.snackbarEvents.observeEvent(viewLifecycleOwner) { it.showSnackbar() } viewModel.navigationEvents.observeEvent( viewLifecycleOwner @@ -147,10 +145,6 @@ class ScanFragment : Fragment(R.layout.scan_fragment) { private fun ScanFragmentBinding.updateErrorLayout(state: ErrorUiState) { uiHelpers.setTextOrHide(actionableEmptyView.title, state.title) uiHelpers.setTextOrHide(actionableEmptyView.subtitle, state.subtitle) - actionableEmptyView.image.setImageResource(state.image) - state.imageColorResId?.let { - ColorUtils.setImageResourceWithTint(actionableEmptyView.image, state.image, it) - } ?: actionableEmptyView.image.setImageResource(state.image) state.buttonText?.let { uiHelpers.setTextOrHide(actionableEmptyView.button, state.buttonText) } state.action?.let { action -> actionableEmptyView.button.setOnClickListener { action.invoke() } } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/ScanViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/ScanViewModel.kt index c580a91eb9b2..3da14e4196aa 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/ScanViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/ScanViewModel.kt @@ -1,7 +1,5 @@ package org.wordpress.android.ui.jetpack.scan -import androidx.annotation.ColorRes -import androidx.annotation.DrawableRes import androidx.annotation.StringRes import androidx.lifecycle.LiveData import androidx.lifecycle.MediatorLiveData @@ -366,53 +364,35 @@ class ScanViewModel @Inject constructor( data class ContentUiState(val items: List) : UiState(contentVisible = true) sealed class ErrorUiState : UiState(errorVisible = true) { - abstract val image: Int - open val imageColorResId: Int? = null abstract val title: UiString abstract val subtitle: UiString open val buttonText: UiString? = null open val action: (() -> Unit)? = null data class NoConnection(override val action: () -> Unit) : ErrorUiState() { - @DrawableRes - override val image = R.drawable.img_illustration_cloud_off_152dp override val title = UiStringRes(R.string.scan_no_network_title) override val subtitle = UiStringRes(R.string.scan_no_network_subtitle) override val buttonText = UiStringRes(R.string.retry) } data class GenericRequestFailed(override val action: () -> Unit) : ErrorUiState() { - @DrawableRes - override val image = R.drawable.img_illustration_cloud_off_152dp override val title = UiStringRes(R.string.scan_request_failed_title) override val subtitle = UiStringRes(R.string.scan_request_failed_subtitle) override val buttonText = UiStringRes(R.string.contact_support) } data class ScanRequestFailed(override val action: () -> Unit) : ErrorUiState() { - @DrawableRes - override val image = R.drawable.img_illustration_empty_results_216dp override val title = UiStringRes(R.string.scan_start_request_failed_title) override val subtitle = UiStringRes(R.string.scan_start_request_failed_subtitle) override val buttonText = UiStringRes(R.string.contact_support) } object MultisiteNotSupported : ErrorUiState() { - @DrawableRes - override val image = R.drawable.ic_baseline_security_white_24dp - - @ColorRes - override val imageColorResId = R.color.gray override val title = UiStringRes(R.string.scan_multisite_not_supported_title) override val subtitle = UiStringRes(R.string.scan_multisite_not_supported_subtitle) } data class VaultPressActiveOnSite(override val action: () -> Unit) : ErrorUiState() { - @DrawableRes - override val image = R.drawable.ic_shield_warning_white - - @ColorRes - override val imageColorResId = R.color.error_60 override val title = UiStringRes(R.string.scan_vault_press_active_on_site_title) override val subtitle = UiStringRes(R.string.scan_vault_press_active_on_site_subtitle) override val buttonText = UiStringRes(R.string.scan_vault_press_active_on_site_button_text) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt b/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt index 57e54f3533e4..a18feca097fc 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt @@ -44,13 +44,14 @@ class SiteItemsViewModelSlice @Inject constructor( suspend fun buildSiteItems( site: SiteModel ) { + // TODO: Remove scanAvailable = true before merging - this is for testing only _uiModel.postValue( siteItemsBuilder.build( getParams( shouldEnableFocusPoints = false, site = site, backupAvailable = false, - scanAvailable = false + scanAvailable = true ) ) ) @@ -60,13 +61,14 @@ class SiteItemsViewModelSlice @Inject constructor( private suspend fun rebuildSiteItemsForJetpackCapabilities(site: SiteModel) { jetpackCapabilitiesUseCase.getJetpackPurchasedProducts(site.siteId).collect { purchasedProducts -> // if the site has scan or backup enabled, then only rebuild the site items - if(purchasedProducts.scan || purchasedProducts.backup) { + // TODO: Remove scanAvailable = true before merging - this is for testing only + if(purchasedProducts.scan || purchasedProducts.backup || true) { val items = siteItemsBuilder.build( getParams( shouldEnableFocusPoints = false, site = site, backupAvailable = purchasedProducts.backup, - scanAvailable = purchasedProducts.scan && !site.isWPCom && !site.isWPComAtomic + scanAvailable = true ) ) _uiModel.postValue(items) From cc5bb4f4120f7dfd2cb944e24566187601e32240 Mon Sep 17 00:00:00 2001 From: Nick Bradbury Date: Thu, 22 Jan 2026 13:44:12 -0500 Subject: [PATCH 2/9] Shortened strings --- WordPress/src/main/res/layout/scan_fragment.xml | 1 - WordPress/src/main/res/values/strings.xml | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/WordPress/src/main/res/layout/scan_fragment.xml b/WordPress/src/main/res/layout/scan_fragment.xml index 9f95381402d1..2722d2670eb3 100644 --- a/WordPress/src/main/res/layout/scan_fragment.xml +++ b/WordPress/src/main/res/layout/scan_fragment.xml @@ -11,7 +11,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" - app:aevImage="@drawable/img_illustration_empty_results_216dp" app:aevTitle="@string/loading" tools:visibility="visible" /> diff --git a/WordPress/src/main/res/values/strings.xml b/WordPress/src/main/res/values/strings.xml index 6665572faaca..aa457924908a 100644 --- a/WordPress/src/main/res/values/strings.xml +++ b/WordPress/src/main/res/values/strings.xml @@ -1263,11 +1263,11 @@ @string/no_network_title @string/no_network_message Something went wrong - @string/request_failed_message + Failed to start the scan @string/scan_request_failed_title - Jetpack Scan couldn\'t complete a scan of your site. Please check to see if your site is down – if it\'s not, try again. If it is, or if Jetpack Scan is still having problems, contact our support team. + Jetpack Scan couldn\'t complete a scan of your site. Please check to see if your site is down. WordPress multisites are not supported - We\'re sorry, Jetpack Scan is not compatible with multisite WordPress installations at this time. + We\'re sorry, Jetpack Scan is not compatible with multisite WordPress installations Your site has VaultPress Your site already is protected by VaultPress. You can find a link to your VaultPress dashboard below. Visit Dashboard From 24e00152f352b827c40e22cb7ce08f7805002320 Mon Sep 17 00:00:00 2001 From: Nick Bradbury Date: Thu, 22 Jan 2026 13:47:33 -0500 Subject: [PATCH 3/9] Revert temporary scan testing code Co-Authored-By: Claude Opus 4.5 --- .../ui/mysite/items/listitem/SiteItemsViewModelSlice.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt b/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt index a18feca097fc..57e54f3533e4 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt @@ -44,14 +44,13 @@ class SiteItemsViewModelSlice @Inject constructor( suspend fun buildSiteItems( site: SiteModel ) { - // TODO: Remove scanAvailable = true before merging - this is for testing only _uiModel.postValue( siteItemsBuilder.build( getParams( shouldEnableFocusPoints = false, site = site, backupAvailable = false, - scanAvailable = true + scanAvailable = false ) ) ) @@ -61,14 +60,13 @@ class SiteItemsViewModelSlice @Inject constructor( private suspend fun rebuildSiteItemsForJetpackCapabilities(site: SiteModel) { jetpackCapabilitiesUseCase.getJetpackPurchasedProducts(site.siteId).collect { purchasedProducts -> // if the site has scan or backup enabled, then only rebuild the site items - // TODO: Remove scanAvailable = true before merging - this is for testing only - if(purchasedProducts.scan || purchasedProducts.backup || true) { + if(purchasedProducts.scan || purchasedProducts.backup) { val items = siteItemsBuilder.build( getParams( shouldEnableFocusPoints = false, site = site, backupAvailable = purchasedProducts.backup, - scanAvailable = true + scanAvailable = purchasedProducts.scan && !site.isWPCom && !site.isWPComAtomic ) ) _uiModel.postValue(items) From ba67fc97f126d7989e20a29217a4b1ae331c3ab9 Mon Sep 17 00:00:00 2001 From: Nick Bradbury Date: Thu, 22 Jan 2026 13:51:25 -0500 Subject: [PATCH 4/9] Remove image assertions from ScanViewModelTest The image and imageColorResId properties were removed from ErrorUiState, so the corresponding test assertions need to be removed as well. Co-Authored-By: Claude Opus 4.5 --- .../wordpress/android/ui/jetpack/scan/ScanViewModelTest.kt | 7 ------- 1 file changed, 7 deletions(-) diff --git a/WordPress/src/test/java/org/wordpress/android/ui/jetpack/scan/ScanViewModelTest.kt b/WordPress/src/test/java/org/wordpress/android/ui/jetpack/scan/ScanViewModelTest.kt index f6bce1194074..362302fe9a11 100644 --- a/WordPress/src/test/java/org/wordpress/android/ui/jetpack/scan/ScanViewModelTest.kt +++ b/WordPress/src/test/java/org/wordpress/android/ui/jetpack/scan/ScanViewModelTest.kt @@ -181,7 +181,6 @@ class ScanViewModelTest : BaseUnitTest() { val error = observers.uiStates.last() as ErrorUiState with(error) { - assertThat(image).isEqualTo(R.drawable.img_illustration_cloud_off_152dp) assertThat(title).isEqualTo(UiStringRes(R.string.scan_no_network_title)) assertThat(subtitle).isEqualTo(UiStringRes(R.string.scan_no_network_subtitle)) assertThat(buttonText).isEqualTo(UiStringRes(R.string.retry)) @@ -220,7 +219,6 @@ class ScanViewModelTest : BaseUnitTest() { val state = observers.uiStates.last() as ErrorUiState with(state) { - assertThat(image).isEqualTo(R.drawable.img_illustration_cloud_off_152dp) assertThat(title).isEqualTo(UiStringRes(R.string.scan_request_failed_title)) assertThat(subtitle).isEqualTo(UiStringRes(R.string.scan_request_failed_subtitle)) assertThat(buttonText).isEqualTo(UiStringRes(R.string.contact_support)) @@ -326,8 +324,6 @@ class ScanViewModelTest : BaseUnitTest() { val state = observers.uiStates.last() as ErrorUiState with(state) { - assertThat(image).isEqualTo(R.drawable.ic_baseline_security_white_24dp) - assertThat(imageColorResId).isEqualTo(R.color.gray) assertThat(title).isEqualTo(UiStringRes(R.string.scan_multisite_not_supported_title)) assertThat(subtitle).isEqualTo(UiStringRes(R.string.scan_multisite_not_supported_subtitle)) } @@ -352,8 +348,6 @@ class ScanViewModelTest : BaseUnitTest() { val state = observers.uiStates.last() as ErrorUiState with(state) { - assertThat(image).isEqualTo(R.drawable.ic_shield_warning_white) - assertThat(imageColorResId).isEqualTo(R.color.error_60) assertThat(title).isEqualTo(UiStringRes(R.string.scan_vault_press_active_on_site_title)) assertThat(subtitle).isEqualTo(UiStringRes(R.string.scan_vault_press_active_on_site_subtitle)) } @@ -446,7 +440,6 @@ class ScanViewModelTest : BaseUnitTest() { val errorState = observers.uiStates.last() as ErrorUiState with(errorState) { - assertThat(image).isEqualTo(R.drawable.img_illustration_empty_results_216dp) assertThat(title).isEqualTo(UiStringRes(R.string.scan_start_request_failed_title)) assertThat(subtitle).isEqualTo(UiStringRes(R.string.scan_start_request_failed_subtitle)) assertThat(buttonText).isEqualTo(UiStringRes(R.string.contact_support)) From 5036c55975fb739ae62c578ebc0c30e641b9886c Mon Sep 17 00:00:00 2001 From: Nick Bradbury Date: Thu, 22 Jan 2026 14:07:40 -0500 Subject: [PATCH 5/9] Removed image from ScanHistoryFragment.kt --- .../ui/jetpack/scan/history/ScanHistoryFragment.kt | 3 +-- .../ui/jetpack/scan/history/ScanHistoryViewModel.kt | 8 -------- .../mysite/items/listitem/SiteItemsViewModelSlice.kt | 10 +++++++--- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/history/ScanHistoryFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/history/ScanHistoryFragment.kt index d026838b50bb..86de81b541ce 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/history/ScanHistoryFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/history/ScanHistoryFragment.kt @@ -96,8 +96,7 @@ class ScanHistoryFragment : Fragment(R.layout.scan_history_fragment), MenuProvid private fun FullscreenErrorWithRetryBinding.updateErrorLayout(uiState: ErrorUiState) { uiHelpers.setTextOrHide(errorTitle, uiState.title) - uiHelpers.updateVisibility(errorImage, true) - errorImage.setImageResource(uiState.img) + uiHelpers.updateVisibility(errorImage, false) errorRetry.setOnClickListener { uiState.retry.invoke() } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/history/ScanHistoryViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/history/ScanHistoryViewModel.kt index 830f16fdcd75..f6378dd6a79e 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/history/ScanHistoryViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/scan/history/ScanHistoryViewModel.kt @@ -2,7 +2,6 @@ package org.wordpress.android.ui.jetpack.scan.history import android.annotation.SuppressLint import android.os.Parcelable -import androidx.annotation.DrawableRes import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import dagger.hilt.android.lifecycle.HiltViewModel @@ -90,21 +89,14 @@ class ScanHistoryViewModel @Inject constructor( sealed class ErrorUiState : UiState(errorVisible = true) { abstract val title: UiString - abstract val img: Int abstract val retry: () -> Unit data class NoConnection(override val retry: () -> Unit) : ErrorUiState() { override val title: UiString = UiStringRes(R.string.scan_history_no_connection) - - @DrawableRes - override val img: Int = R.drawable.img_illustration_cloud_off_152dp } data class RequestFailed(override val retry: () -> Unit) : ErrorUiState() { override val title: UiString = UiStringRes(R.string.scan_history_request_failed) - - @DrawableRes - override val img: Int = R.drawable.img_illustration_cloud_off_152dp } } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt b/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt index 57e54f3533e4..f64fbb0ea3ba 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt @@ -44,29 +44,33 @@ class SiteItemsViewModelSlice @Inject constructor( suspend fun buildSiteItems( site: SiteModel ) { + // TODO: Remove scanAvailable = true before merging - this is for testing only + @Suppress("ForbiddenComment") _uiModel.postValue( siteItemsBuilder.build( getParams( shouldEnableFocusPoints = false, site = site, backupAvailable = false, - scanAvailable = false + scanAvailable = true ) ) ) rebuildSiteItemsForJetpackCapabilities(site) } + // TODO: Remove scanAvailable = true before merging - this is for testing only + @Suppress("ForbiddenComment") private suspend fun rebuildSiteItemsForJetpackCapabilities(site: SiteModel) { jetpackCapabilitiesUseCase.getJetpackPurchasedProducts(site.siteId).collect { purchasedProducts -> // if the site has scan or backup enabled, then only rebuild the site items - if(purchasedProducts.scan || purchasedProducts.backup) { + if(purchasedProducts.scan || purchasedProducts.backup || true) { val items = siteItemsBuilder.build( getParams( shouldEnableFocusPoints = false, site = site, backupAvailable = purchasedProducts.backup, - scanAvailable = purchasedProducts.scan && !site.isWPCom && !site.isWPComAtomic + scanAvailable = true ) ) _uiModel.postValue(items) From e06167ef66ac6638b929ee6e39b109f00f1fa90e Mon Sep 17 00:00:00 2001 From: Nick Bradbury Date: Thu, 22 Jan 2026 14:28:49 -0500 Subject: [PATCH 6/9] Fixed "forbidden" TODO --- .../ui/mysite/items/listitem/SiteItemsViewModelSlice.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt b/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt index f64fbb0ea3ba..8b3576b229d5 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt @@ -44,7 +44,7 @@ class SiteItemsViewModelSlice @Inject constructor( suspend fun buildSiteItems( site: SiteModel ) { - // TODO: Remove scanAvailable = true before merging - this is for testing only + // TODO Remove scanAvailable = true before merging - this is for testing only @Suppress("ForbiddenComment") _uiModel.postValue( siteItemsBuilder.build( @@ -59,7 +59,7 @@ class SiteItemsViewModelSlice @Inject constructor( rebuildSiteItemsForJetpackCapabilities(site) } - // TODO: Remove scanAvailable = true before merging - this is for testing only + // TODO Remove scanAvailable = true before merging - this is for testing only @Suppress("ForbiddenComment") private suspend fun rebuildSiteItemsForJetpackCapabilities(site: SiteModel) { jetpackCapabilitiesUseCase.getJetpackPurchasedProducts(site.siteId).collect { purchasedProducts -> From 248b22bfb0ee0004d0db8d4336865e70cf67c02b Mon Sep 17 00:00:00 2001 From: Nick Bradbury Date: Thu, 22 Jan 2026 14:38:08 -0500 Subject: [PATCH 7/9] Remove unused error_60 color and update tests for temporary scan change - Remove unused error_60 color from colors_semantic.xml - Update SiteItemsViewModelSliceTest to match temporary scanAvailable=true behavior with TODO comments to revert before merging Co-Authored-By: Claude Opus 4.5 --- WordPress/src/main/res/values/colors_semantic.xml | 1 - .../items/listitem/SiteItemsViewModelSliceTest.kt | 13 ++++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/WordPress/src/main/res/values/colors_semantic.xml b/WordPress/src/main/res/values/colors_semantic.xml index 24f34506645f..d1fbd164bf4c 100644 --- a/WordPress/src/main/res/values/colors_semantic.xml +++ b/WordPress/src/main/res/values/colors_semantic.xml @@ -6,7 +6,6 @@ @color/red_50 @color/red_50 - @color/red_60 @color/gray_50 @color/gray_0 diff --git a/WordPress/src/test/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSliceTest.kt b/WordPress/src/test/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSliceTest.kt index 272428622985..81f775a0e257 100644 --- a/WordPress/src/test/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSliceTest.kt +++ b/WordPress/src/test/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSliceTest.kt @@ -106,6 +106,8 @@ class SiteItemsViewModelSliceTest : BaseUnitTest() { ) } + // TODO: Revert atLeast(2) to times(1) before merging - temporary change for scan testing + @Suppress("ForbiddenComment") @Test fun `when site blaze ineligible, then siteItemsBuilder build is called with blaze false`() = test { // Given @@ -119,10 +121,12 @@ class SiteItemsViewModelSliceTest : BaseUnitTest() { advanceUntilIdle() // Then - verify(siteItemsBuilder).build(captor.capture()) + verify(siteItemsBuilder, atLeast(2)).build(captor.capture()) assertThat(captor.lastValue.isBlazeEligible).isTrue() } + // TODO: Revert atLeast(2) to times(1) before merging - temporary change for scan testing + @Suppress("ForbiddenComment") @Test fun `when site blaze ineligible, then siteItemsBuilder build is called with blaze true`() = test { // Given @@ -131,12 +135,15 @@ class SiteItemsViewModelSliceTest : BaseUnitTest() { // When siteItemsViewModelSlice.buildSiteItems(site = site) + advanceUntilIdle() // Then - verify(siteItemsBuilder).build(captor.capture()) + verify(siteItemsBuilder, atLeast(2)).build(captor.capture()) assertThat(captor.lastValue.isBlazeEligible).isFalse() } + // TODO: Revert scanAvailable assertions before merging - temporary change for scan testing + @Suppress("ForbiddenComment") @Test fun `when scan is eligible, then siteItemsBuilder build is called with scan true`() = test { // Given @@ -149,7 +156,7 @@ class SiteItemsViewModelSliceTest : BaseUnitTest() { // Then verify(siteItemsBuilder, atLeast(2)).build(captor.capture()) - assertThat(captor.firstValue.scanAvailable).isFalse() + assertThat(captor.firstValue.scanAvailable).isTrue() assertThat(captor.secondValue.scanAvailable).isTrue() } From c3b8317505bc4921e7849aacc2818a5ddf7a3085 Mon Sep 17 00:00:00 2001 From: Nick Bradbury Date: Fri, 23 Jan 2026 10:19:57 -0500 Subject: [PATCH 8/9] Remove temporary scan testing code from SiteItemsViewModelSlice Co-Authored-By: Claude Opus 4.5 --- .../mysite/items/listitem/SiteItemsViewModelSlice.kt | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt b/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt index 8b3576b229d5..c6adba59e38e 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSlice.kt @@ -44,38 +44,34 @@ class SiteItemsViewModelSlice @Inject constructor( suspend fun buildSiteItems( site: SiteModel ) { - // TODO Remove scanAvailable = true before merging - this is for testing only - @Suppress("ForbiddenComment") _uiModel.postValue( siteItemsBuilder.build( getParams( shouldEnableFocusPoints = false, site = site, backupAvailable = false, - scanAvailable = true + scanAvailable = false ) ) ) rebuildSiteItemsForJetpackCapabilities(site) } - // TODO Remove scanAvailable = true before merging - this is for testing only - @Suppress("ForbiddenComment") private suspend fun rebuildSiteItemsForJetpackCapabilities(site: SiteModel) { jetpackCapabilitiesUseCase.getJetpackPurchasedProducts(site.siteId).collect { purchasedProducts -> // if the site has scan or backup enabled, then only rebuild the site items - if(purchasedProducts.scan || purchasedProducts.backup || true) { + if (purchasedProducts.scan || purchasedProducts.backup) { val items = siteItemsBuilder.build( getParams( shouldEnableFocusPoints = false, site = site, backupAvailable = purchasedProducts.backup, - scanAvailable = true + scanAvailable = purchasedProducts.scan ) ) _uiModel.postValue(items) } - } // end collect + } } fun getParams( From 28f1cffeb1cf1950b1e4924076b6dc05e36680a8 Mon Sep 17 00:00:00 2001 From: Nick Bradbury Date: Fri, 23 Jan 2026 10:29:58 -0500 Subject: [PATCH 9/9] Remove temporary scan testing code from SiteItemsViewModelSliceTest Co-Authored-By: Claude Opus 4.5 --- .../items/listitem/SiteItemsViewModelSliceTest.kt | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/WordPress/src/test/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSliceTest.kt b/WordPress/src/test/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSliceTest.kt index 81f775a0e257..9f917be50133 100644 --- a/WordPress/src/test/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSliceTest.kt +++ b/WordPress/src/test/java/org/wordpress/android/ui/mysite/items/listitem/SiteItemsViewModelSliceTest.kt @@ -106,8 +106,6 @@ class SiteItemsViewModelSliceTest : BaseUnitTest() { ) } - // TODO: Revert atLeast(2) to times(1) before merging - temporary change for scan testing - @Suppress("ForbiddenComment") @Test fun `when site blaze ineligible, then siteItemsBuilder build is called with blaze false`() = test { // Given @@ -115,18 +113,15 @@ class SiteItemsViewModelSliceTest : BaseUnitTest() { whenever(blazeFeatureUtils.isSiteBlazeEligible(site)).thenReturn(true) val captor = argumentCaptor() - // When siteItemsViewModelSlice.buildSiteItems(site = site) advanceUntilIdle() // Then - verify(siteItemsBuilder, atLeast(2)).build(captor.capture()) + verify(siteItemsBuilder).build(captor.capture()) assertThat(captor.lastValue.isBlazeEligible).isTrue() } - // TODO: Revert atLeast(2) to times(1) before merging - temporary change for scan testing - @Suppress("ForbiddenComment") @Test fun `when site blaze ineligible, then siteItemsBuilder build is called with blaze true`() = test { // Given @@ -138,12 +133,10 @@ class SiteItemsViewModelSliceTest : BaseUnitTest() { advanceUntilIdle() // Then - verify(siteItemsBuilder, atLeast(2)).build(captor.capture()) + verify(siteItemsBuilder).build(captor.capture()) assertThat(captor.lastValue.isBlazeEligible).isFalse() } - // TODO: Revert scanAvailable assertions before merging - temporary change for scan testing - @Suppress("ForbiddenComment") @Test fun `when scan is eligible, then siteItemsBuilder build is called with scan true`() = test { // Given @@ -156,7 +149,7 @@ class SiteItemsViewModelSliceTest : BaseUnitTest() { // Then verify(siteItemsBuilder, atLeast(2)).build(captor.capture()) - assertThat(captor.firstValue.scanAvailable).isTrue() + assertThat(captor.firstValue.scanAvailable).isFalse() assertThat(captor.secondValue.scanAvailable).isTrue() }