@shopgate/pwa-common-commerce 7.30.0-alpha.7 → 7.30.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/cart/action-creators/addCouponsToCart.js +9 -2
  2. package/cart/action-creators/addProductsToCart.js +9 -2
  3. package/cart/action-creators/deleteCouponsFromCart.js +9 -2
  4. package/cart/action-creators/deleteProductsFromCart.js +9 -2
  5. package/cart/action-creators/errorAddCouponsToCart.js +10 -2
  6. package/cart/action-creators/errorAddProductsToCart.js +10 -2
  7. package/cart/action-creators/errorCart.js +8 -2
  8. package/cart/action-creators/errorDeleteCouponsFromCart.js +10 -2
  9. package/cart/action-creators/errorDeleteProductsFromCart.js +10 -2
  10. package/cart/action-creators/errorUpdateProductsInCart.js +10 -2
  11. package/cart/action-creators/receiveCart.js +9 -2
  12. package/cart/action-creators/requestCart.js +8 -2
  13. package/cart/action-creators/setCartProductPendingCount.js +9 -2
  14. package/cart/action-creators/setCouponFieldError.js +9 -2
  15. package/cart/action-creators/setCouponFieldValue.js +9 -2
  16. package/cart/action-creators/setFulfillmentSlot.js +9 -2
  17. package/cart/action-creators/successAddCouponsToCart.js +10 -2
  18. package/cart/action-creators/successAddProductsToCart.js +8 -2
  19. package/cart/action-creators/successDeleteCouponsFromCart.js +8 -2
  20. package/cart/action-creators/successDeleteProductsFromCart.js +8 -2
  21. package/cart/action-creators/successUpdateProductsInCart.js +8 -2
  22. package/cart/action-creators/updateProductsInCart.js +9 -2
  23. package/cart/actions/addCouponsToCart.js +52 -8
  24. package/cart/actions/addProductsToCart.js +80 -11
  25. package/cart/actions/deleteCouponsFromCart.js +39 -6
  26. package/cart/actions/deleteProductsFromCart.js +38 -6
  27. package/cart/actions/fetchCart.js +52 -8
  28. package/cart/actions/updateProductsInCart.js +44 -6
  29. package/cart/constants/PipelineErrors.js +6 -1
  30. package/cart/constants/Pipelines.js +6 -1
  31. package/cart/constants/Portals.js +85 -1
  32. package/cart/constants/index.js +39 -2
  33. package/cart/helpers/config.js +47 -2
  34. package/cart/helpers/createPipelineErrorList.js +30 -4
  35. package/cart/helpers/fulfillmentSlots.js +37 -4
  36. package/cart/helpers/index.js +14 -3
  37. package/cart/helpers/quantity.js +23 -4
  38. package/cart/helpers/shipping.js +57 -2
  39. package/cart/helpers/tax.js +26 -2
  40. package/cart/index.js +25 -5
  41. package/cart/mock.js +130 -1
  42. package/cart/reducers/couponField.js +30 -2
  43. package/cart/reducers/data.js +98 -6
  44. package/cart/reducers/index.js +7 -1
  45. package/cart/selectors/index.js +181 -31
  46. package/cart/selectors/spec.js +189 -2
  47. package/cart/streams/index.js +176 -29
  48. package/cart/subscriptions/index.js +307 -30
  49. package/category/action-creators/errorCategory.js +10 -2
  50. package/category/action-creators/errorCategoryChildren.js +9 -2
  51. package/category/action-creators/errorRootCategories.js +8 -2
  52. package/category/action-creators/receiveCategory.js +12 -2
  53. package/category/action-creators/receiveCategoryChildren.js +10 -2
  54. package/category/action-creators/receiveRootCategories.js +9 -2
  55. package/category/action-creators/requestCategory.js +9 -2
  56. package/category/action-creators/requestCategoryChildren.js +9 -2
  57. package/category/action-creators/requestRootCategories.js +8 -2
  58. package/category/actions/fetchCategory.js +47 -5
  59. package/category/actions/fetchCategoryChildren.js +30 -2
  60. package/category/actions/fetchCategoryOrRootCategories.js +16 -2
  61. package/category/actions/fetchCategoryProducts.js +36 -2
  62. package/category/actions/fetchRootCategories.js +31 -2
  63. package/category/actions/getCategory.js +10 -2
  64. package/category/constants/Pipelines.js +3 -1
  65. package/category/constants/Portals.js +56 -3
  66. package/category/constants/index.js +17 -2
  67. package/category/helpers/index.js +27 -3
  68. package/category/index.js +19 -5
  69. package/category/mock.js +176 -1
  70. package/category/reducers/categoriesById.js +65 -3
  71. package/category/reducers/childrenByCategoryId.js +55 -4
  72. package/category/reducers/helpers/handleCategoryCollection.js +24 -3
  73. package/category/reducers/helpers/handleReceivedCategories.js +3 -1
  74. package/category/reducers/index.js +12 -2
  75. package/category/reducers/rootCategories.js +31 -2
  76. package/category/selectors/index.js +115 -16
  77. package/category/streams/index.js +82 -4
  78. package/category/subscriptions/index.js +96 -3
  79. package/checkout/action-creators/successCheckout.js +9 -2
  80. package/checkout/actions/fetchCheckoutUrl.js +28 -3
  81. package/checkout/constants/Pipelines.js +1 -1
  82. package/checkout/constants/index.js +3 -2
  83. package/checkout/index.js +11 -4
  84. package/checkout/selectors/index.js +7 -2
  85. package/checkout/streams/index.js +8 -2
  86. package/checkout/subscriptions/index.js +35 -6
  87. package/favorites/action-creators/index.js +206 -24
  88. package/favorites/actions/addFavorites.js +41 -3
  89. package/favorites/actions/addFavoritesList.js +27 -2
  90. package/favorites/actions/fetchFavoriteIds.js +49 -5
  91. package/favorites/actions/fetchFavorites.js +60 -5
  92. package/favorites/actions/fetchFavoritesList.js +47 -3
  93. package/favorites/actions/fetchFavoritesListsWithItems.js +32 -3
  94. package/favorites/actions/getFavorites.js +6 -2
  95. package/favorites/actions/removeFavorites.js +32 -3
  96. package/favorites/actions/removeFavoritesList.js +24 -2
  97. package/favorites/actions/toggleFavorites.js +68 -10
  98. package/favorites/actions/updateFavorites.js +39 -3
  99. package/favorites/actions/updateFavoritesList.js +26 -2
  100. package/favorites/constants/Pipelines.js +9 -1
  101. package/favorites/constants/Portals.js +32 -4
  102. package/favorites/constants/index.js +37 -5
  103. package/favorites/index.js +14 -4
  104. package/favorites/mock.js +89 -4
  105. package/favorites/reducers/index.js +7 -1
  106. package/favorites/reducers/lists.js +74 -2
  107. package/favorites/reducers/products.js +231 -24
  108. package/favorites/selectors/index.js +188 -24
  109. package/favorites/streams/index.js +135 -23
  110. package/favorites/streams/spec.js +517 -8
  111. package/favorites/subscriptions/index.js +260 -25
  112. package/favorites/subscriptions/spec.js +701 -28
  113. package/filter/action-creators/errorFilters.js +9 -2
  114. package/filter/action-creators/index.js +4 -1
  115. package/filter/action-creators/receiveFilters.js +10 -2
  116. package/filter/action-creators/requestFilters.js +9 -2
  117. package/filter/action-creators/updateFilters.js +8 -2
  118. package/filter/actions/fetchFilters.js +46 -3
  119. package/filter/actions/getFilters.js +6 -2
  120. package/filter/actions/helpers/buildFilterParams.js +34 -2
  121. package/filter/actions/helpers/buildRequestFilters.js +35 -2
  122. package/filter/actions/helpers/processFilters.js +10 -2
  123. package/filter/actions/helpers/processParams.js +26 -2
  124. package/filter/constants/Pipelines.js +1 -1
  125. package/filter/constants/Portals.js +39 -3
  126. package/filter/constants/index.js +8 -1
  127. package/filter/index.js +12 -4
  128. package/filter/reducers/helpers/enrichFilters.js +11 -3
  129. package/filter/reducers/index.js +5 -1
  130. package/filter/reducers/resultsByHash.js +43 -3
  131. package/filter/selectors/index.js +47 -6
  132. package/filter/streams/index.js +30 -1
  133. package/filter/subscriptions/index.js +34 -2
  134. package/market/constants/Portals.js +22 -4
  135. package/market/constants/index.js +2 -1
  136. package/market/helpers/showReturnPolicy.js +3 -1
  137. package/market/helpers/showTaxDisclaimer.js +3 -1
  138. package/market/index.js +6 -2
  139. package/orders/constants.js +2 -1
  140. package/package.json +3 -3
  141. package/product/action-creators/deleteProductsByIds.js +10 -2
  142. package/product/action-creators/errorProduct.js +10 -2
  143. package/product/action-creators/errorProductDescription.js +10 -2
  144. package/product/action-creators/errorProductImages.js +10 -2
  145. package/product/action-creators/errorProductMedia.js +10 -2
  146. package/product/action-creators/errorProductOptions.js +10 -2
  147. package/product/action-creators/errorProductProperties.js +10 -2
  148. package/product/action-creators/errorProductRelations.js +9 -2
  149. package/product/action-creators/errorProductShipping.js +10 -2
  150. package/product/action-creators/errorProductVariants.js +10 -2
  151. package/product/action-creators/errorProducts.js +9 -2
  152. package/product/action-creators/expireProductById.js +10 -2
  153. package/product/action-creators/expireProductData.js +11 -2
  154. package/product/action-creators/expireProductsByHash.js +9 -2
  155. package/product/action-creators/productNotAvailable.js +10 -2
  156. package/product/action-creators/provideProduct.js +9 -2
  157. package/product/action-creators/receiveProduct.js +10 -2
  158. package/product/action-creators/receiveProductCached.js +9 -2
  159. package/product/action-creators/receiveProductDescription.js +10 -2
  160. package/product/action-creators/receiveProductImages.js +10 -2
  161. package/product/action-creators/receiveProductMedia.js +10 -2
  162. package/product/action-creators/receiveProductOptions.js +10 -2
  163. package/product/action-creators/receiveProductProperties.js +10 -2
  164. package/product/action-creators/receiveProductRelations.js +12 -2
  165. package/product/action-creators/receiveProductShipping.js +10 -2
  166. package/product/action-creators/receiveProductVariants.js +10 -2
  167. package/product/action-creators/receiveProducts.js +16 -2
  168. package/product/action-creators/receiveProductsCached.js +9 -2
  169. package/product/action-creators/refreshExpiredPDPData.js +8 -2
  170. package/product/action-creators/requestProduct.js +10 -2
  171. package/product/action-creators/requestProductDescription.js +9 -2
  172. package/product/action-creators/requestProductImages.js +9 -2
  173. package/product/action-creators/requestProductMedia.js +9 -2
  174. package/product/action-creators/requestProductOptions.js +9 -2
  175. package/product/action-creators/requestProductProperties.js +9 -2
  176. package/product/action-creators/requestProductRelations.js +10 -2
  177. package/product/action-creators/requestProductShipping.js +9 -2
  178. package/product/action-creators/requestProductVariants.js +9 -2
  179. package/product/action-creators/requestProducts.js +9 -2
  180. package/product/action-creators/setProductId.js +9 -2
  181. package/product/action-creators/setProductQuantity.js +9 -2
  182. package/product/action-creators/setProductVariantId.js +9 -2
  183. package/product/actions/changeSortOrder.js +21 -2
  184. package/product/actions/fetchHighlightProducts.js +18 -2
  185. package/product/actions/fetchLiveshoppingProducts.js +14 -2
  186. package/product/actions/fetchProduct.js +52 -3
  187. package/product/actions/fetchProductDescription.js +30 -2
  188. package/product/actions/fetchProductImages.js +31 -2
  189. package/product/actions/fetchProductMedia.js +35 -2
  190. package/product/actions/fetchProductOptions.js +31 -2
  191. package/product/actions/fetchProductProperties.js +30 -2
  192. package/product/actions/fetchProductRelations.js +63 -2
  193. package/product/actions/fetchProductShipping.js +31 -2
  194. package/product/actions/fetchProductVariants.js +31 -2
  195. package/product/actions/fetchProducts.js +189 -17
  196. package/product/actions/fetchProductsById.js +68 -8
  197. package/product/actions/fetchProductsByQuery.js +102 -18
  198. package/product/actions/getHighlightProducts.js +6 -2
  199. package/product/actions/getLiveshoppingProducts.js +6 -2
  200. package/product/actions/getProduct.js +6 -2
  201. package/product/actions/getProductDescription.js +6 -2
  202. package/product/actions/getProductImages.js +6 -2
  203. package/product/actions/getProductOptions.js +6 -2
  204. package/product/actions/getProductProperties.js +6 -2
  205. package/product/actions/getProductRelations.js +6 -2
  206. package/product/actions/getProductShipping.js +6 -2
  207. package/product/actions/getProductVariants.js +6 -2
  208. package/product/actions/getProducts.js +6 -2
  209. package/product/actions/getProductsById.js +6 -2
  210. package/product/actions/getProductsByQuery.js +6 -2
  211. package/product/actions/processProductFlags.js +35 -3
  212. package/product/actions/updateMetadata.js +17 -2
  213. package/product/collections/ProductImageFormats.js +48 -8
  214. package/product/collections/index.js +1 -1
  215. package/product/constants/Pipelines.js +12 -1
  216. package/product/constants/Portals.js +200 -33
  217. package/product/constants/index.js +90 -18
  218. package/product/helpers/index.js +61 -8
  219. package/product/index.js +36 -6
  220. package/product/mock.js +1002 -2
  221. package/product/reducers/descriptionsByProductId.js +54 -5
  222. package/product/reducers/helpers/formatOptions.js +17 -2
  223. package/product/reducers/helpers/handleProductCollection.js +19 -2
  224. package/product/reducers/imagesByProductId.js +51 -4
  225. package/product/reducers/index.js +23 -1
  226. package/product/reducers/mediaByProductId.js +55 -3
  227. package/product/reducers/optionsByProductId.js +41 -2
  228. package/product/reducers/productRelationsByHash.js +43 -2
  229. package/product/reducers/productsById.js +122 -7
  230. package/product/reducers/propertiesByProductId.js +48 -2
  231. package/product/reducers/resultsByHash.js +125 -9
  232. package/product/reducers/shippingByProductId.js +37 -2
  233. package/product/reducers/variantsByProductId.js +56 -2
  234. package/product/selectors/options.js +90 -13
  235. package/product/selectors/page.js +62 -13
  236. package/product/selectors/price.js +81 -18
  237. package/product/selectors/product.js +549 -59
  238. package/product/selectors/product.mock.js +327 -12
  239. package/product/selectors/relations.js +35 -5
  240. package/product/selectors/variants.js +91 -15
  241. package/product/streams/index.js +167 -13
  242. package/product/subscriptions/index.js +210 -4
  243. package/reviews/action-creators/errorProductReviews.js +9 -2
  244. package/reviews/action-creators/errorReviews.js +9 -2
  245. package/reviews/action-creators/errorSubmitReview.js +9 -2
  246. package/reviews/action-creators/errorUserReview.js +9 -2
  247. package/reviews/action-creators/flushUserReview.js +8 -2
  248. package/reviews/action-creators/receiveProductReviews.js +11 -2
  249. package/reviews/action-creators/receiveReviews.js +12 -2
  250. package/reviews/action-creators/receiveSubmitReview.js +9 -2
  251. package/reviews/action-creators/receiveUserReview.js +10 -2
  252. package/reviews/action-creators/requestProductReviews.js +10 -2
  253. package/reviews/action-creators/requestReviews.js +9 -2
  254. package/reviews/action-creators/requestSubmitReview.js +9 -2
  255. package/reviews/action-creators/requestUserReview.js +9 -2
  256. package/reviews/action-creators/resetSubmittedReview.js +9 -2
  257. package/reviews/action-creators/spec.js +40 -1
  258. package/reviews/actions/fetchProductReviews.js +37 -2
  259. package/reviews/actions/fetchReviews.js +38 -2
  260. package/reviews/actions/fetchUserReview.js +31 -2
  261. package/reviews/actions/flushUserReview.js +5 -1
  262. package/reviews/actions/getProductReviews.js +6 -2
  263. package/reviews/actions/getUserReview.js +6 -2
  264. package/reviews/actions/spec.js +241 -4
  265. package/reviews/actions/submitReview.js +63 -3
  266. package/reviews/constants/Pipelines.js +4 -1
  267. package/reviews/constants/Portals.js +4 -1
  268. package/reviews/constants/index.js +26 -7
  269. package/reviews/index.js +15 -4
  270. package/reviews/mock.js +172 -11
  271. package/reviews/reducers/index.js +11 -1
  272. package/reviews/reducers/mock.js +14 -2
  273. package/reviews/reducers/reviewsByHash.js +52 -6
  274. package/reviews/reducers/reviewsById.js +27 -2
  275. package/reviews/reducers/reviewsByProductId.js +47 -2
  276. package/reviews/reducers/spec.js +211 -2
  277. package/reviews/reducers/userReviewsByProductId.js +68 -2
  278. package/reviews/selectors/index.js +123 -19
  279. package/reviews/selectors/mock.js +100 -1
  280. package/reviews/selectors/spec.js +100 -1
  281. package/reviews/streams/index.js +37 -5
  282. package/reviews/streams/spec.js +25 -1
  283. package/reviews/subscriptions/index.js +27 -2
  284. package/scanner/action-creators/errorHandleScanner.js +11 -2
  285. package/scanner/action-creators/scannerFinished.js +11 -2
  286. package/scanner/action-creators/startScanner.js +8 -2
  287. package/scanner/action-creators/successHandleScanner.js +11 -2
  288. package/scanner/actions/handleBarCode.js +22 -2
  289. package/scanner/actions/handleNoResults.js +23 -2
  290. package/scanner/actions/handleQrCode.js +116 -6
  291. package/scanner/actions/handleSearch.js +33 -2
  292. package/scanner/constants/Portals.js +22 -1
  293. package/scanner/constants/index.js +17 -1
  294. package/scanner/helpers/index.js +115 -5
  295. package/scanner/index.js +19 -5
  296. package/scanner/streams/index.js +36 -1
  297. package/scanner/subscriptions/index.js +78 -8
  298. package/search/action-creators/errorSearchResults.js +10 -2
  299. package/search/action-creators/receiveSearchResults.js +11 -2
  300. package/search/action-creators/receiveSearchSuggestions.js +10 -2
  301. package/search/action-creators/requestSearchResults.js +10 -2
  302. package/search/action-creators/requestSearchSuggestions.js +9 -2
  303. package/search/actions/fetchSearchResults.js +66 -8
  304. package/search/actions/fetchSearchSuggestions.js +36 -2
  305. package/search/constants/Pipelines.js +1 -1
  306. package/search/constants/Portals.js +9 -2
  307. package/search/constants/index.js +10 -2
  308. package/search/helpers/index.js +5 -2
  309. package/search/helpers/removeHighlightingPlaceholders.js +4 -1
  310. package/search/helpers/spec.js +19 -1
  311. package/search/index.js +17 -5
  312. package/search/reducers/index.js +38 -2
  313. package/search/selectors/index.js +23 -4
  314. package/search/streams/index.js +51 -3
  315. package/search/subscriptions/index.js +132 -5
