@shopgate/pwa-common-commerce 7.27.5-alpha.2 → 7.27.5
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.
- package/category/actions/fetchCategory.js +2 -3
- package/package.json +3 -3
- package/product/action-creators/expireProductData.js +8 -0
- package/product/action-creators/refreshExpiredPDPData.js +5 -0
- package/product/actions/fetchProducts.js +2 -6
- package/product/actions/fetchProductsById.js +9 -22
- package/product/actions/fetchProductsByQuery.js +5 -5
- package/product/constants/index.js +2 -2
- package/product/reducers/descriptionsByProductId.js +5 -2
- package/product/reducers/imagesByProductId.js +4 -2
- package/product/reducers/mediaByProductId.js +3 -2
- package/product/reducers/productsById.js +3 -2
- package/product/reducers/propertiesByProductId.js +2 -2
- package/product/reducers/resultsByHash.js +3 -2
- package/product/reducers/variantsByProductId.js +2 -2
- package/product/streams/index.js +9 -2
- package/product/subscriptions/index.js +2 -2
- package/product/actions/fetchProductsById.d.ts +0 -65
|
@@ -2,10 +2,9 @@ import PipelineRequest from'@shopgate/pwa-core/classes/PipelineRequest';import{s
|
|
|
2
2
|
* Fetches the data for a given category ID (including child categories).
|
|
3
3
|
* @param {string} categoryId The category ID.
|
|
4
4
|
* @return {Function} The dispatched action.
|
|
5
|
-
*/function fetchCategory(categoryId){return function(dispatch,getState){var category=getCategory(getState(),{categoryId:categoryId})
|
|
6
|
-
if(!shouldFetchData(category)){/**
|
|
5
|
+
*/function fetchCategory(categoryId){return function(dispatch,getState){var category=getCategory(getState(),{categoryId:categoryId});if(!shouldFetchData(category)){/**
|
|
7
6
|
* Child categories are maybe missing.
|
|
8
7
|
* So we need to check it (check happens inside fetchCategoryChildren).
|
|
9
8
|
* This is the case if we got categories from getRootCategory
|
|
10
|
-
*/if(category.childrenCount){dispatch(fetchCategoryChildren(categoryId));}return Promise.resolve(category);}// No data at all. So we have
|
|
9
|
+
*/if(category.childrenCount){dispatch(fetchCategoryChildren(categoryId));}return Promise.resolve(category);}// No data at all. So we have the fetch the category with children included
|
|
11
10
|
dispatch(requestCategory(categoryId));var request=new PipelineRequest(SHOPGATE_CATALOG_GET_CATEGORY).setInput({categoryId:categoryId,includeChildren:true}).setResponseBehavior({error:errorBehavior.modal()}).dispatch();request.then(function(result){dispatch(receiveCategory(categoryId,result,result.children||[]));})["catch"](function(error){dispatch(errorCategory(categoryId,error.code));});return request;};}/** @mixes {MutableFunction} */export default mutable(fetchCategory);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shopgate/pwa-common-commerce",
|
|
3
|
-
"version": "7.27.5
|
|
3
|
+
"version": "7.27.5",
|
|
4
4
|
"description": "Commerce library for the Shopgate Connect PWA.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Shopgate <support@shopgate.com>",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"reselect": "^4.1.8"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@shopgate/pwa-common": "7.27.5
|
|
23
|
-
"@shopgate/pwa-core": "7.27.5
|
|
22
|
+
"@shopgate/pwa-common": "7.27.5",
|
|
23
|
+
"@shopgate/pwa-core": "7.27.5",
|
|
24
24
|
"lodash": "^4.17.4",
|
|
25
25
|
"react": "~16.14.0",
|
|
26
26
|
"react-dom": "~16.14.0"
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{EXPIRE_PRODUCT_DATA}from"../constants";/**
|
|
2
|
+
* Dispatches the EXPIRE_PRODUCT_DATA action object.
|
|
3
|
+
* Depending on the provided scopes, it will mark different types of product data as expired which
|
|
4
|
+
* will trigger a refetch of that data when needed.
|
|
5
|
+
* @param {Object} [options] The options object.
|
|
6
|
+
* @param {("price"|"media"|"description")[]} [options.scopes=[]] The scopes to apply the action to.
|
|
7
|
+
* @return {Object} The EXPIRE_PRODUCT_DATA action.
|
|
8
|
+
*/var expireProductData=function expireProductData(){var _ref=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},_ref$scopes=_ref.scopes,scopes=_ref$scopes===void 0?[]:_ref$scopes;return{type:EXPIRE_PRODUCT_DATA,scopes:scopes};};export default expireProductData;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{REFRESH_EXPIRED_PDP_DATA}from"../constants";/**
|
|
2
|
+
* Creates the dispatched REFRESH_EXPIRED_PDP_DATA action object.
|
|
3
|
+
* When this action is dispatched, PDP subscriptions to fetch basic product data are re-triggered.
|
|
4
|
+
* @return {Object} The REFRESH_EXPIRED_PDP_DATA action.
|
|
5
|
+
*/var refreshExpiredPDPData=function refreshExpiredPDPData(){return{type:REFRESH_EXPIRED_PDP_DATA};};export default refreshExpiredPDPData;
|
|
@@ -1,8 +1,4 @@
|
|
|
1
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";/**
|
|
2
|
-
* Checks if a product ID type is a product identifiers type.
|
|
3
|
-
* @param {string} productIdType The product ID type to check.
|
|
4
|
-
* @returns {boolean}
|
|
5
|
-
*/export var isProductIdentifiersProductIdType=function isProductIdentifiersProductIdType(productIdType){return['sku','ean','upc'].includes(productIdType);};/**
|
|
6
2
|
* Process the pipeline params to be compatible.
|
|
7
3
|
* Currently the categoryId field cannot be used in combination with the filter field. In order to
|
|
8
4
|
* use them together the categoryId field has to be extracted into the filter field.
|
|
@@ -15,7 +11,7 @@ var _excluded=["offset","limit"];function _objectWithoutProperties(source,exclud
|
|
|
15
11
|
*/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});/**
|
|
16
12
|
* Check if the sort parameter should be included in the request parameters,
|
|
17
13
|
* and remove it if necessary.
|
|
18
|
-
*/if(includeSort===false&¶ms&¶ms.sort){delete newParams.sort;}
|
|
14
|
+
*/if(includeSort===false&¶ms&¶ms.sort){delete newParams.sort;}return newParams;};var getDefaultSortOrder=makeGetDefaultSortOrder();/**
|
|
19
15
|
* Retrieves a product from the Redux store.
|
|
20
16
|
* @param {Object} options The options for the getProducts request.
|
|
21
17
|
* @param {Object} options.params The params for the getProduct pipeline.
|
|
@@ -47,4 +43,4 @@ onBeforeDispatch();dispatch(requestProducts({hash:hash,cached:cached,cachedTime:
|
|
|
47
43
|
* available products.
|
|
48
44
|
* So we set the products count of the response as totalProductCount to decrease the
|
|
49
45
|
* 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(
|
|
46
|
+
*/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(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;
|
|
@@ -1,23 +1,10 @@
|
|
|
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);}
|
|
2
|
-
*
|
|
3
|
-
* @param {
|
|
4
|
-
*
|
|
5
|
-
* @param {
|
|
6
|
-
* @param {
|
|
7
|
-
* @param {boolean} [params.cached=true] Whether to cache the result by hash
|
|
8
|
-
* @param {boolean} [params.includeFulfillment=true] Whether to include fulfillment data to the
|
|
9
|
-
* request
|
|
10
|
-
*
|
|
11
|
-
* @param {string} [componentId=null] (deprecated) A unique id for the component that is using this
|
|
12
|
-
* action
|
|
13
|
-
* @param {boolean} [cached=true] (deprecated) Whether to cache the result by hash
|
|
14
|
-
* @param {boolean} [includeFulfillment=true] (deprecated) Whether to include fulfillment data to
|
|
15
|
-
* the request
|
|
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);}import{getProductDataById}from'@shopgate/engage/product/selectors/product';import{shouldFetchData}from'@shopgate/pwa-common/helpers/redux';import fetchProducts from"./fetchProducts";/**
|
|
2
|
+
* Retrieves products by id from the store.
|
|
3
|
+
* @param {Array} productIds The product id's to request.
|
|
4
|
+
* @param {string} [componentId=null] A unique id for the component that is using this action.
|
|
5
|
+
* @param {boolean} [cached=true] cache result by hash
|
|
6
|
+
* @param {boolean} [includeFulfillment=true] includes fulfillment
|
|
16
7
|
* @return {Function} A Redux Thunk
|
|
17
|
-
*/var fetchProductsById=function fetchProductsById(
|
|
18
|
-
|
|
19
|
-
|
|
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;
|
|
8
|
+
*/var fetchProductsById=function fetchProductsById(productIds){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 state=getState();var products=state.product.productsById;// Filter out only the products that are not yet available in the store.
|
|
9
|
+
var missingIds=productIds.filter(function(id){return shouldFetchData(products[id]);});// Then only perform a pipeline request if there are products missing.
|
|
10
|
+
if(!missingIds.length){var productsById=productIds.map(function(id){return getProductDataById(state,{productId:id});});var totalProductCount=productsById.length;return{products:productsById,totalProductCount:totalProductCount};}return dispatch(fetchProducts(_extends({},componentId&&{id:componentId},{cached:cached,params:{productIds:missingIds},includeFulfillment:includeFulfillment,includeFilters:false,includeSort:false})));};};export default fetchProductsById;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _excluded=["useDefaultRequestForProductIds"
|
|
1
|
+
var _excluded=["useDefaultRequestForProductIds"];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";/**
|
|
2
2
|
* Dispatches other actions based on the query type.
|
|
3
3
|
* @param {number|string} type The query type.
|
|
4
4
|
* @param {string} value The value to use with the query.
|
|
@@ -8,8 +8,8 @@ var _excluded=["useDefaultRequestForProductIds","productIdType"];function _exten
|
|
|
8
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){/**
|
|
9
9
|
* Remove all properties from the options which are just intended to be used inside this function
|
|
10
10
|
* 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,
|
|
12
|
-
case 1:{var params=_extends({},sanitizedOptions);
|
|
11
|
+
*/var _options$useDefaultRe=options.useDefaultRequestForProductIds,useDefaultRequestForProductIds=_options$useDefaultRe===void 0?false:_options$useDefaultRe,sanitizedOptions=_objectWithoutProperties(options,_excluded);switch(type){// Product highlights
|
|
12
|
+
case 1:{var params=_extends({},sanitizedOptions);dispatch(fetchHighlightProducts(_extends({params:params},id&&{id:id})));break;}// Search phrase
|
|
13
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
14
|
case 4:{/**
|
|
15
15
|
* By default the productIds query type bypasses the regular product request logic. It will
|
|
@@ -21,6 +21,6 @@ case 4:{/**
|
|
|
21
21
|
*
|
|
22
22
|
* ATTENTION: To make the system work completely, also the "getProductsResult" selector helper
|
|
23
23
|
* needs to be called with this parameter.
|
|
24
|
-
*/if(useDefaultRequestForProductIds){var _params2=_extends({productIds:value
|
|
25
|
-
delete _params2.limit;delete _params2.offset;
|
|
24
|
+
*/if(useDefaultRequestForProductIds){var _params2=_extends({productIds:value},sanitizedOptions);// Limit and offset are not fully supported for product requests with productId list
|
|
25
|
+
delete _params2.limit;delete _params2.offset;dispatch(fetchProducts(_extends({params:_params2},id&&{id:id},{includeFilters:false})));}else{dispatch(fetchProductsById(value,id));}break;}// Category
|
|
26
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;
|
|
@@ -10,9 +10,9 @@ export var REQUEST_PRODUCT_PROPERTIES='REQUEST_PRODUCT_PROPERTIES';export var RE
|
|
|
10
10
|
export var REQUEST_PRODUCT_SHIPPING='REQUEST_PRODUCT_SHIPPING';export var RECEIVE_PRODUCT_SHIPPING='RECEIVE_PRODUCT_SHIPPING';export var ERROR_PRODUCT_SHIPPING='ERROR_PRODUCT_SHIPPING';// PRODUCT IMAGES
|
|
11
11
|
export var REQUEST_PRODUCT_IMAGES='REQUEST_PRODUCT_IMAGES';export var RECEIVE_PRODUCT_IMAGES='RECEIVE_PRODUCT_IMAGES';export var ERROR_PRODUCT_IMAGES='ERROR_PRODUCT_IMAGES';// PRODUCT MEDIA
|
|
12
12
|
export var REQUEST_PRODUCT_MEDIA='REQUEST_PRODUCT_MEDIA';export var RECEIVE_PRODUCT_MEDIA='RECEIVE_PRODUCT_MEDIA';export var ERROR_PRODUCT_MEDIA='ERROR_PRODUCT_MEDIA';// CURRENT PRODUCT
|
|
13
|
-
export var RESET_CURRENT_PRODUCT='RESET_CURRENT_PRODUCT';export var EXPIRE_PRODUCT_BY_ID='EXPIRE_PRODUCT_BY_ID';export var EXPIRE_PRODUCTS_BY_HASH='EXPIRE_PRODUCTS_BY_HASH';export var DELETE_PRODUCTS_BY_IDS='DELETE_PRODUCTS_BY_IDS';export var SET_PRODUCT_ID='SET_PRODUCT_ID';export var SET_PRODUCT_VARIANT_ID='SET_PRODUCT_VARIANT_ID';export var SET_PRODUCT_QUANTITY='SET_PRODUCT_QUANTITY';export var SET_PRODUCT_OPTION='SET_PRODUCT_OPTION';// PRODUCT AVAILABILITY STATES
|
|
13
|
+
export var RESET_CURRENT_PRODUCT='RESET_CURRENT_PRODUCT';export var EXPIRE_PRODUCT_BY_ID='EXPIRE_PRODUCT_BY_ID';export var EXPIRE_PRODUCTS_BY_HASH='EXPIRE_PRODUCTS_BY_HASH';export var EXPIRE_PRODUCT_DATA='EXPIRE_PRODUCT_DATA';export var DELETE_PRODUCTS_BY_IDS='DELETE_PRODUCTS_BY_IDS';export var SET_PRODUCT_ID='SET_PRODUCT_ID';export var SET_PRODUCT_VARIANT_ID='SET_PRODUCT_VARIANT_ID';export var SET_PRODUCT_QUANTITY='SET_PRODUCT_QUANTITY';export var SET_PRODUCT_OPTION='SET_PRODUCT_OPTION';// PRODUCT AVAILABILITY STATES
|
|
14
14
|
export var AVAILABILITY_STATE_OK='ok';export var AVAILABILITY_STATE_WARNING='warning';export var AVAILABILITY_STATE_ALERT='alert';export var OPTION_TYPE_SELECT='select';export var OPTION_TYPE_TEXT='text';export var PROPERTIES_FILTER_WHITELIST='whitelist';export var PROPERTIES_FILTER_BLACKLIST='blacklist';// PRODUCT RELATIONS
|
|
15
15
|
export var REQUEST_PRODUCT_RELATIONS='REQUEST_PRODUCT_RELATIONS';export var RECEIVE_PRODUCT_RELATIONS='RECEIVE_PRODUCT_RELATIONS';export var ERROR_PRODUCT_RELATIONS='ERROR_PRODUCT_RELATIONS';export var PRODUCT_RELATIONS_DEFAULT_LIMIT=20;// PRODUCT RELATIONS TYPES
|
|
16
16
|
export var PRODUCT_RELATIONS_TYPE_CROSS_SELLING='crossSelling';export var PRODUCT_RELATIONS_TYPE_UPSELLING='upselling';export var PRODUCT_RELATIONS_TYPE_BONUS='bonus';export var PRODUCT_RELATIONS_TYPE_BOUGHT_WITH='boughtWith';export var PRODUCT_RELATIONS_TYPE_CUSTOM='custom';// PRODUCT METADATA
|
|
17
17
|
export var UPDATE_METADATA='UPDATE_METADATA';// PRODUCT NOT AVAILABLE + REASONS
|
|
18
|
-
export var PRODUCT_NOT_AVAILABLE='PRODUCT_NOT_AVAILABLE';export var NOT_AVAILABLE_EFFECTIVITY_DATES='EFFECTIVITY_DATES';
|
|
18
|
+
export var PRODUCT_NOT_AVAILABLE='PRODUCT_NOT_AVAILABLE';export var NOT_AVAILABLE_EFFECTIVITY_DATES='EFFECTIVITY_DATES';export var REFRESH_EXPIRED_PDP_DATA='REFRESH_EXPIRED_PDP_DATA';
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{PRODUCT_LIFETIME,REQUEST_PRODUCT_DESCRIPTION,RECEIVE_PRODUCT_DESCRIPTION,ERROR_PRODUCT_DESCRIPTION}from"../constants";/**
|
|
1
|
+
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{PRODUCT_LIFETIME,REQUEST_PRODUCT_DESCRIPTION,RECEIVE_PRODUCT_DESCRIPTION,ERROR_PRODUCT_DESCRIPTION,EXPIRE_PRODUCT_DATA}from"../constants";/**
|
|
2
2
|
* Stores product descriptions by their product ID.
|
|
3
3
|
* @param {Object} [state={}] The current state.
|
|
4
4
|
* @param {Object} action The action object.
|
|
5
5
|
* @return {Object} The new state.
|
|
6
|
-
*/export default function descriptionsByProductId(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var action=arguments.length>1?arguments[1]:undefined;switch(action.type){case REQUEST_PRODUCT_DESCRIPTION:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:true,expires:0})));case RECEIVE_PRODUCT_DESCRIPTION:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{description:action.description,isFetching:false,expires:Date.now()+PRODUCT_LIFETIME})));case ERROR_PRODUCT_DESCRIPTION:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:false})))
|
|
6
|
+
*/export default function descriptionsByProductId(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var action=arguments.length>1?arguments[1]:undefined;switch(action.type){case REQUEST_PRODUCT_DESCRIPTION:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:true,expires:0})));case RECEIVE_PRODUCT_DESCRIPTION:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{description:action.description,isFetching:false,expires:Date.now()+PRODUCT_LIFETIME})));case ERROR_PRODUCT_DESCRIPTION:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:false})));// Mark all product descriptions as expired when action is dispatched with
|
|
7
|
+
// the "description" scope
|
|
8
|
+
case EXPIRE_PRODUCT_DATA:{if(Array.isArray(action.scopes)&&action.scopes.includes('description')){// Expire all descriptions
|
|
9
|
+
return Object.keys(state).reduce(function(acc,productId){acc[productId]=_extends({},state[productId],{expires:0});return acc;},{});}return state;}default:return state;}}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{PRODUCT_LIFETIME,REQUEST_PRODUCT_IMAGES,RECEIVE_PRODUCT_IMAGES,ERROR_PRODUCT_IMAGES}from"../constants";/**
|
|
1
|
+
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{PRODUCT_LIFETIME,REQUEST_PRODUCT_IMAGES,RECEIVE_PRODUCT_IMAGES,ERROR_PRODUCT_IMAGES,EXPIRE_PRODUCT_DATA}from"../constants";/**
|
|
2
2
|
* Stores product images by product id
|
|
3
3
|
* @param {Object} state Current state.
|
|
4
4
|
* @param {Object} action The action object.
|
|
5
5
|
* @returns {Object}
|
|
6
|
-
*/export default function imagesByProductId(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var action=arguments.length>1?arguments[1]:undefined;switch(action.type){case REQUEST_PRODUCT_IMAGES:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:true,expires:0})));case RECEIVE_PRODUCT_IMAGES:return _extends({},state,_defineProperty({},action.productId,{isFetching:false,expires:Date.now()+PRODUCT_LIFETIME,images:action.productImages}));case ERROR_PRODUCT_IMAGES:return _extends({},state,_defineProperty({},action.productId,{isFetching:false}))
|
|
6
|
+
*/export default function imagesByProductId(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var action=arguments.length>1?arguments[1]:undefined;switch(action.type){case REQUEST_PRODUCT_IMAGES:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:true,expires:0})));case RECEIVE_PRODUCT_IMAGES:return _extends({},state,_defineProperty({},action.productId,{isFetching:false,expires:Date.now()+PRODUCT_LIFETIME,images:action.productImages}));case ERROR_PRODUCT_IMAGES:return _extends({},state,_defineProperty({},action.productId,{isFetching:false}));// Mark all product images as expired when action is dispatched with the "media" scope
|
|
7
|
+
case EXPIRE_PRODUCT_DATA:{if(Array.isArray(action.scopes)&&action.scopes.includes('media')){// Expire all descriptions
|
|
8
|
+
return Object.keys(state).reduce(function(acc,productId){acc[productId]=_extends({},state[productId],{expires:0});return acc;},{});}return state;}default:return state;}}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{PRODUCT_LIFETIME,REQUEST_PRODUCT_MEDIA,RECEIVE_PRODUCT_MEDIA,ERROR_PRODUCT_MEDIA}from"../constants";/**
|
|
1
|
+
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{PRODUCT_LIFETIME,REQUEST_PRODUCT_MEDIA,RECEIVE_PRODUCT_MEDIA,ERROR_PRODUCT_MEDIA,EXPIRE_PRODUCT_DATA}from"../constants";/**
|
|
2
2
|
* Stores product media by the ID of the related parent product.
|
|
3
3
|
* @param {Object} [state={}] The current state.
|
|
4
4
|
* @param {Object} action The action object.
|
|
5
5
|
* @return {Object} The new state.
|
|
6
|
-
*/export default function mediaByProductId(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var action=arguments.length>1?arguments[1]:undefined;switch(action.type){case REQUEST_PRODUCT_MEDIA:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:true,expires:0})));case RECEIVE_PRODUCT_MEDIA:{return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{media:action.media,isFetching:false,expires:Date.now()+PRODUCT_LIFETIME})));}case ERROR_PRODUCT_MEDIA:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:false})))
|
|
6
|
+
*/export default function mediaByProductId(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var action=arguments.length>1?arguments[1]:undefined;switch(action.type){case REQUEST_PRODUCT_MEDIA:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:true,expires:0})));case RECEIVE_PRODUCT_MEDIA:{return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{media:action.media,isFetching:false,expires:Date.now()+PRODUCT_LIFETIME})));}case ERROR_PRODUCT_MEDIA:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:false})));// Mark all product media as expired when action is dispatched with the "media" scope
|
|
7
|
+
case EXPIRE_PRODUCT_DATA:{if(Array.isArray(action.scopes)&&action.scopes.includes('media')){return Object.keys(state).reduce(function(acc,productId){acc[productId]=_extends({},state[productId],{expires:0});return acc;},{});}return state;}default:return state;}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
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);}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 _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return _typeof(key)==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(_typeof(input)!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(_typeof(res)!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{ENOTFOUND}from'@shopgate/pwa-core/constants/Pipeline';import{PRODUCT_LIFETIME,REQUEST_PRODUCT,RECEIVE_PRODUCT,RECEIVE_PRODUCTS,ERROR_PRODUCT,UPDATE_METADATA,EXPIRE_PRODUCT_BY_ID,DELETE_PRODUCTS_BY_IDS,RECEIVE_PRODUCT_RELATIONS}from"../constants";import handleProductCollection from"./helpers/handleProductCollection";/**
|
|
1
|
+
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);}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 _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return _typeof(key)==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(_typeof(input)!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(_typeof(res)!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{ENOTFOUND}from'@shopgate/pwa-core/constants/Pipeline';import{PRODUCT_LIFETIME,REQUEST_PRODUCT,RECEIVE_PRODUCT,RECEIVE_PRODUCTS,ERROR_PRODUCT,UPDATE_METADATA,EXPIRE_PRODUCT_BY_ID,DELETE_PRODUCTS_BY_IDS,RECEIVE_PRODUCT_RELATIONS,EXPIRE_PRODUCT_DATA}from"../constants";import handleProductCollection from"./helpers/handleProductCollection";/**
|
|
2
2
|
* Stores products by their ID.
|
|
3
3
|
* @param {Object} [state={}] The current state.
|
|
4
4
|
* @param {Object} action The action object.
|
|
@@ -7,4 +7,5 @@ function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="s
|
|
|
7
7
|
var _action$productId2=action.productId,ignore=state[_action$productId2],rest=_objectWithoutProperties(state,[_action$productId2].map(_toPropertyKey));return rest;}return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:false})));case UPDATE_METADATA:{var _state$action$product2=state[action.productId].productData,productData=_state$action$product2===void 0?{}:_state$action$product2;// Merge the given metadata with the existing metadata.
|
|
8
8
|
var metadata=_extends({},productData.metadata,{},action.metadata);// Put the metadata back into the productData.
|
|
9
9
|
var updatedProductData=_extends({},productData,{metadata:metadata});// Put the updated product back into the state.
|
|
10
|
-
return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{productData:updatedProductData})));}case EXPIRE_PRODUCT_BY_ID:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{expires:0})))
|
|
10
|
+
return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{productData:updatedProductData})));}case EXPIRE_PRODUCT_BY_ID:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{expires:0})));// Mark all product data as expired
|
|
11
|
+
case EXPIRE_PRODUCT_DATA:{if(Array.isArray(action.scopes)&&action.scopes.includes('price')){return Object.keys(state).reduce(function(accumulator,productId){accumulator[productId]=_extends({},accumulator[productId],{expires:0});return accumulator;},_extends({},state));}return state;}case DELETE_PRODUCTS_BY_IDS:{var nextState=_extends({},state);if(Array.isArray(action===null||action===void 0?void 0:action.productIds)){action.productIds.forEach(function(productId){delete nextState[productId];});}return nextState;}default:return state;}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{PRODUCT_LIFETIME,REQUEST_PRODUCT_PROPERTIES,RECEIVE_PRODUCT_PROPERTIES,ERROR_PRODUCT_PROPERTIES}from"../constants";/**
|
|
1
|
+
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{PRODUCT_LIFETIME,REQUEST_PRODUCT_PROPERTIES,RECEIVE_PRODUCT_PROPERTIES,ERROR_PRODUCT_PROPERTIES,EXPIRE_PRODUCT_DATA}from"../constants";/**
|
|
2
2
|
* Stores product properties by their product ID.
|
|
3
3
|
* @param {Object} [state={}] The current state.
|
|
4
4
|
* @param {Object} action The action object.
|
|
5
5
|
* @return {Object} The new state.
|
|
6
|
-
*/export default function propertiesByProductId(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var action=arguments.length>1?arguments[1]:undefined;switch(action.type){case REQUEST_PRODUCT_PROPERTIES:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:true,expires:0})));case RECEIVE_PRODUCT_PROPERTIES:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{properties:action.properties,isFetching:false,expires:Date.now()+PRODUCT_LIFETIME})));case ERROR_PRODUCT_PROPERTIES:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:false})));default:return state;}}
|
|
6
|
+
*/export default function propertiesByProductId(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var action=arguments.length>1?arguments[1]:undefined;switch(action.type){case REQUEST_PRODUCT_PROPERTIES:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:true,expires:0})));case RECEIVE_PRODUCT_PROPERTIES:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{properties:action.properties,isFetching:false,expires:Date.now()+PRODUCT_LIFETIME})));case ERROR_PRODUCT_PROPERTIES:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:false})));case EXPIRE_PRODUCT_DATA:{return Object.keys(state).reduce(function(acc,productId){acc[productId]=_extends({},state[productId],{expires:0});return acc;},{});}default:return state;}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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 uniq from'lodash/uniq';import pickBy from'lodash/pickBy';import{ENOTFOUND}from'@shopgate/pwa-core';import{SELECT_GLOBAL_LOCATION}from'@shopgate/engage/core';import{PRODUCT_LIFETIME,REQUEST_PRODUCTS,RECEIVE_PRODUCTS,ERROR_PRODUCTS,EXPIRE_PRODUCT_BY_ID,EXPIRE_PRODUCTS_BY_HASH,ERROR_PRODUCT}from"../constants";/**
|
|
1
|
+
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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 uniq from'lodash/uniq';import pickBy from'lodash/pickBy';import{ENOTFOUND}from'@shopgate/pwa-core';import{SELECT_GLOBAL_LOCATION}from'@shopgate/engage/core';import{PRODUCT_LIFETIME,REQUEST_PRODUCTS,RECEIVE_PRODUCTS,ERROR_PRODUCTS,EXPIRE_PRODUCT_BY_ID,EXPIRE_PRODUCTS_BY_HASH,ERROR_PRODUCT,EXPIRE_PRODUCT_DATA}from"../constants";/**
|
|
2
2
|
* Stores a collection of products by the related hash of the request parameters.
|
|
3
3
|
* @param {Object} [state={}] The current state.
|
|
4
4
|
* @param {Object} action The current redux action.
|
|
@@ -7,6 +7,7 @@ function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj
|
|
|
7
7
|
* If there are no previous products and no incoming products
|
|
8
8
|
* its set to empty array, otherwise it will be an array of the previous and the
|
|
9
9
|
* new products. Duplicates are removed.
|
|
10
|
-
*/var stateProducts=products||nextProducts.length?uniq([].concat(products||[],nextProducts.map(function(product){return product.id;}))):[];return _extends({},state,_defineProperty({},action.hash,_extends({},state[action.hash],{products:stateProducts,totalResultCount:typeof action.totalResultCount!=='undefined'?action.totalResultCount:null,isFetching:false,expires:action.cached?Date.now()+(action.cachedTime||PRODUCT_LIFETIME):0})));}/* Remove not found product from hash results */case ERROR_PRODUCT:if(action.errorCode===ENOTFOUND){return Object.keys(state).reduce(function(accumulator,hash){if(accumulator[hash].products&&accumulator[hash].products.includes(action.productId)){accumulator[hash]=_extends({},accumulator[hash],{products:accumulator[hash].products.filter(function(pId){return pId!==action.productId;})});}return accumulator;},_extends({},state));}return state;case EXPIRE_PRODUCTS_BY_HASH:{return _extends({},state,_defineProperty({},action.hash,_extends({},state[action.hash],{products:[],expires:0})));}case EXPIRE_PRODUCT_BY_ID:{var productIds=[].concat(action.productId);return Object.keys(state).reduce(function(accumulator,hash){if(accumulator[hash].products&&productIds.some(function(id){return accumulator[hash].products.includes(id);})){accumulator[hash]=_extends({},accumulator[hash],{expires:0},action.complete&&{products:accumulator[hash].products.filter(function(id){return!productIds.includes(id);})});}return accumulator;},_extends({},state));}
|
|
10
|
+
*/var stateProducts=products||nextProducts.length?uniq([].concat(products||[],nextProducts.map(function(product){return product.id;}))):[];return _extends({},state,_defineProperty({},action.hash,_extends({},state[action.hash],{products:stateProducts,totalResultCount:typeof action.totalResultCount!=='undefined'?action.totalResultCount:null,isFetching:false,expires:action.cached?Date.now()+(action.cachedTime||PRODUCT_LIFETIME):0})));}/* Remove not found product from hash results */case ERROR_PRODUCT:if(action.errorCode===ENOTFOUND){return Object.keys(state).reduce(function(accumulator,hash){if(accumulator[hash].products&&accumulator[hash].products.includes(action.productId)){accumulator[hash]=_extends({},accumulator[hash],{products:accumulator[hash].products.filter(function(pId){return pId!==action.productId;})});}return accumulator;},_extends({},state));}return state;case EXPIRE_PRODUCTS_BY_HASH:{return _extends({},state,_defineProperty({},action.hash,_extends({},state[action.hash],{products:[],expires:0})));}case EXPIRE_PRODUCT_BY_ID:{var productIds=[].concat(action.productId);return Object.keys(state).reduce(function(accumulator,hash){if(accumulator[hash].products&&productIds.some(function(id){return accumulator[hash].products.includes(id);})){accumulator[hash]=_extends({},accumulator[hash],{expires:0},action.complete&&{products:accumulator[hash].products.filter(function(id){return!productIds.includes(id);})});}return accumulator;},_extends({},state));}// Mark all product data as expired
|
|
11
|
+
case EXPIRE_PRODUCT_DATA:{if(Array.isArray(action.scopes)&&action.scopes.includes('price')){return Object.keys(state).reduce(function(accumulator,hash){accumulator[hash]=_extends({},accumulator[hash],{expires:0});return accumulator;},_extends({},state));}return state;}case ERROR_PRODUCTS:return _extends({},state,_defineProperty({},action.hash,_extends({},state[action.hash],{isFetching:false})));case SELECT_GLOBAL_LOCATION:// Remove all hashes that are not bound to a location
|
|
11
12
|
// because stock information may change per location
|
|
12
13
|
return pickBy(state,function(value,key){return!JSON.parse(key).locationCodes;});default:return state;}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{PRODUCT_LIFETIME,REQUEST_PRODUCT_VARIANTS,RECEIVE_PRODUCT_VARIANTS,ERROR_PRODUCT_VARIANTS,EXPIRE_PRODUCT_BY_ID}from"../constants";/**
|
|
1
|
+
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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{PRODUCT_LIFETIME,REQUEST_PRODUCT_VARIANTS,RECEIVE_PRODUCT_VARIANTS,ERROR_PRODUCT_VARIANTS,EXPIRE_PRODUCT_BY_ID,EXPIRE_PRODUCT_DATA}from"../constants";/**
|
|
2
2
|
* Stores product variants by the ID of the related parent product.
|
|
3
3
|
* @param {Object} [state={}] The current state.
|
|
4
4
|
* @param {Object} action The action object.
|
|
5
5
|
* @return {Object} The new state.
|
|
6
|
-
*/export default function variantsByProductId(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var action=arguments.length>1?arguments[1]:undefined;switch(action.type){case REQUEST_PRODUCT_VARIANTS:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:true,expires:0})));case RECEIVE_PRODUCT_VARIANTS:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{variants:action.variants,isFetching:false,expires:Date.now()+PRODUCT_LIFETIME})));case ERROR_PRODUCT_VARIANTS:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:false})));case EXPIRE_PRODUCT_BY_ID:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{expires:0})));default:return state;}}
|
|
6
|
+
*/export default function variantsByProductId(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var action=arguments.length>1?arguments[1]:undefined;switch(action.type){case REQUEST_PRODUCT_VARIANTS:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:true,expires:0})));case RECEIVE_PRODUCT_VARIANTS:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{variants:action.variants,isFetching:false,expires:Date.now()+PRODUCT_LIFETIME})));case ERROR_PRODUCT_VARIANTS:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{isFetching:false})));case EXPIRE_PRODUCT_BY_ID:return _extends({},state,_defineProperty({},action.productId,_extends({},state[action.productId],{expires:0})));case EXPIRE_PRODUCT_DATA:{return Object.keys(state).reduce(function(acc,productId){acc[productId]=_extends({},state[productId],{expires:0});return acc;},{});}default:return state;}}
|
package/product/streams/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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 _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import'rxjs/add/operator/switchMap';import'rxjs/add/observable/of';import{Observable}from'rxjs/Observable';import{ENOTFOUND}from'@shopgate/pwa-core';import{main$}from'@shopgate/pwa-common/streams/main';import{routeWillEnter$,routeWillLeave$,routeDidUpdate$}from'@shopgate/pwa-common/streams/router';import{pwaDidAppear$}from'@shopgate/pwa-common/streams';import{getCurrentRoute}from'@shopgate/pwa-common/selectors/router';import{hex2bin}from'@shopgate/pwa-common/helpers/data';import{getBaseProduct}from"../selectors/product";import{ITEM_PATTERN,ITEM_GALLERY_PATTERN,RECEIVE_PRODUCT,RECEIVE_PRODUCT_CACHED,RECEIVE_PRODUCT_RELATIONS,ERROR_PRODUCT,ERROR_PRODUCT_DESCRIPTION,ERROR_PRODUCT_IMAGES,ERROR_PRODUCT_VARIANTS,ERROR_PRODUCT_PROPERTIES,ERROR_PRODUCT_OPTIONS,ERROR_PRODUCT_SHIPPING,PRODUCT_NOT_AVAILABLE,RECEIVE_PRODUCTS_CACHED,RECEIVE_PRODUCTS,PROVIDE_PRODUCT_BUFFER_TIME,PROVIDE_PRODUCT}from"../constants";/**
|
|
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 _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import'rxjs/add/operator/switchMap';import'rxjs/add/observable/of';import{Observable}from'rxjs/Observable';import{ENOTFOUND}from'@shopgate/pwa-core';import{main$}from'@shopgate/pwa-common/streams/main';import{routeWillEnter$,routeWillLeave$,routeDidUpdate$}from'@shopgate/pwa-common/streams/router';import{pwaDidAppear$}from'@shopgate/pwa-common/streams';import{getCurrentRoute}from'@shopgate/pwa-common/selectors/router';import{hex2bin}from'@shopgate/pwa-common/helpers/data';import{getBaseProduct}from"../selectors/product";import{ITEM_PATTERN,ITEM_GALLERY_PATTERN,RECEIVE_PRODUCT,RECEIVE_PRODUCT_CACHED,RECEIVE_PRODUCT_RELATIONS,ERROR_PRODUCT,ERROR_PRODUCT_DESCRIPTION,ERROR_PRODUCT_IMAGES,ERROR_PRODUCT_VARIANTS,ERROR_PRODUCT_PROPERTIES,ERROR_PRODUCT_OPTIONS,ERROR_PRODUCT_SHIPPING,PRODUCT_NOT_AVAILABLE,RECEIVE_PRODUCTS_CACHED,RECEIVE_PRODUCTS,PROVIDE_PRODUCT_BUFFER_TIME,PROVIDE_PRODUCT,EXPIRE_PRODUCT_DATA,REFRESH_EXPIRED_PDP_DATA}from"../constants";/**
|
|
2
2
|
* Emits when the category route comes active again after a legacy page was active.
|
|
3
3
|
*/export var productRouteReappeared$=pwaDidAppear$.filter(function(_ref){var action=_ref.action;return action.route.pattern===ITEM_PATTERN;});export var productWillEnter$=routeWillEnter$.merge(routeDidUpdate$).filter(function(_ref2){var action=_ref2.action;return action.route.pattern===ITEM_PATTERN;});export var variantWillUpdate$=routeDidUpdate$.filter(function(_ref3){var action=_ref3.action;return action.route.pattern===ITEM_PATTERN;});export var galleryWillEnter$=routeWillEnter$.filter(function(_ref4){var action=_ref4.action;return action.route.pattern===ITEM_GALLERY_PATTERN;});export var galleryWillLeave$=routeWillLeave$.filter(function(_ref5){var action=_ref5.action;return action.route.pattern===ITEM_GALLERY_PATTERN;});export var productReceived$=main$.filter(function(_ref6){var action=_ref6.action;return action.type===RECEIVE_PRODUCT;}).distinctUntilChanged();/** Dispatched when ERROR_PRODUCT received */export var errorProduct$=main$.filter(function(_ref7){var action=_ref7.action;return action.type===ERROR_PRODUCT;});/** Dispatched when ERROR_PRODUCT_* (resources) is received */export var errorProductResources$=main$.filter(function(_ref8){var action=_ref8.action;return[ERROR_PRODUCT_DESCRIPTION,ERROR_PRODUCT_IMAGES,ERROR_PRODUCT_VARIANTS,ERROR_PRODUCT_PROPERTIES,ERROR_PRODUCT_OPTIONS,ERROR_PRODUCT_SHIPPING].includes(action.type);});/** Dispatched when ERROR_PRODUCT ENOTFOUND received */export var errorProductNotFound$=errorProduct$.filter(function(_ref9){var action=_ref9.action;return action.errorCode===ENOTFOUND;});/** Dispatched when ERROR_PRODUCT_* ENOTFOUND received */export var errorProductResourcesNotFound$=errorProductResources$.filter(function(_ref10){var action=_ref10.action;return action.errorCode===ENOTFOUND;});export var cachedProductReceived$=main$.filter(function(_ref11){var action=_ref11.action;return action.type===RECEIVE_PRODUCT_CACHED;}).distinctUntilChanged();export var receivedVisibleProduct$=productReceived$.merge(cachedProductReceived$).filter(function(_ref12){var action=_ref12.action,getState=_ref12.getState;var route=getCurrentRoute(getState());if(typeof action.productData==='undefined'||typeof action.productData.id==='undefined'){return false;}if(!route.params.productId&&!route.state.productId){return false;}if(route.state.productId){return action.productData.id===route.state.productId;}return action.productData.id===hex2bin(route.params.productId);});/**
|
|
4
4
|
* Emits when a product page was initially opened and its data is present.
|
|
@@ -14,4 +14,11 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
|
|
|
14
14
|
*/export var productsReceivedCached$=main$.filter(function(_ref20){var action=_ref20.action;return action.type===RECEIVE_PRODUCTS_CACHED;});/**
|
|
15
15
|
* Buffer PROVIDE_PRODUCT action and map to have array of requested products
|
|
16
16
|
* @type {Observable}
|
|
17
|
-
*/export var fetchProductsRequested$=main$.filter(function(_ref21){var action=_ref21.action;return action.type===PROVIDE_PRODUCT;}).bufferTime(PROVIDE_PRODUCT_BUFFER_TIME).filter(function(actions){return actions.length>0;}).map(function(actions){var productIds=actions.map(function(_ref22){var productId=_ref22.action.productId;return productId;});return _extends({},actions[0],{action:_extends({},actions[0].action,{productId:productIds})});})
|
|
17
|
+
*/export var fetchProductsRequested$=main$.filter(function(_ref21){var action=_ref21.action;return action.type===PROVIDE_PRODUCT;}).bufferTime(PROVIDE_PRODUCT_BUFFER_TIME).filter(function(actions){return actions.length>0;}).map(function(actions){var productIds=actions.map(function(_ref22){var productId=_ref22.action.productId;return productId;});return _extends({},actions[0],{action:_extends({},actions[0].action,{productId:productIds})});});/**
|
|
18
|
+
* Emits when product data has been expired.
|
|
19
|
+
*/export var productDataExpired$=main$.filter(function(_ref23){var action=_ref23.action;return action.type===EXPIRE_PRODUCT_DATA;});/**
|
|
20
|
+
* Emits when the REFRESH_EXPIRED_PDP_DATA action is dispatched
|
|
21
|
+
* and the current route is a product detail page.
|
|
22
|
+
*
|
|
23
|
+
* Stream payload will contain a route object that reflects the current active product / variant.
|
|
24
|
+
*/export var pdpDataNeedsRefresh$=main$.filter(function(_ref24){var action=_ref24.action;return action.type===REFRESH_EXPIRED_PDP_DATA;}).filter(function(_ref25){var getState=_ref25.getState;var _getCurrentRoute=getCurrentRoute(getState()),pattern=_getCurrentRoute.pattern;return pattern===ITEM_PATTERN;}).switchMap(function(params){var getState=params.getState;var route=getCurrentRoute(getState());return Observable.of(_extends({},params,{action:{route:route}}));});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import{hex2bin}from'@shopgate/pwa-common/helpers/data';import showModal from'@shopgate/pwa-common/actions/modal/showModal';import{getThemeSettings,historyPop,historyPush,routeWillEnter$,routeWillLeave$}from'@shopgate/engage/core';import{ToastProvider}from'@shopgate/pwa-common/providers';import{getSearchRoute}from'@shopgate/pwa-common-commerce/search';import fetchProduct from"../actions/fetchProduct";import fetchProductDescription from"../actions/fetchProductDescription";import fetchProductProperties from"../actions/fetchProductProperties";import fetchProductImages from"../actions/fetchProductImages";import fetchProductShipping from"../actions/fetchProductShipping";import fetchProductVariants from"../actions/fetchProductVariants";import fetchProductOptions from"../actions/fetchProductOptions";import fetchProductMedia from"../actions/fetchProductMedia";import{productWillEnter$,galleryWillEnter$,productReceived$,cachedProductReceived$,productRelationsReceived$,receivedVisibleProduct$,errorProductResourcesNotFound$,visibleProductNotFound$,productNotAvailable$,fetchProductsRequested$}from"../streams";import fetchProductsById from"../actions/fetchProductsById";import{getProductRelationsByHash}from"../selectors/relations";import{checkoutSucceeded$}from"../../checkout/streams";import expireProductById from"../action-creators/expireProductById";import{ITEM_PATTERN,NOT_AVAILABLE_EFFECTIVITY_DATES}from"../constants";import{getProductName}from"../selectors/product";/**
|
|
1
|
+
function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import{hex2bin}from'@shopgate/pwa-common/helpers/data';import showModal from'@shopgate/pwa-common/actions/modal/showModal';import{getThemeSettings,historyPop,historyPush,routeWillEnter$,routeWillLeave$}from'@shopgate/engage/core';import{ToastProvider}from'@shopgate/pwa-common/providers';import{getSearchRoute}from'@shopgate/pwa-common-commerce/search';import fetchProduct from"../actions/fetchProduct";import fetchProductDescription from"../actions/fetchProductDescription";import fetchProductProperties from"../actions/fetchProductProperties";import fetchProductImages from"../actions/fetchProductImages";import fetchProductShipping from"../actions/fetchProductShipping";import fetchProductVariants from"../actions/fetchProductVariants";import fetchProductOptions from"../actions/fetchProductOptions";import fetchProductMedia from"../actions/fetchProductMedia";import{productWillEnter$,galleryWillEnter$,productReceived$,cachedProductReceived$,productRelationsReceived$,receivedVisibleProduct$,errorProductResourcesNotFound$,visibleProductNotFound$,productNotAvailable$,fetchProductsRequested$,pdpDataNeedsRefresh$}from"../streams";import fetchProductsById from"../actions/fetchProductsById";import{getProductRelationsByHash}from"../selectors/relations";import{checkoutSucceeded$}from"../../checkout/streams";import expireProductById from"../action-creators/expireProductById";import{ITEM_PATTERN,NOT_AVAILABLE_EFFECTIVITY_DATES}from"../constants";import{getProductName}from"../selectors/product";var fetchPDPData$=productWillEnter$.merge(pdpDataNeedsRefresh$);/**
|
|
2
2
|
* Product subscriptions.
|
|
3
3
|
* @param {Function} subscribe The subscribe function.
|
|
4
|
-
*/function product(subscribe){var processProduct$=productReceived$.merge(cachedProductReceived$);subscribe(
|
|
4
|
+
*/function product(subscribe){var processProduct$=productReceived$.merge(cachedProductReceived$);subscribe(fetchPDPData$,function(_ref){var action=_ref.action,dispatch=_ref.dispatch;var productId=action.route.params.productId;var variantId=action.route.state.productId;var id=variantId||hex2bin(productId);dispatch(fetchProduct(id));dispatch(fetchProductDescription(id));dispatch(fetchProductProperties(id));dispatch(fetchProductImages(id));dispatch(fetchProductShipping(id));/**
|
|
5
5
|
* This feature is currently in BETA testing.
|
|
6
6
|
* It should only be used for approved BETA Client Projects
|
|
7
7
|
*/dispatch(fetchProductMedia(id));});subscribe(galleryWillEnter$,function(_ref2){var action=_ref2.action,dispatch=_ref2.dispatch;var productId=action.route.params.productId;dispatch(fetchProductImages(hex2bin(productId)));dispatch(fetchProductMedia(hex2bin(productId)));});subscribe(processProduct$,function(_ref3){var action=_ref3.action,dispatch=_ref3.dispatch;var _action$productData=action.productData,id=_action$productData.id,_action$productData$f=_action$productData.flags,flags=_action$productData$f===void 0?{hasVariants:false,hasOptions:false}:_action$productData$f,baseProductId=_action$productData.baseProductId,active=_action$productData.active;if(baseProductId){dispatch(fetchProduct(baseProductId));dispatch(fetchProductImages(baseProductId));}if(active&&flags.hasVariants){dispatch(fetchProductVariants(id));}if(active&&flags.hasOptions){dispatch(fetchProductOptions(id));}});var errorProductResourcesNotFoundFirst$=receivedVisibleProduct$.filter(function(_ref4){var _action$productData2;var action=_ref4.action;var active=action===null||action===void 0?void 0:(_action$productData2=action.productData)===null||_action$productData2===void 0?void 0:_action$productData2.active;return!!active;}).switchMap(function(){return errorProductResourcesNotFound$.first();});/** Refresh product data after some of resources has ENOTFOUND code */subscribe(errorProductResourcesNotFoundFirst$,function(_ref5){var action=_ref5.action,dispatch=_ref5.dispatch;var productId=action.productId;dispatch(fetchProduct(productId,true));});var productNotFound$=visibleProductNotFound$.withLatestFrom(receivedVisibleProduct$.startWith({action:{productData:{}}}));/** Visible product is no more available */subscribe(productNotFound$,function(_ref6){var _ref7=_slicedToArray(_ref6,2),_ref7$=_ref7[0],action=_ref7$.action,dispatch=_ref7$.dispatch,productData=_ref7[1].action.productData;var productId=action.productId;var name=productData.id===productId?productData.name:productId;dispatch(showModal({confirm:null,dismiss:'modal.ok',title:'modal.title_error',message:'product.no_more_found',params:{name:name}}));dispatch(historyPop());dispatch(expireProductById(productId));});subscribe(productRelationsReceived$,function(_ref8){var dispatch=_ref8.dispatch,getState=_ref8.getState,action=_ref8.action;var hash=action.hash;var productIds=getProductRelationsByHash(hash)(getState());dispatch(fetchProductsById(productIds));});/**
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
// fetchProductsById.d.ts
|
|
2
|
-
|
|
3
|
-
import { ThunkAction } from 'redux-thunk';
|
|
4
|
-
import { AnyAction } from 'redux';
|
|
5
|
-
|
|
6
|
-
export interface FetchProductsResult {
|
|
7
|
-
products: any[];
|
|
8
|
-
totalProductCount: number;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface FetchProductsConfig {
|
|
12
|
-
/**
|
|
13
|
-
* Array of product IDs to fetch.
|
|
14
|
-
*/
|
|
15
|
-
productIds: string[];
|
|
16
|
-
/**
|
|
17
|
-
* Optional unique identifier for the component making the request.
|
|
18
|
-
*/
|
|
19
|
-
componentId?: string | null;
|
|
20
|
-
/**
|
|
21
|
-
* Whether to cache the result by hash.
|
|
22
|
-
*/
|
|
23
|
-
cached?: boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Whether to include fulfillment information in the response.
|
|
26
|
-
*/
|
|
27
|
-
includeFulfillment?: boolean;
|
|
28
|
-
/**
|
|
29
|
-
* Optional type of the product IDs. Needs only to be set if the product IDs are not regular
|
|
30
|
-
* product IDs.
|
|
31
|
-
*/
|
|
32
|
-
productIdType?: 'id' | 'sku' | 'ean' | 'upc';
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Dispatches a fetch products action to retrieve products by their IDs.
|
|
37
|
-
*/
|
|
38
|
-
declare function fetchProductsById(
|
|
39
|
-
options: FetchProductsConfig
|
|
40
|
-
): ThunkAction<Promise<FetchProductsResult | void>, any, unknown, AnyAction>;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Dispatches a fetch products action to retrieve products by their IDs.
|
|
44
|
-
* @deprecated Use the object-based API instead.
|
|
45
|
-
*/
|
|
46
|
-
declare function fetchProductsById(
|
|
47
|
-
/**
|
|
48
|
-
* Array of product IDs to fetch.
|
|
49
|
-
*/
|
|
50
|
-
productIds: string[],
|
|
51
|
-
/**
|
|
52
|
-
* Optional unique identifier for the component making the request.
|
|
53
|
-
*/
|
|
54
|
-
componentId?: string | null,
|
|
55
|
-
/**
|
|
56
|
-
* Whether to cache the result by hash.
|
|
57
|
-
*/
|
|
58
|
-
cached?: boolean,
|
|
59
|
-
/**
|
|
60
|
-
* Whether to include fulfillment information in the response.
|
|
61
|
-
*/
|
|
62
|
-
includeFulfillment?: boolean
|
|
63
|
-
): ThunkAction<Promise<FetchProductsResult | void>, any, unknown, AnyAction>;
|
|
64
|
-
|
|
65
|
-
export default fetchProductsById;
|