Skip to content

Commit 4f7a3cf

Browse files
authored
Merge pull request #13313 from woocommerce/issue/13309-filter-downloadable-options-from-api-variations
[Woo POS][Non-Simple Products] Filter downloadable options from variations endpoint
2 parents fab5daa + 9f7fcbe commit 4f7a3cf

File tree

4 files changed

+25
-8
lines changed

4 files changed

+25
-8
lines changed

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/selector/VariationSelectorRepository.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import kotlinx.coroutines.flow.Flow
1010
import kotlinx.coroutines.flow.map
1111
import kotlinx.coroutines.withContext
1212
import org.wordpress.android.fluxc.store.WCProductStore
13+
import org.wordpress.android.fluxc.store.WCProductStore.VariationFilterOption
1314
import javax.inject.Inject
1415

1516
class VariationSelectorRepository @Inject constructor(
@@ -29,7 +30,7 @@ class VariationSelectorRepository @Inject constructor(
2930
productId: Long,
3031
offset: Int,
3132
pageSize: Int,
32-
filterOptions: Map<WCProductStore.VariationFilterOption, String>? = null
33+
filterOptions: Map<VariationFilterOption, String>? = null
3334
): Result<Boolean> {
3435
return productStore.fetchProductVariations(
3536
selectedSite.get(),

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/home/items/variations/WooPosVariationsDataSource.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ class WooPosVariationsDataSource @Inject constructor(
5252
productId,
5353
forceRefresh = true,
5454
filterOptions = mapOf(
55-
WCProductStore.VariationFilterOption.STATUS to "publish"
55+
WCProductStore.VariationFilterOption.STATUS to VARIATION_STATUS_PUBLISH,
56+
WCProductStore.VariationFilterOption.DOWNLOADABLE to VARIATION_DOWNLOADABLE_FALSE
5657
)
5758
)
5859
if (result.isSuccess) {
@@ -74,7 +75,8 @@ class WooPosVariationsDataSource @Inject constructor(
7475
val result = handler.loadMore(
7576
productId,
7677
filterOptions = mapOf(
77-
WCProductStore.VariationFilterOption.STATUS to VARIATION_STATUS_PUBLISH
78+
WCProductStore.VariationFilterOption.STATUS to VARIATION_STATUS_PUBLISH,
79+
WCProductStore.VariationFilterOption.DOWNLOADABLE to VARIATION_DOWNLOADABLE_FALSE
7880
)
7981
)
8082
if (result.isSuccess) {
@@ -90,6 +92,7 @@ class WooPosVariationsDataSource @Inject constructor(
9092

9193
companion object {
9294
private const val VARIATION_STATUS_PUBLISH = "publish"
95+
private const val VARIATION_DOWNLOADABLE_FALSE = "false"
9396
}
9497
}
9598

@@ -105,5 +108,6 @@ sealed class FetchResult {
105108
}
106109

107110
private fun List<ProductVariation>.applyFilter(): List<ProductVariation> {
108-
return filter { !it.isDownloadable }
111+
return filter { !it.isDownloadable } // Keeping this filter for now, but it should be removed in the future after
112+
// WC 9.7.0 is released. https://a8c.slack.com/archives/C070SJRA8DP/p1736795937571479
109113
}

WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/home/variations/WooPosVariationsDataSourceTest.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,10 @@ class WooPosVariationsDataSourceTest {
151151
handler.fetchVariations(
152152
productId,
153153
forceRefresh = true,
154-
mapOf(WCProductStore.VariationFilterOption.STATUS to "publish")
154+
mapOf(
155+
WCProductStore.VariationFilterOption.STATUS to "publish",
156+
WCProductStore.VariationFilterOption.DOWNLOADABLE to "false"
157+
)
155158
)
156159
)
157160
.thenReturn(Result.failure(exception))
@@ -204,7 +207,13 @@ class WooPosVariationsDataSourceTest {
204207
whenever(handler.getVariationsFlow(productId)).thenReturn(flowOf(sampleProducts))
205208
val exception = Exception("Load more failed")
206209
whenever(
207-
handler.loadMore(productId, mapOf(WCProductStore.VariationFilterOption.STATUS to "publish")),
210+
handler.loadMore(
211+
productId,
212+
mapOf(
213+
WCProductStore.VariationFilterOption.STATUS to "publish",
214+
WCProductStore.VariationFilterOption.DOWNLOADABLE to "false"
215+
)
216+
),
208217
).thenReturn(Result.failure(exception))
209218
whenever(variationsCache.get(productId)).thenReturn(sampleProducts)
210219
val sut = WooPosVariationsDataSource(handler, variationsCache)
@@ -235,7 +244,10 @@ class WooPosVariationsDataSourceTest {
235244
handler.fetchVariations(
236245
productId,
237246
forceRefresh = true,
238-
mapOf(WCProductStore.VariationFilterOption.STATUS to "publish")
247+
mapOf(
248+
WCProductStore.VariationFilterOption.STATUS to "publish",
249+
WCProductStore.VariationFilterOption.DOWNLOADABLE to "false"
250+
)
239251
)
240252
).thenReturn(Result.failure(exception))
241253
whenever(variationsCache.get(productId)).thenReturn(emptyList())

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ stripe-terminal = '3.7.1'
8787
tinder-statemachine = '0.2.0'
8888
wiremock = '2.26.3'
8989
wordpress-aztec = 'v2.1.4'
90-
wordpress-fluxc = 'trunk-0264533ce612f74e1ae6fcbaefeb69b252163774'
90+
wordpress-fluxc = 'trunk-657a72d968f89dc2edd6a6e6e57f579643d1e213'
9191
wordpress-login = 'trunk-706a58b33ff8f1a2858ae64e51204426ec12fe7b'
9292
wordpress-libaddressinput = '0.0.2'
9393
wordpress-mediapicker = '0.3.1'

0 commit comments

Comments
 (0)