@@ -1,5 +1,34 @@
1
- import PipelineRequest from'@shopgate/pwa-core/classes/PipelineRequest';import{shouldFetchData,mutable}from'@shopgate/pwa-common/helpers/redux';import requestProductVariants from"../action-creators/requestProductVariants";import{SHOPGATE_CATALOG_GET_PRODUCT_VARIANTS}from"../constants/Pipelines";import receiveProductVariants from"../action-creators/receiveProductVariants";import errorProductVariants from"../action-creators/errorProductVariants";/**
1
+ import PipelineRequest from '@shopgate/pwa-core/classes/PipelineRequest';
2
+ import { shouldFetchData, mutable } from '@shopgate/pwa-common/helpers/redux';
3
+ import requestProductVariants from "../action-creators/requestProductVariants";
4
+ import { SHOPGATE_CATALOG_GET_PRODUCT_VARIANTS } from "../constants/Pipelines";
5
+ import receiveProductVariants from "../action-creators/receiveProductVariants";
6
+ import errorProductVariants from "../action-creators/errorProductVariants";
7
+
8
+ /**
2
9
  * Retrieves product variants from store.
3
10
  * @param {string} productId The product ID for which the product variants are requested.
4
11
  * @return {Function} A Redux Thunk
5
- */function fetchProductVariants(productId){return function(dispatch,getState){var state=getState();var cachedData=state.product.variantsByProductId[productId];if(!shouldFetchData(cachedData)){return Promise.resolve(null);}dispatch(requestProductVariants(productId));var request=new PipelineRequest(SHOPGATE_CATALOG_GET_PRODUCT_VARIANTS).setInput({productId:productId}).dispatch();request.then(function(result){dispatch(receiveProductVariants(productId,result));})["catch"](function(error){dispatch(errorProductVariants(productId,error.code));});return request;};}/** @mixes {MutableFunction} */export default mutable(fetchProductVariants);
12
+ */
13
+ function fetchProductVariants(productId) {
14
+ return (dispatch, getState) => {
15
+ const state = getState();
16
+ const cachedData = state.product.variantsByProductId[productId];
17
+ if (!shouldFetchData(cachedData)) {
18
+ return Promise.resolve(null);
19
+ }
20
+ dispatch(requestProductVariants(productId));
21
+ const request = new PipelineRequest(SHOPGATE_CATALOG_GET_PRODUCT_VARIANTS).setInput({
22
+ productId
23
+ }).dispatch();
24
+ request.then(result => {
25
+ dispatch(receiveProductVariants(productId, result));
26
+ }).catch(error => {
27
+ dispatch(errorProductVariants(productId, error.code));
28
+ });
29
+ return request;
30
+ };
31
+ }
32
+
33
+ /** @mixes {MutableFunction} */
34
+ export default mutable(fetchProductVariants);
@@ -1,8 +1,29 @@
1
- var _excluded=["offset","limit"];function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key];}}return target;}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key];}return target;}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import difference from'lodash/difference';import PipelineRequest from'@shopgate/pwa-core/classes/PipelineRequest';import{generateResultHash,shouldFetchData}from'@shopgate/pwa-common/helpers/redux';import{isNumber}from'@shopgate/pwa-common/helpers/validation';import configuration from'@shopgate/pwa-common/collections/Configuration';import{DEFAULT_PRODUCTS_FETCH_PARAMS}from'@shopgate/pwa-common/constants/Configuration';import{SORT_SCOPE_CATEGORY}from'@shopgate/engage/filter/constants';import{makeGetDefaultSortOrder}from'@shopgate/engage/filter/selectors';import{getFulfillmentParams}from'@shopgate/pwa-common-commerce/product/selectors/product';import{SHOPGATE_CATALOG_GET_PRODUCTS,SHOPGATE_CATALOG_GET_HIGHLIGHT_PRODUCTS,SHOPGATE_CATALOG_GET_LIVESHOPPING_PRODUCTS}from"../constants/Pipelines";import buildRequestFilters from"../../filter/actions/helpers/buildRequestFilters";import requestProducts from"../action-creators/requestProducts";import receiveProducts from"../action-creators/receiveProducts";import errorProducts from"../action-creators/errorProducts";import deleteProductsByIds from"../action-creators/deleteProductsByIds";import receiveProductsCached from"../action-creators/receiveProductsCached";import{makeGetProductResultByCustomHash}from"../selectors/product";/**
1
+ import difference from 'lodash/difference';
2
+ import PipelineRequest from '@shopgate/pwa-core/classes/PipelineRequest';
3
+ import { generateResultHash, shouldFetchData } from '@shopgate/pwa-common/helpers/redux';
4
+ import { isNumber } from '@shopgate/pwa-common/helpers/validation';
5
+ import configuration from '@shopgate/pwa-common/collections/Configuration';
6
+ import { DEFAULT_PRODUCTS_FETCH_PARAMS } from '@shopgate/pwa-common/constants/Configuration';
7
+ import { SORT_SCOPE_CATEGORY } from '@shopgate/engage/filter/constants';
8
+ import { makeGetDefaultSortOrder } from '@shopgate/engage/filter/selectors';
9
+ import { getFulfillmentParams } from '@shopgate/pwa-common-commerce/product/selectors/product';
10
+ import { SHOPGATE_CATALOG_GET_PRODUCTS, SHOPGATE_CATALOG_GET_HIGHLIGHT_PRODUCTS, SHOPGATE_CATALOG_GET_LIVESHOPPING_PRODUCTS } from "../constants/Pipelines";
11
+ import buildRequestFilters from "../../filter/actions/helpers/buildRequestFilters";
12
+ import requestProducts from "../action-creators/requestProducts";
13
+ import receiveProducts from "../action-creators/receiveProducts";
14
+ import errorProducts from "../action-creators/errorProducts";
15
+ import deleteProductsByIds from "../action-creators/deleteProductsByIds";
16
+ import receiveProductsCached from "../action-creators/receiveProductsCached";
17
+ import { makeGetProductResultByCustomHash } from "../selectors/product";
18
+
19
+ /**
2
20
  * Checks if a product ID type is a product identifiers type.
3
21
  * @param {string} productIdType The product ID type to check.
4
22
  * @returns {boolean}
5
- */export var isProductIdentifiersProductIdType=function isProductIdentifiersProductIdType(productIdType){return['sku','ean','upc'].includes(productIdType);};/**
23
+ */
24
+ export const isProductIdentifiersProductIdType = productIdType => ['sku', 'ean', 'upc'].includes(productIdType);
25
+
26
+ /**
6
27
  * Process the pipeline params to be compatible.
7
28
  * Currently the categoryId field cannot be used in combination with the filter field. In order to
8
29
  * use them together the categoryId field has to be extracted into the filter field.
@@ -12,10 +33,41 @@ var _excluded=["offset","limit"];function _objectWithoutProperties(source,exclud
12
33
  * @param {boolean} includeSort Tells if the sort parameters shall be included to the request.
13
34
  * @param {boolean} includeFilters Tells if the filter parameters shall be included to the request.
14
35
  * @returns {Object} A set of compatible params.
15
- */var processParams=function processParams(params,activeFilters){var includeSort=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;var includeFilters=arguments.length>3&&arguments[3]!==undefined?arguments[3]:true;var filters=buildRequestFilters(activeFilters);var newParams=_extends({},params,{},includeFilters&&filters&&Object.keys(filters).length&&{filters:filters});/**
36
+ */
37
+ const processParams = (params, activeFilters, includeSort = true, includeFilters = true) => {
38
+ const filters = buildRequestFilters(activeFilters);
39
+ const newParams = {
40
+ ...params,
41
+ ...(includeFilters && filters && Object.keys(filters).length && {
42
+ filters
43
+ })
44
+ };
45
+
46
+ /**
16
47
  * Check if the sort parameter should be included in the request parameters,
17
48
  * and remove it if necessary.
18
- */if(includeSort===false&&params&&params.sort){delete newParams.sort;}if(newParams.productIdType){if(isProductIdentifiersProductIdType(newParams.productIdType)){if(newParams.productIdType==='sku'){newParams.productSkus=newParams.productIds;}else if(newParams.productIdType==='ean'){newParams.productEans=newParams.productIds;}else if(newParams.productIdType==='upc'){newParams.productUpcs=newParams.productIds;}delete newParams.productIds;}}delete newParams.productIdType;return newParams;};var getDefaultSortOrder=makeGetDefaultSortOrder();/**
49
+ */
50
+ if (includeSort === false && params && params.sort) {
51
+ delete newParams.sort;
52
+ }
53
+ if (newParams.productIdType) {
54
+ if (isProductIdentifiersProductIdType(newParams.productIdType)) {
55
+ if (newParams.productIdType === 'sku') {
56
+ newParams.productSkus = newParams.productIds;
57
+ } else if (newParams.productIdType === 'ean') {
58
+ newParams.productEans = newParams.productIds;
59
+ } else if (newParams.productIdType === 'upc') {
60
+ newParams.productUpcs = newParams.productIds;
61
+ }
62
+ delete newParams.productIds;
63
+ }
64
+ }
65
+ delete newParams.productIdType;
66
+ return newParams;
67
+ };
68
+ const getDefaultSortOrder = makeGetDefaultSortOrder();
69
+
70
+ /**
19
71
  * Retrieves a product from the Redux store.
20
72
  * @param {Object} options The options for the getProducts request.
21
73
  * @param {Object} options.params The params for the getProduct pipeline.
@@ -33,18 +85,138 @@ var _excluded=["offset","limit"];function _objectWithoutProperties(source,exclud
33
85
  * @param {boolean} [options.resolveCachedProducts=false] Whether to resolve with products even
34
86
  * when no actual request was done due to cached data.
35
87
  * @return {Function} A Redux Thunk
36
- */function fetchProducts(options){var _options$params=options.params,params=_options$params===void 0?{}:_options$params,_options$filters=options.filters,filters=_options$filters===void 0?null:_options$filters,_options$pipeline=options.pipeline,pipeline=_options$pipeline===void 0?SHOPGATE_CATALOG_GET_PRODUCTS:_options$pipeline,_options$cached=options.cached,cached=_options$cached===void 0?true:_options$cached,_options$cachedTime=options.cachedTime,cachedTime=_options$cachedTime===void 0?null:_options$cachedTime,_options$id=options.id,id=_options$id===void 0?null:_options$id,_options$includeSort=options.includeSort,includeSort=_options$includeSort===void 0?true:_options$includeSort,_options$includeFilte=options.includeFilters,includeFilters=_options$includeFilte===void 0?true:_options$includeFilte,_options$includeFulfi=options.includeFulfillment,includeFulfillment=_options$includeFulfi===void 0?true:_options$includeFulfi,_options$onBeforeDisp=options.onBeforeDispatch,onBeforeDispatch=_options$onBeforeDisp===void 0?function(){}:_options$onBeforeDisp,_options$resolveCache=options.resolveCachedProducts,resolveCachedProducts=_options$resolveCache===void 0?false:_options$resolveCache;return function(dispatch,getState){var state=getState();var offset=params.offset,limit=params.limit,hashParams=_objectWithoutProperties(params,_excluded);var defaultSort=getDefaultSortOrder(state,{scope:SORT_SCOPE_CATEGORY});var _hashParams$sort=hashParams.sort,sort=_hashParams$sort===void 0?defaultSort:_hashParams$sort;var getProductsRequestParams;if(pipeline===SHOPGATE_CATALOG_GET_PRODUCTS){getProductsRequestParams=configuration.get(DEFAULT_PRODUCTS_FETCH_PARAMS);}// Append additional global fulfillment parameters.
37
- var fulfillmentParams={};if(includeFulfillment&&pipeline===SHOPGATE_CATALOG_GET_PRODUCTS){fulfillmentParams=getFulfillmentParams(state);}// We need to process the params to handle edge cases in the pipeline params.
38
- var requestParams=_extends({},fulfillmentParams,{},getProductsRequestParams,{},processParams(params,filters,includeSort,includeFilters));var hash=generateResultHash(_extends({pipeline:pipeline,sort:sort},fulfillmentParams,{},hashParams,{},filters&&Object.keys(filters).length&&{filters:filters},{},id&&{id:id}),includeSort,includeFilters);var result=state.product.resultsByHash[hash];var requiredProductCount=null;// Only set a required number of products if both offset and limit are valid.
39
- if(isNumber(offset)&&isNumber(limit)){requiredProductCount=offset+limit;}// Stop if we don't need to get any data.
40
- if(!shouldFetchData(result,'products',requiredProductCount)){var products=result.products;if(Array.isArray(products)){/**
88
+ */
89
+ function fetchProducts(options) {
90
+ const {
91
+ params = {},
92
+ filters = null,
93
+ pipeline = SHOPGATE_CATALOG_GET_PRODUCTS,
94
+ cached = true,
95
+ cachedTime = null,
96
+ id = null,
97
+ includeSort = true,
98
+ includeFilters = true,
99
+ includeFulfillment = true,
100
+ onBeforeDispatch = () => {},
101
+ resolveCachedProducts = false
102
+ } = options;
103
+ return (dispatch, getState) => {
104
+ const state = getState();
105
+ const {
106
+ offset,
107
+ limit,
108
+ ...hashParams
109
+ } = params;
110
+ const defaultSort = getDefaultSortOrder(state, {
111
+ scope: SORT_SCOPE_CATEGORY
112
+ });
113
+ const {
114
+ sort = defaultSort
115
+ } = hashParams;
116
+ let getProductsRequestParams;
117
+ if (pipeline === SHOPGATE_CATALOG_GET_PRODUCTS) {
118
+ getProductsRequestParams = configuration.get(DEFAULT_PRODUCTS_FETCH_PARAMS);
119
+ }
120
+
121
+ // Append additional global fulfillment parameters.
122
+ let fulfillmentParams = {};
123
+ if (includeFulfillment && pipeline === SHOPGATE_CATALOG_GET_PRODUCTS) {
124
+ fulfillmentParams = getFulfillmentParams(state);
125
+ }
126
+
127
+ // We need to process the params to handle edge cases in the pipeline params.
128
+ const requestParams = {
129
+ ...fulfillmentParams,
130
+ ...getProductsRequestParams,
131
+ ...processParams(params, filters, includeSort, includeFilters)
132
+ };
133
+ const hash = generateResultHash({
134
+ pipeline,
135
+ sort,
136
+ ...fulfillmentParams,
137
+ ...hashParams,
138
+ ...(filters && Object.keys(filters).length && {
139
+ filters
140
+ }),
141
+ ...(id && {
142
+ id
143
+ })
144
+ }, includeSort, includeFilters);
145
+ const result = state.product.resultsByHash[hash];
146
+ let requiredProductCount = null;
147
+
148
+ // Only set a required number of products if both offset and limit are valid.
149
+ if (isNumber(offset) && isNumber(limit)) {
150
+ requiredProductCount = offset + limit;
151
+ }
152
+
153
+ // Stop if we don't need to get any data.
154
+ if (!shouldFetchData(result, 'products', requiredProductCount)) {
155
+ const {
156
+ products
157
+ } = result;
158
+ if (Array.isArray(products)) {
159
+ /**
41
160
  * Fire the onBeforeDispatch callback to inform
42
161
  * a caller that fetchProducts will return data.
43
- */onBeforeDispatch();dispatch(receiveProductsCached({hash:hash,requestParams:requestParams,products:products}));return Promise.resolve(resolveCachedProducts?makeGetProductResultByCustomHash(hash)(state):result);}return null;}// Fire the onBeforeDispatch callback to inform a caller that fetchProducts will return data.
44
- onBeforeDispatch();dispatch(requestProducts({hash:hash,cached:cached,cachedTime:cachedTime,requestParams:requestParams}));var request=new PipelineRequest(pipeline).setInput(requestParams).dispatch();request.then(function(response){var totalResultCount=response.totalProductCount;/**
45
- * When the next check was written, getHighlightProducts and getLiveshoppingProducts
46
- * didn't deliver a totalProductCount within their responses - they simply returned all
47
- * available products.
48
- * So we set the products count of the response as totalProductCount to decrease the
49
- * amount of logic, which is necessary to deal with product related pipeline.
50
- */if(typeof totalResultCount==='undefined'&&(pipeline===SHOPGATE_CATALOG_GET_HIGHLIGHT_PRODUCTS||pipeline===SHOPGATE_CATALOG_GET_LIVESHOPPING_PRODUCTS)){totalResultCount=response.products.length;}dispatch(receiveProducts({hash:hash,requestParams:requestParams,products:response.products,totalResultCount:totalResultCount,cached:cached,cachedTime:cachedTime}));if(!isProductIdentifiersProductIdType(params===null||params===void 0?void 0:params.productIdType)&&Array.isArray(params===null||params===void 0?void 0:params.productIds)){var requestIds=params===null||params===void 0?void 0:params.productIds;var responseIds=response.products.map(function(product){return product.id;});var missingResponseIds=difference(requestIds,responseIds);if(missingResponseIds.length>0){dispatch(deleteProductsByIds(missingResponseIds));}}})["catch"](function(error){dispatch(errorProducts({errorCode:error.code,hash:hash,requestParams:requestParams}));});return request;};}export default fetchProducts;
162
+ */
163
+ onBeforeDispatch();
164
+ dispatch(receiveProductsCached({
165
+ hash,
166
+ requestParams,
167
+ products
168
+ }));
169
+ return Promise.resolve(resolveCachedProducts ? makeGetProductResultByCustomHash(hash)(state) : result);
170
+ }
171
+ return null;
172
+ }
173
+
174
+ // Fire the onBeforeDispatch callback to inform a caller that fetchProducts will return data.
175
+ onBeforeDispatch();
176
+ dispatch(requestProducts({
177
+ hash,
178
+ cached,
179
+ cachedTime,
180
+ requestParams
181
+ }));
182
+ const request = new PipelineRequest(pipeline).setInput(requestParams).dispatch();
183
+ request.then(response => {
184
+ let totalResultCount = response.totalProductCount;
185
+
186
+ /**
187
+ * When the next check was written, getHighlightProducts and getLiveshoppingProducts
188
+ * didn't deliver a totalProductCount within their responses - they simply returned all
189
+ * available products.
190
+ * So we set the products count of the response as totalProductCount to decrease the
191
+ * amount of logic, which is necessary to deal with product related pipeline.
192
+ */
193
+ if (typeof totalResultCount === 'undefined' && (pipeline === SHOPGATE_CATALOG_GET_HIGHLIGHT_PRODUCTS || pipeline === SHOPGATE_CATALOG_GET_LIVESHOPPING_PRODUCTS)) {
194
+ totalResultCount = response.products.length;
195
+ }
196
+ dispatch(receiveProducts({
197
+ hash,
198
+ requestParams,
199
+ products: response.products,
200
+ totalResultCount,
201
+ cached,
202
+ cachedTime
203
+ }));
204
+ if (!isProductIdentifiersProductIdType(params?.productIdType) && Array.isArray(params?.productIds)) {
205
+ const requestIds = params?.productIds;
206
+ const responseIds = response.products.map(product => product.id);
207
+ const missingResponseIds = difference(requestIds, responseIds);
208
+ if (missingResponseIds.length > 0) {
209
+ dispatch(deleteProductsByIds(missingResponseIds));
210
+ }
211
+ }
212
+ }).catch(error => {
213
+ dispatch(errorProducts({
214
+ errorCode: error.code,
215
+ hash,
216
+ requestParams
217
+ }));
218
+ });
219
+ return request;
220
+ };
221
+ }
222
+ export default fetchProducts;
@@ -1,4 +1,8 @@
1
- function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj;};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}import{getProductDataById}from'@shopgate/engage/product/selectors/product';import{shouldFetchData}from'@shopgate/pwa-common/helpers/redux';import fetchProducts,{isProductIdentifiersProductIdType}from"./fetchProducts";/**
1
+ import { getProductDataById } from '@shopgate/engage/product/selectors/product';
2
+ import { shouldFetchData } from '@shopgate/pwa-common/helpers/redux';
3
+ import fetchProducts, { isProductIdentifiersProductIdType } from "./fetchProducts";
4
+
5
+ /**
2
6
  * Dispatches a fetch products action to retrieve products by their IDs.
3
7
  * @param {Object|string[]} optionsOrProductIds Action options or an array of product IDs
4
8
  * (deprecated)
@@ -14,10 +18,66 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
14
18
  * @param {boolean} [includeFulfillment=true] (deprecated) Whether to include fulfillment data to
15
19
  * the request
16
20
  * @return {Function} A Redux Thunk
17
- */var fetchProductsById=function fetchProductsById(optionsOrProductIds){var componentId=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var cached=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;var includeFulfillment=arguments.length>3&&arguments[3]!==undefined?arguments[3]:true;return function(dispatch,getState){var localProductIds;var localComponentId;var localCached;var localIncludeFulfillment;var productIdType;if(Array.isArray(optionsOrProductIds)){// Backwards compatibility for previous implementation where the function had a parameter list
18
- localProductIds=optionsOrProductIds;localComponentId=componentId||null;localCached=cached!==undefined?cached:true;localIncludeFulfillment=includeFulfillment!==undefined?includeFulfillment:true;}else if(_typeof(optionsOrProductIds)==='object'&&optionsOrProductIds!==null){// New object parameter mode
19
- localProductIds=optionsOrProductIds.productIds;var _optionsOrProductIds$=optionsOrProductIds.componentId;localComponentId=_optionsOrProductIds$===void 0?null:_optionsOrProductIds$;var _optionsOrProductIds$2=optionsOrProductIds.cached;localCached=_optionsOrProductIds$2===void 0?true:_optionsOrProductIds$2;var _optionsOrProductIds$3=optionsOrProductIds.includeFulfillment;localIncludeFulfillment=_optionsOrProductIds$3===void 0?true:_optionsOrProductIds$3;productIdType=optionsOrProductIds.productIdType;}var requestProductIds=localProductIds;// When the productIds are regular product IDs, we can check the Redux store for existing
20
- // and only request the missing ones. That certainly doesn't work for SKUs, EANs or UPCs,
21
- if(!isProductIdentifiersProductIdType(productIdType)){var state=getState();var products=state.product.productsById;// Filter out only the products that are not yet available in the store.
22
- requestProductIds=localProductIds.filter(function(id){return shouldFetchData(products[id]);});// Then only perform a pipeline request if there are products missing.
23
- if(!requestProductIds.length){var productsById=localProductIds.map(function(id){return getProductDataById(state,{productId:id});});var totalProductCount=productsById.length;return{products:productsById,totalProductCount:totalProductCount};}}return dispatch(fetchProducts(_extends({},localComponentId&&{id:localComponentId},{cached:localCached,params:_extends({productIds:requestProductIds},productIdType&&{productIdType:productIdType}),includeFulfillment:localIncludeFulfillment,includeFilters:false,includeSort:false})));};};export default fetchProductsById;
21
+ */
22
+ const fetchProductsById = (optionsOrProductIds, componentId = null, cached = true, includeFulfillment = true) => (dispatch, getState) => {
23
+ let localProductIds;
24
+ let localComponentId;
25
+ let localCached;
26
+ let localIncludeFulfillment;
27
+ let productIdType;
28
+ if (Array.isArray(optionsOrProductIds)) {
29
+ // Backwards compatibility for previous implementation where the function had a parameter list
30
+ localProductIds = optionsOrProductIds;
31
+ localComponentId = componentId || null;
32
+ localCached = cached !== undefined ? cached : true;
33
+ localIncludeFulfillment = includeFulfillment !== undefined ? includeFulfillment : true;
34
+ } else if (typeof optionsOrProductIds === 'object' && optionsOrProductIds !== null) {
35
+ // New object parameter mode
36
+ ({
37
+ productIds: localProductIds,
38
+ componentId: localComponentId = null,
39
+ cached: localCached = true,
40
+ includeFulfillment: localIncludeFulfillment = true,
41
+ productIdType
42
+ } = optionsOrProductIds);
43
+ }
44
+ let requestProductIds = localProductIds;
45
+
46
+ // When the productIds are regular product IDs, we can check the Redux store for existing
47
+ // and only request the missing ones. That certainly doesn't work for SKUs, EANs or UPCs,
48
+ if (!isProductIdentifiersProductIdType(productIdType)) {
49
+ const state = getState();
50
+ const products = state.product.productsById;
51
+
52
+ // Filter out only the products that are not yet available in the store.
53
+ requestProductIds = localProductIds.filter(id => shouldFetchData(products[id]));
54
+
55
+ // Then only perform a pipeline request if there are products missing.
56
+ if (!requestProductIds.length) {
57
+ const productsById = localProductIds.map(id => getProductDataById(state, {
58
+ productId: id
59
+ }));
60
+ const totalProductCount = productsById.length;
61
+ return {
62
+ products: productsById,
63
+ totalProductCount
64
+ };
65
+ }
66
+ }
67
+ return dispatch(fetchProducts({
68
+ ...(localComponentId && {
69
+ id: localComponentId
70
+ }),
71
+ cached: localCached,
72
+ params: {
73
+ productIds: requestProductIds,
74
+ ...(productIdType && {
75
+ productIdType
76
+ })
77
+ },
78
+ includeFulfillment: localIncludeFulfillment,
79
+ includeFilters: false,
80
+ includeSort: false
81
+ }));
82
+ };
83
+ export default fetchProductsById;
@@ -1,26 +1,110 @@
1
- var _excluded=["useDefaultRequestForProductIds","productIdType"];function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key];}}return target;}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key];}return target;}import fetchHighlightProducts from"./fetchHighlightProducts";import fetchProducts from"./fetchProducts";import fetchProductsById from"./fetchProductsById";/**
1
+ import fetchHighlightProducts from "./fetchHighlightProducts";
2
+ import fetchProducts from "./fetchProducts";
3
+ import fetchProductsById from "./fetchProductsById";
4
+
5
+ /**
2
6
  * Dispatches other actions based on the query type.
3
7
  * @param {number|string} type The query type.
4
8
  * @param {string} value The value to use with the query.
5
9
  * @param {Object} options Any additional options for requesting products.
6
10
  * @param {string} [id=null] A unique id for the component that is using this action.
7
11
  * @return {Function} A Redux Thunk
8
- */var fetchProductsByQuery=function fetchProductsByQuery(type,value){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var id=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;return function(dispatch){/**
12
+ */
13
+ const fetchProductsByQuery = (type, value, options = {}, id = null) => dispatch => {
14
+ /**
9
15
  * Remove all properties from the options which are just intended to be used inside this function
10
16
  * and not supposed to be used for the actual products request.
11
- */var _options$useDefaultRe=options.useDefaultRequestForProductIds,useDefaultRequestForProductIds=_options$useDefaultRe===void 0?false:_options$useDefaultRe,_options$productIdTyp=options.productIdType,productIdType=_options$productIdTyp===void 0?undefined:_options$productIdTyp,sanitizedOptions=_objectWithoutProperties(options,_excluded);switch(type){// Product highlights
12
- case 1:{var params=_extends({},sanitizedOptions);return dispatch(fetchHighlightProducts(_extends({params:params},id&&{id:id})));}// Search phrase
13
- case 2:case 3:{var _params=_extends({searchPhrase:value},sanitizedOptions);return dispatch(fetchProducts(_extends({params:_params},id&&{id:id},{includeFilters:false})));}// Product ID's
14
- case 4:{/**
15
- * By default the productIds query type bypasses the regular product request logic. It will
16
- * just request the products that are not available in Redux yet.
17
- * This can cause update issues in the UI, since selectors might not return fresh data when
18
- * Redux changes.
19
- * So when the "useDefaultRequestForProductIds" flag is active, the regular request system is
20
- * used and whenever the fetch params change, new product data fill be fetched.
21
- *
22
- * ATTENTION: To make the system work completely, also the "getProductsResult" selector helper
23
- * needs to be called with this parameter.
24
- */if(useDefaultRequestForProductIds){var _params2=_extends({productIds:value,productIdType:productIdType},sanitizedOptions);// Limit and offset are not fully supported for product requests with productId list
25
- delete _params2.limit;delete _params2.offset;return dispatch(fetchProducts(_extends({params:_params2},id&&{id:id},{includeFilters:false,includeSort:false})));}return dispatch(fetchProductsById(value,id));}// Category
26
- case 5:{var _params3=_extends({categoryId:value},sanitizedOptions);return dispatch(fetchProducts(_extends({params:_params3},id&&{id:id},{includeFilters:false})));}default:}return null;};};export default fetchProductsByQuery;
17
+ */
18
+ const {
19
+ useDefaultRequestForProductIds = false,
20
+ productIdType = undefined,
21
+ ...sanitizedOptions
22
+ } = options;
23
+ switch (type) {
24
+ // Product highlights
25
+ case 1:
26
+ {
27
+ const params = {
28
+ ...sanitizedOptions
29
+ };
30
+ return dispatch(fetchHighlightProducts({
31
+ params,
32
+ ...(id && {
33
+ id
34
+ })
35
+ }));
36
+ }
37
+
38
+ // Search phrase
39
+ case 2:
40
+ case 3:
41
+ {
42
+ const params = {
43
+ searchPhrase: value,
44
+ ...sanitizedOptions
45
+ };
46
+ return dispatch(fetchProducts({
47
+ params,
48
+ ...(id && {
49
+ id
50
+ }),
51
+ includeFilters: false
52
+ }));
53
+ }
54
+
55
+ // Product ID's
56
+ case 4:
57
+ {
58
+ /**
59
+ * By default the productIds query type bypasses the regular product request logic. It will
60
+ * just request the products that are not available in Redux yet.
61
+ * This can cause update issues in the UI, since selectors might not return fresh data when
62
+ * Redux changes.
63
+ * So when the "useDefaultRequestForProductIds" flag is active, the regular request system is
64
+ * used and whenever the fetch params change, new product data fill be fetched.
65
+ *
66
+ * ATTENTION: To make the system work completely, also the "getProductsResult" selector helper
67
+ * needs to be called with this parameter.
68
+ */
69
+ if (useDefaultRequestForProductIds) {
70
+ const params = {
71
+ productIds: value,
72
+ productIdType,
73
+ ...sanitizedOptions
74
+ };
75
+
76
+ // Limit and offset are not fully supported for product requests with productId list
77
+ delete params.limit;
78
+ delete params.offset;
79
+ return dispatch(fetchProducts({
80
+ params,
81
+ ...(id && {
82
+ id
83
+ }),
84
+ includeFilters: false,
85
+ includeSort: false
86
+ }));
87
+ }
88
+ return dispatch(fetchProductsById(value, id));
89
+ }
90
+
91
+ // Category
92
+ case 5:
93
+ {
94
+ const params = {
95
+ categoryId: value,
96
+ ...sanitizedOptions
97
+ };
98
+ return dispatch(fetchProducts({
99
+ params,
100
+ ...(id && {
101
+ id
102
+ }),
103
+ includeFilters: false
104
+ }));
105
+ }
106
+ default:
107
+ }
108
+ return null;
109
+ };
110
+ export default fetchProductsByQuery;
@@ -1,8 +1,12 @@
1
- import fetchHighlightProducts from"./fetchHighlightProducts";/**
1
+ import fetchHighlightProducts from "./fetchHighlightProducts";
2
+
3
+ /**
2
4
  * Maybe requests highlight products from server.
3
5
  * @param {Object} options The options for the fetchProducts request.
4
6
  * @param {Object} options.params The params for the getHighlightProducts pipeline.
5
7
  * @param {string} [options.id=null] A unique id for the component that is using this action.
6
8
  * @return {Function} The dispatched action.
7
9
  * @deprecated
8
- */var getHighlightProducts=fetchHighlightProducts;export default getHighlightProducts;
10
+ */
11
+ const getHighlightProducts = fetchHighlightProducts;
12
+ export default getHighlightProducts;
@@ -1,5 +1,9 @@
1
- import fetchLiveshoppingProducts from"./fetchLiveshoppingProducts";/**
1
+ import fetchLiveshoppingProducts from "./fetchLiveshoppingProducts";
2
+
3
+ /**
2
4
  * Retrieves the information for the liveshopping products widget.
3
5
  * @return {Function} A redux thunk.
4
6
  * @deprecated
5
- */var getLiveshoppingProducts=fetchLiveshoppingProducts;export default getLiveshoppingProducts;
7
+ */
8
+ const getLiveshoppingProducts = fetchLiveshoppingProducts;
9
+ export default getLiveshoppingProducts;
@@ -1,8 +1,12 @@
1
- import fetchProduct from"./fetchProduct";/**
1
+ import fetchProduct from "./fetchProduct";
2
+
3
+ /**
2
4
  * Retrieves a product from the Redux store.
3
5
  * @param {string} productId The product ID.
4
6
  * @param {boolean} [forceFetch=false] Skips shouldFetchData check. Always fetches.
5
7
  * @param {boolean} [shouldProcessProductFlags=true] Skips processProductFlags()
6
8
  * @return {Function} A redux thunk.
7
9
  * @deprecated
8
- */var getProduct=fetchProduct;export default getProduct;
10
+ */
11
+ const getProduct = fetchProduct;
12
+ export default getProduct;
@@ -1,6 +1,10 @@
1
- import fetchProductDescription from"./fetchProductDescription";/**
1
+ import fetchProductDescription from "./fetchProductDescription";
2
+
3
+ /**
2
4
  * Maybe requests a product description from server.
3
5
  * @param {string} productId The product ID.
4
6
  * @return {Function} The dispatched action.
5
7
  * @deprecated
6
- */var getProductDescription=fetchProductDescription;export default getProductDescription;
8
+ */
9
+ const getProductDescription = fetchProductDescription;
10
+ export default getProductDescription;
@@ -1,7 +1,11 @@
1
- import fetchProductImages from"./fetchProductImages";/**
1
+ import fetchProductImages from "./fetchProductImages";
2
+
3
+ /**
2
4
  * Maybe requests images for a product from server.
3
5
  * @param {string} productId The product ID.
4
6
  * @param {Array} [formats] The requested formats.
5
7
  * @return {Function} The dispatched action.
6
8
  * @deprecated
7
- */var getProductImages=fetchProductImages;export default getProductImages;
9
+ */
10
+ const getProductImages = fetchProductImages;
11
+ export default getProductImages;
@@ -1,6 +1,10 @@
1
- import fetchProductOptions from"./fetchProductOptions";/**
1
+ import fetchProductOptions from "./fetchProductOptions";
2
+
3
+ /**
2
4
  * Retrieves product options from store.
3
5
  * @param {string} productId The product ID for which the product options are requested.
4
6
  * @return {Function} A Redux Thunk
5
7
  * @deprecated
6
- */var getProductOptions=fetchProductOptions;export default getProductOptions;
8
+ */
9
+ const getProductOptions = fetchProductOptions;
10
+ export default getProductOptions;
@@ -1,6 +1,10 @@
1
- import fetchProductProperties from"./fetchProductProperties";/**
1
+ import fetchProductProperties from "./fetchProductProperties";
2
+
3
+ /**
2
4
  * Maybe requests a product description from server.
3
5
  * @param {string} productId The product ID.
4
6
  * @return {Function} The dispatched action.
5
7
  * @deprecated
6
- */var getProductProperties=fetchProductProperties;export default getProductProperties;
8
+ */
9
+ const getProductProperties = fetchProductProperties;
10
+ export default getProductProperties;
@@ -1,4 +1,6 @@
1
- import fetchProductRelations from"./fetchProductRelations";/**
1
+ import fetchProductRelations from "./fetchProductRelations";
2
+
3
+ /**
2
4
  * Action starts product relation fetching process.
3
5
  * Returns early if product relation cache is still valid.
4
6
  * @param {Object} params Params.
@@ -7,4 +9,6 @@ import fetchProductRelations from"./fetchProductRelations";/**
7
9
  * @param {number} params.limit Query limit.
8
10
  * @returns {Function}
9
11
  * @deprecated
10
- */var getProductRelations=fetchProductRelations;export default getProductRelations;
12
+ */
13
+ const getProductRelations = fetchProductRelations;
14
+ export default getProductRelations;
@@ -1,6 +1,10 @@
1
- import fetchProductShipping from"./fetchProductShipping";/**
1
+ import fetchProductShipping from "./fetchProductShipping";
2
+
3
+ /**
2
4
  * Retrieves product shipping from the store.
3
5
  * @param {string} productId The product ID for which the product shipping is requested.
4
6
  * @return {Function} A Redux Thunk
5
7
  * @deprecated
6
- */var getProductShipping=fetchProductShipping;export default getProductShipping;
8
+ */
9
+ const getProductShipping = fetchProductShipping;
10
+ export default getProductShipping;
@@ -1,6 +1,10 @@
1
- import fetchProductVariants from"./fetchProductVariants";/**
1
+ import fetchProductVariants from "./fetchProductVariants";
2
+
3
+ /**
2
4
  * Retrieves product variants from store.
3
5
  * @param {string} productId The product ID for which the product variants are requested.
4
6
  * @return {Function} A Redux Thunk
5
7
  * @deprecated
6
- */var getProductVariants=fetchProductVariants;export default getProductVariants;
8
+ */
9
+ const getProductVariants = fetchProductVariants;
10
+ export default getProductVariants;