Skip to content
This repository has been archived by the owner on Feb 4, 2025. It is now read-only.

Commit

Permalink
Add functions to search products by global unique id
Browse files Browse the repository at this point in the history
toupper committed Dec 2, 2024
1 parent 3d45586 commit b98a133
Showing 3 changed files with 57 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -28,6 +28,7 @@
import org.wordpress.android.fluxc.store.WCProductStore.RemoteUpdateProductImagesPayload;
import org.wordpress.android.fluxc.store.WCProductStore.RemoteUpdateProductPayload;
import org.wordpress.android.fluxc.store.WCProductStore.RemoteUpdatedProductPasswordPayload;
import org.wordpress.android.fluxc.store.WCProductStore.SearchProductsByGlobalUniqueIdPayload;
import org.wordpress.android.fluxc.store.WCProductStore.SearchProductsPayload;
import org.wordpress.android.fluxc.store.WCProductStore.UpdateProductImagesPayload;
import org.wordpress.android.fluxc.store.WCProductStore.UpdateProductPasswordPayload;
@@ -40,6 +41,8 @@ public enum WCProductAction implements IAction {
FETCH_PRODUCTS,
@Action(payloadType = SearchProductsPayload.class)
SEARCH_PRODUCTS,
@Action(payloadType = SearchProductsByGlobalUniqueIdPayload.class)
SEARCH_PRODUCTS_BY_GLOBAL_UNIQUE_ID,
@Action(payloadType = FetchProductShippingClassListPayload.class)
FETCH_PRODUCT_SHIPPING_CLASS_LIST,
@Action(payloadType = FetchSingleProductShippingClassPayload.class)
Original file line number Diff line number Diff line change
@@ -420,6 +420,7 @@ class ProductRestClient @Inject constructor(
sortType: ProductSorting = DEFAULT_PRODUCT_SORTING,
searchQuery: String? = null,
skuSearchOptions: SkuSearchOptions = SkuSearchOptions.Disabled,
globalUniqueIdSearchQuery: String? = null,
includedProductIds: List<Long>? = null,
filterOptions: Map<ProductFilterOption, String>? = null,
excludedProductIds: List<Long>? = null
@@ -432,6 +433,7 @@ class ProductRestClient @Inject constructor(
offset = offset,
searchQuery = searchQuery,
skuSearchOptions = skuSearchOptions,
globalUniqueIdSearchQuery = globalUniqueIdSearchQuery,
includedProductIds = includedProductIds,
excludedProductIds = excludedProductIds,
filterOptions = filterOptions
@@ -497,6 +499,26 @@ class ProductRestClient @Inject constructor(
}
}

fun searchProductsByGlobalUniqueId(
site: SiteModel,
globalUniqueIdSearchQuery: String? = null,
pageSize: Int = DEFAULT_PRODUCT_PAGE_SIZE,
offset: Int = 0,
sorting: ProductSorting = DEFAULT_PRODUCT_SORTING,
excludedProductIds: List<Long>? = null,
filterOptions: Map<ProductFilterOption, String>? = null
) {
fetchProducts(
site = site,
pageSize = pageSize,
offset = offset,
sortType = sorting,
globalUniqueIdSearchQuery = globalUniqueIdSearchQuery,
excludedProductIds = excludedProductIds,
filterOptions = filterOptions
)
}

fun searchProducts(
site: SiteModel,
searchQuery: String,
@@ -583,6 +605,7 @@ class ProductRestClient @Inject constructor(
offset: Int,
searchQuery: String?,
skuSearchOptions: SkuSearchOptions,
globalUniqueIdSearchQuery: String? = null,
includedProductIds: List<Long>? = null,
excludedProductIds: List<Long>? = null,
filterOptions: Map<ProductFilterOption, String>? = null
@@ -631,6 +654,10 @@ class ProductRestClient @Inject constructor(
}
}

if (globalUniqueIdSearchQuery.isNullOrEmpty().not()) {
params["global_unique_id"] = globalUniqueIdSearchQuery!!
}

return params
}

Original file line number Diff line number Diff line change
@@ -125,6 +125,16 @@ class WCProductStore @Inject constructor(
var filterOptions: Map<ProductFilterOption, String>? = null,
) : Payload<BaseNetworkError>()

class SearchProductsByGlobalUniqueIdPayload(
var site: SiteModel,
var globalUniqueId: String,
var pageSize: Int = DEFAULT_PRODUCT_PAGE_SIZE,
var offset: Int = 0,
var sorting: ProductSorting = DEFAULT_PRODUCT_SORTING,
var excludedProductIds: List<Long>? = null,
var filterOptions: Map<ProductFilterOption, String>? = null,
) : Payload<BaseNetworkError>()

class FetchProductVariationsPayload(
var site: SiteModel,
var remoteProductId: Long,
@@ -905,6 +915,9 @@ class WCProductStore @Inject constructor(
WCProductAction.SEARCH_PRODUCTS ->
searchProducts(action.payload as SearchProductsPayload)

WCProductAction.SEARCH_PRODUCTS_BY_GLOBAL_UNIQUE_ID ->
searchProductsByGlobalUniqueId(action.payload as SearchProductsByGlobalUniqueIdPayload)

WCProductAction.UPDATE_PRODUCT_IMAGES ->
updateProductImages(action.payload as UpdateProductImagesPayload)

@@ -1211,6 +1224,20 @@ class WCProductStore @Inject constructor(
}
}

private fun searchProductsByGlobalUniqueId(payload: SearchProductsByGlobalUniqueIdPayload) {
with(payload) {
wcProductRestClient.searchProductsByGlobalUniqueId(
site = site,
globalUniqueIdSearchQuery = globalUniqueId,
pageSize = pageSize,
offset = offset,
sorting = sorting,
excludedProductIds = excludedProductIds,
filterOptions = filterOptions
)
}
}

suspend fun fetchProductVariations(payload: FetchProductVariationsPayload): OnProductChanged {
return coroutineEngine.withDefaultContext(API, this, "fetchProductVariations") {
val result = with(payload) {

0 comments on commit b98a133

Please sign in to comment.