@shopgate/pwa-common-commerce 7.30.0-alpha.7 → 7.30.0-alpha.9
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/cart/action-creators/addCouponsToCart.js +9 -2
- package/cart/action-creators/addProductsToCart.js +9 -2
- package/cart/action-creators/deleteCouponsFromCart.js +9 -2
- package/cart/action-creators/deleteProductsFromCart.js +9 -2
- package/cart/action-creators/errorAddCouponsToCart.js +10 -2
- package/cart/action-creators/errorAddProductsToCart.js +10 -2
- package/cart/action-creators/errorCart.js +8 -2
- package/cart/action-creators/errorDeleteCouponsFromCart.js +10 -2
- package/cart/action-creators/errorDeleteProductsFromCart.js +10 -2
- package/cart/action-creators/errorUpdateProductsInCart.js +10 -2
- package/cart/action-creators/receiveCart.js +9 -2
- package/cart/action-creators/requestCart.js +8 -2
- package/cart/action-creators/setCartProductPendingCount.js +9 -2
- package/cart/action-creators/setCouponFieldError.js +9 -2
- package/cart/action-creators/setCouponFieldValue.js +9 -2
- package/cart/action-creators/setFulfillmentSlot.js +9 -2
- package/cart/action-creators/successAddCouponsToCart.js +10 -2
- package/cart/action-creators/successAddProductsToCart.js +8 -2
- package/cart/action-creators/successDeleteCouponsFromCart.js +8 -2
- package/cart/action-creators/successDeleteProductsFromCart.js +8 -2
- package/cart/action-creators/successUpdateProductsInCart.js +8 -2
- package/cart/action-creators/updateProductsInCart.js +9 -2
- package/cart/actions/addCouponsToCart.js +52 -8
- package/cart/actions/addProductsToCart.js +80 -11
- package/cart/actions/deleteCouponsFromCart.js +39 -6
- package/cart/actions/deleteProductsFromCart.js +38 -6
- package/cart/actions/fetchCart.js +52 -8
- package/cart/actions/updateProductsInCart.js +44 -6
- package/cart/constants/PipelineErrors.js +6 -1
- package/cart/constants/Pipelines.js +6 -1
- package/cart/constants/Portals.js +85 -1
- package/cart/constants/index.js +39 -2
- package/cart/helpers/config.js +47 -2
- package/cart/helpers/createPipelineErrorList.js +30 -4
- package/cart/helpers/fulfillmentSlots.js +37 -4
- package/cart/helpers/index.js +14 -3
- package/cart/helpers/quantity.js +23 -4
- package/cart/helpers/shipping.js +57 -2
- package/cart/helpers/tax.js +26 -2
- package/cart/index.js +25 -5
- package/cart/mock.js +130 -1
- package/cart/reducers/couponField.js +30 -2
- package/cart/reducers/data.js +98 -6
- package/cart/reducers/index.js +7 -1
- package/cart/selectors/index.js +181 -31
- package/cart/selectors/spec.js +189 -2
- package/cart/streams/index.js +176 -29
- package/cart/subscriptions/index.js +307 -30
- package/category/action-creators/errorCategory.js +10 -2
- package/category/action-creators/errorCategoryChildren.js +9 -2
- package/category/action-creators/errorRootCategories.js +8 -2
- package/category/action-creators/receiveCategory.js +12 -2
- package/category/action-creators/receiveCategoryChildren.js +10 -2
- package/category/action-creators/receiveRootCategories.js +9 -2
- package/category/action-creators/requestCategory.js +9 -2
- package/category/action-creators/requestCategoryChildren.js +9 -2
- package/category/action-creators/requestRootCategories.js +8 -2
- package/category/actions/fetchCategory.js +47 -5
- package/category/actions/fetchCategoryChildren.js +30 -2
- package/category/actions/fetchCategoryOrRootCategories.js +16 -2
- package/category/actions/fetchCategoryProducts.js +36 -2
- package/category/actions/fetchRootCategories.js +31 -2
- package/category/actions/getCategory.js +10 -2
- package/category/constants/Pipelines.js +3 -1
- package/category/constants/Portals.js +56 -3
- package/category/constants/index.js +17 -2
- package/category/helpers/index.js +27 -3
- package/category/index.js +19 -5
- package/category/mock.js +176 -1
- package/category/reducers/categoriesById.js +65 -3
- package/category/reducers/childrenByCategoryId.js +55 -4
- package/category/reducers/helpers/handleCategoryCollection.js +24 -3
- package/category/reducers/helpers/handleReceivedCategories.js +3 -1
- package/category/reducers/index.js +12 -2
- package/category/reducers/rootCategories.js +31 -2
- package/category/selectors/index.js +115 -16
- package/category/streams/index.js +82 -4
- package/category/subscriptions/index.js +96 -3
- package/checkout/action-creators/successCheckout.js +9 -2
- package/checkout/actions/fetchCheckoutUrl.js +28 -3
- package/checkout/constants/Pipelines.js +1 -1
- package/checkout/constants/index.js +3 -2
- package/checkout/index.js +11 -4
- package/checkout/selectors/index.js +7 -2
- package/checkout/streams/index.js +8 -2
- package/checkout/subscriptions/index.js +35 -6
- package/favorites/action-creators/index.js +206 -24
- package/favorites/actions/addFavorites.js +41 -3
- package/favorites/actions/addFavoritesList.js +27 -2
- package/favorites/actions/fetchFavoriteIds.js +49 -5
- package/favorites/actions/fetchFavorites.js +60 -5
- package/favorites/actions/fetchFavoritesList.js +47 -3
- package/favorites/actions/fetchFavoritesListsWithItems.js +32 -3
- package/favorites/actions/getFavorites.js +6 -2
- package/favorites/actions/removeFavorites.js +32 -3
- package/favorites/actions/removeFavoritesList.js +24 -2
- package/favorites/actions/toggleFavorites.js +68 -10
- package/favorites/actions/updateFavorites.js +39 -3
- package/favorites/actions/updateFavoritesList.js +26 -2
- package/favorites/constants/Pipelines.js +9 -1
- package/favorites/constants/Portals.js +32 -4
- package/favorites/constants/index.js +37 -5
- package/favorites/index.js +14 -4
- package/favorites/mock.js +89 -4
- package/favorites/reducers/index.js +7 -1
- package/favorites/reducers/lists.js +74 -2
- package/favorites/reducers/products.js +231 -24
- package/favorites/selectors/index.js +188 -24
- package/favorites/streams/index.js +135 -23
- package/favorites/streams/spec.js +517 -8
- package/favorites/subscriptions/index.js +260 -25
- package/favorites/subscriptions/spec.js +700 -28
- package/filter/action-creators/errorFilters.js +9 -2
- package/filter/action-creators/index.js +4 -1
- package/filter/action-creators/receiveFilters.js +10 -2
- package/filter/action-creators/requestFilters.js +9 -2
- package/filter/action-creators/updateFilters.js +8 -2
- package/filter/actions/fetchFilters.js +46 -3
- package/filter/actions/getFilters.js +6 -2
- package/filter/actions/helpers/buildFilterParams.js +34 -2
- package/filter/actions/helpers/buildRequestFilters.js +35 -2
- package/filter/actions/helpers/processFilters.js +10 -2
- package/filter/actions/helpers/processParams.js +26 -2
- package/filter/constants/Pipelines.js +1 -1
- package/filter/constants/Portals.js +39 -3
- package/filter/constants/index.js +8 -1
- package/filter/index.js +12 -4
- package/filter/reducers/helpers/enrichFilters.js +11 -3
- package/filter/reducers/index.js +5 -1
- package/filter/reducers/resultsByHash.js +43 -3
- package/filter/selectors/index.js +47 -6
- package/filter/streams/index.js +30 -1
- package/filter/subscriptions/index.js +34 -2
- package/market/constants/Portals.js +22 -4
- package/market/constants/index.js +2 -1
- package/market/helpers/showReturnPolicy.js +3 -1
- package/market/helpers/showTaxDisclaimer.js +3 -1
- package/market/index.js +6 -2
- package/orders/constants.js +2 -1
- package/package.json +4 -4
- package/product/action-creators/deleteProductsByIds.js +10 -2
- package/product/action-creators/errorProduct.js +10 -2
- package/product/action-creators/errorProductDescription.js +10 -2
- package/product/action-creators/errorProductImages.js +10 -2
- package/product/action-creators/errorProductMedia.js +10 -2
- package/product/action-creators/errorProductOptions.js +10 -2
- package/product/action-creators/errorProductProperties.js +10 -2
- package/product/action-creators/errorProductRelations.js +9 -2
- package/product/action-creators/errorProductShipping.js +10 -2
- package/product/action-creators/errorProductVariants.js +10 -2
- package/product/action-creators/errorProducts.js +9 -2
- package/product/action-creators/expireProductById.js +10 -2
- package/product/action-creators/expireProductData.js +11 -2
- package/product/action-creators/expireProductsByHash.js +9 -2
- package/product/action-creators/productNotAvailable.js +10 -2
- package/product/action-creators/provideProduct.js +9 -2
- package/product/action-creators/receiveProduct.js +10 -2
- package/product/action-creators/receiveProductCached.js +9 -2
- package/product/action-creators/receiveProductDescription.js +10 -2
- package/product/action-creators/receiveProductImages.js +10 -2
- package/product/action-creators/receiveProductMedia.js +10 -2
- package/product/action-creators/receiveProductOptions.js +10 -2
- package/product/action-creators/receiveProductProperties.js +10 -2
- package/product/action-creators/receiveProductRelations.js +12 -2
- package/product/action-creators/receiveProductShipping.js +10 -2
- package/product/action-creators/receiveProductVariants.js +10 -2
- package/product/action-creators/receiveProducts.js +16 -2
- package/product/action-creators/receiveProductsCached.js +9 -2
- package/product/action-creators/refreshExpiredPDPData.js +8 -2
- package/product/action-creators/requestProduct.js +10 -2
- package/product/action-creators/requestProductDescription.js +9 -2
- package/product/action-creators/requestProductImages.js +9 -2
- package/product/action-creators/requestProductMedia.js +9 -2
- package/product/action-creators/requestProductOptions.js +9 -2
- package/product/action-creators/requestProductProperties.js +9 -2
- package/product/action-creators/requestProductRelations.js +10 -2
- package/product/action-creators/requestProductShipping.js +9 -2
- package/product/action-creators/requestProductVariants.js +9 -2
- package/product/action-creators/requestProducts.js +9 -2
- package/product/action-creators/setProductId.js +9 -2
- package/product/action-creators/setProductQuantity.js +9 -2
- package/product/action-creators/setProductVariantId.js +9 -2
- package/product/actions/changeSortOrder.js +21 -2
- package/product/actions/fetchHighlightProducts.js +18 -2
- package/product/actions/fetchLiveshoppingProducts.js +14 -2
- package/product/actions/fetchProduct.js +52 -3
- package/product/actions/fetchProductDescription.js +30 -2
- package/product/actions/fetchProductImages.js +31 -2
- package/product/actions/fetchProductMedia.js +35 -2
- package/product/actions/fetchProductOptions.js +31 -2
- package/product/actions/fetchProductProperties.js +30 -2
- package/product/actions/fetchProductRelations.js +63 -2
- package/product/actions/fetchProductShipping.js +31 -2
- package/product/actions/fetchProductVariants.js +31 -2
- package/product/actions/fetchProducts.js +189 -17
- package/product/actions/fetchProductsById.js +68 -8
- package/product/actions/fetchProductsByQuery.js +102 -18
- package/product/actions/getHighlightProducts.js +6 -2
- package/product/actions/getLiveshoppingProducts.js +6 -2
- package/product/actions/getProduct.js +6 -2
- package/product/actions/getProductDescription.js +6 -2
- package/product/actions/getProductImages.js +6 -2
- package/product/actions/getProductOptions.js +6 -2
- package/product/actions/getProductProperties.js +6 -2
- package/product/actions/getProductRelations.js +6 -2
- package/product/actions/getProductShipping.js +6 -2
- package/product/actions/getProductVariants.js +6 -2
- package/product/actions/getProducts.js +6 -2
- package/product/actions/getProductsById.js +6 -2
- package/product/actions/getProductsByQuery.js +6 -2
- package/product/actions/processProductFlags.js +35 -3
- package/product/actions/updateMetadata.js +17 -2
- package/product/collections/ProductImageFormats.js +48 -8
- package/product/collections/index.js +1 -1
- package/product/constants/Pipelines.js +12 -1
- package/product/constants/Portals.js +200 -33
- package/product/constants/index.js +90 -18
- package/product/helpers/index.js +61 -8
- package/product/index.js +36 -6
- package/product/mock.js +1002 -2
- package/product/reducers/descriptionsByProductId.js +54 -5
- package/product/reducers/helpers/formatOptions.js +17 -2
- package/product/reducers/helpers/handleProductCollection.js +19 -2
- package/product/reducers/imagesByProductId.js +51 -4
- package/product/reducers/index.js +23 -1
- package/product/reducers/mediaByProductId.js +55 -3
- package/product/reducers/optionsByProductId.js +41 -2
- package/product/reducers/productRelationsByHash.js +43 -2
- package/product/reducers/productsById.js +122 -7
- package/product/reducers/propertiesByProductId.js +48 -2
- package/product/reducers/resultsByHash.js +125 -9
- package/product/reducers/shippingByProductId.js +37 -2
- package/product/reducers/variantsByProductId.js +56 -2
- package/product/selectors/options.js +90 -13
- package/product/selectors/page.js +62 -13
- package/product/selectors/price.js +81 -18
- package/product/selectors/product.js +549 -59
- package/product/selectors/product.mock.js +327 -12
- package/product/selectors/relations.js +35 -5
- package/product/selectors/variants.js +91 -15
- package/product/streams/index.js +167 -13
- package/product/subscriptions/index.js +210 -4
- package/reviews/action-creators/errorProductReviews.js +9 -2
- package/reviews/action-creators/errorReviews.js +9 -2
- package/reviews/action-creators/errorSubmitReview.js +9 -2
- package/reviews/action-creators/errorUserReview.js +9 -2
- package/reviews/action-creators/flushUserReview.js +8 -2
- package/reviews/action-creators/receiveProductReviews.js +11 -2
- package/reviews/action-creators/receiveReviews.js +12 -2
- package/reviews/action-creators/receiveSubmitReview.js +9 -2
- package/reviews/action-creators/receiveUserReview.js +10 -2
- package/reviews/action-creators/requestProductReviews.js +10 -2
- package/reviews/action-creators/requestReviews.js +9 -2
- package/reviews/action-creators/requestSubmitReview.js +9 -2
- package/reviews/action-creators/requestUserReview.js +9 -2
- package/reviews/action-creators/resetSubmittedReview.js +9 -2
- package/reviews/action-creators/spec.js +40 -1
- package/reviews/actions/fetchProductReviews.js +37 -2
- package/reviews/actions/fetchReviews.js +38 -2
- package/reviews/actions/fetchUserReview.js +31 -2
- package/reviews/actions/flushUserReview.js +5 -1
- package/reviews/actions/getProductReviews.js +6 -2
- package/reviews/actions/getUserReview.js +6 -2
- package/reviews/actions/spec.js +241 -4
- package/reviews/actions/submitReview.js +63 -3
- package/reviews/constants/Pipelines.js +4 -1
- package/reviews/constants/Portals.js +4 -1
- package/reviews/constants/index.js +26 -7
- package/reviews/index.js +15 -4
- package/reviews/mock.js +172 -11
- package/reviews/reducers/index.js +11 -1
- package/reviews/reducers/mock.js +14 -2
- package/reviews/reducers/reviewsByHash.js +52 -6
- package/reviews/reducers/reviewsById.js +27 -2
- package/reviews/reducers/reviewsByProductId.js +47 -2
- package/reviews/reducers/spec.js +211 -2
- package/reviews/reducers/userReviewsByProductId.js +68 -2
- package/reviews/selectors/index.js +123 -19
- package/reviews/selectors/mock.js +100 -1
- package/reviews/selectors/spec.js +100 -1
- package/reviews/streams/index.js +37 -5
- package/reviews/streams/spec.js +25 -1
- package/reviews/subscriptions/index.js +27 -2
- package/scanner/action-creators/errorHandleScanner.js +11 -2
- package/scanner/action-creators/scannerFinished.js +11 -2
- package/scanner/action-creators/startScanner.js +8 -2
- package/scanner/action-creators/successHandleScanner.js +11 -2
- package/scanner/actions/handleBarCode.js +22 -2
- package/scanner/actions/handleNoResults.js +23 -2
- package/scanner/actions/handleQrCode.js +116 -6
- package/scanner/actions/handleSearch.js +33 -2
- package/scanner/constants/Portals.js +22 -1
- package/scanner/constants/index.js +17 -1
- package/scanner/helpers/index.js +115 -5
- package/scanner/index.js +19 -5
- package/scanner/streams/index.js +36 -1
- package/scanner/subscriptions/index.js +78 -8
- package/search/action-creators/errorSearchResults.js +10 -2
- package/search/action-creators/receiveSearchResults.js +11 -2
- package/search/action-creators/receiveSearchSuggestions.js +10 -2
- package/search/action-creators/requestSearchResults.js +10 -2
- package/search/action-creators/requestSearchSuggestions.js +9 -2
- package/search/actions/fetchSearchResults.js +66 -8
- package/search/actions/fetchSearchSuggestions.js +36 -2
- package/search/constants/Pipelines.js +1 -1
- package/search/constants/Portals.js +9 -2
- package/search/constants/index.js +10 -2
- package/search/helpers/index.js +5 -2
- package/search/helpers/removeHighlightingPlaceholders.js +4 -1
- package/search/helpers/spec.js +19 -1
- package/search/index.js +17 -5
- package/search/reducers/index.js +38 -2
- package/search/selectors/index.js +23 -4
- package/search/streams/index.js +51 -3
- package/search/subscriptions/index.js +132 -5
|
@@ -1,70 +1,182 @@
|
|
|
1
|
-
import{routeWillEnter$}from'@shopgate/pwa-common/streams/router';
|
|
1
|
+
import { routeWillEnter$ } from '@shopgate/pwa-common/streams/router';
|
|
2
|
+
import { main$ } from '@shopgate/pwa-common/streams/main';
|
|
3
|
+
import { appDidStart$ } from '@shopgate/pwa-common/streams/app';
|
|
4
|
+
import { userDidLogin$, userDidLogout$ } from '@shopgate/pwa-common/streams/user';
|
|
5
|
+
import { getCurrentPathname } from '@shopgate/pwa-common/selectors/router';
|
|
6
|
+
import { WISH_LIST_PATH } from '@shopgate/engage/account/constants/routes';
|
|
7
|
+
import { FAVORITES_PATH, ADD_PRODUCT_TO_FAVORITES, REMOVE_PRODUCT_FROM_FAVORITES, RECEIVE_FAVORITES, ERROR_FAVORITES, ERROR_FETCH_FAVORITES, REQUEST_ADD_FAVORITES, SUCCESS_ADD_FAVORITES, ERROR_ADD_FAVORITES, REQUEST_REMOVE_FAVORITES, SUCCESS_REMOVE_FAVORITES, ERROR_REMOVE_FAVORITES, IDLE_SYNC_FAVORITES, REQUEST_FLUSH_FAVORITES_BUFFER, FAVORITES_LIMIT_ERROR, FETCH_FAVORITES_THROTTLE, FAVORITE_ACTION_BUFFER_TIME, FAVORITE_BUTTON_DEBOUNCE_TIME, SUCCESS_ADD_FAVORITES_LIST, REQUEST_UPDATE_FAVORITES, UPDATE_PRODUCT_IN_FAVORITES, FAVORITE_QUANTITY_DEBOUNCE_TIME } from "../constants";
|
|
8
|
+
|
|
9
|
+
/**
|
|
2
10
|
* @link https://developer.shopgate.com/references/engage/streams/favorites
|
|
3
|
-
*/
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
4
14
|
* Gets triggered when the favorites page is about to be entered.
|
|
5
15
|
* @type {Observable}
|
|
6
|
-
*/
|
|
16
|
+
*/
|
|
17
|
+
export const favoritesWillEnter$ = routeWillEnter$.filter(({
|
|
18
|
+
action
|
|
19
|
+
}) => action.route.pattern === FAVORITES_PATH || action.route.pathname === WISH_LIST_PATH);
|
|
20
|
+
|
|
21
|
+
/**
|
|
7
22
|
* Gets triggered when ADD_PRODUCT_TO_FAVORITES action is dispatched
|
|
8
|
-
*/
|
|
23
|
+
*/
|
|
24
|
+
export const addProductToFavorites$ = main$.filter(({
|
|
25
|
+
action
|
|
26
|
+
}) => action.type === ADD_PRODUCT_TO_FAVORITES);
|
|
27
|
+
|
|
28
|
+
/**
|
|
9
29
|
* Gets triggered when the debounce time of `addProductToFavorites` passes.
|
|
10
30
|
* @type {Observable}
|
|
11
|
-
*/
|
|
31
|
+
*/
|
|
32
|
+
export const addProductToFavoritesDebounced$ = main$.filter(({
|
|
33
|
+
action
|
|
34
|
+
}) => action.type === ADD_PRODUCT_TO_FAVORITES).debounceTime(FAVORITE_BUTTON_DEBOUNCE_TIME);
|
|
35
|
+
|
|
36
|
+
/**
|
|
12
37
|
* Gets triggered when the debounce time of `updateProductInFavorites` passes.
|
|
13
38
|
* @type {Observable}
|
|
14
|
-
*/
|
|
39
|
+
*/
|
|
40
|
+
export const updateProductInFavoritesDebounced$ = main$.filter(({
|
|
41
|
+
action
|
|
42
|
+
}) => action.type === UPDATE_PRODUCT_IN_FAVORITES).debounceTime(FAVORITE_QUANTITY_DEBOUNCE_TIME);
|
|
43
|
+
|
|
44
|
+
/**
|
|
15
45
|
* Gets triggered when the debounce time of `removeProductFromFavorites` passes.
|
|
16
46
|
* @type {Observable}
|
|
17
|
-
*/
|
|
47
|
+
*/
|
|
48
|
+
export const removeProductFromFavoritesDebounced$ = main$.filter(({
|
|
49
|
+
action
|
|
50
|
+
}) => action.type === REMOVE_PRODUCT_FROM_FAVORITES).debounceTime(FAVORITE_BUTTON_DEBOUNCE_TIME);
|
|
51
|
+
|
|
52
|
+
/**
|
|
18
53
|
* Gets triggered when any errors related to the favorite list occur.
|
|
19
54
|
* @type {Observable}
|
|
20
|
-
*/
|
|
55
|
+
*/
|
|
56
|
+
export const favoritesError$ = main$.filter(({
|
|
57
|
+
action
|
|
58
|
+
}) => [ERROR_FETCH_FAVORITES, ERROR_ADD_FAVORITES, ERROR_REMOVE_FAVORITES, ERROR_FAVORITES // local favorite errors, unrelated to network requests
|
|
59
|
+
].includes(action.type));
|
|
60
|
+
|
|
61
|
+
/**
|
|
21
62
|
* Gets triggered when errors occur, that are only related to the frontend part of the
|
|
22
63
|
* favorite list.
|
|
23
64
|
* @type {Observable}
|
|
24
|
-
*/
|
|
65
|
+
*/
|
|
66
|
+
export const errorFavoritesLimit$ = favoritesError$.filter(({
|
|
67
|
+
action
|
|
68
|
+
}) => action.type === ERROR_FAVORITES && action.error && action.error.code === FAVORITES_LIMIT_ERROR);
|
|
69
|
+
|
|
70
|
+
/**
|
|
25
71
|
* Gets triggered when the app started or when the favorites page is about to be entered.
|
|
26
72
|
* @type {Observable}
|
|
27
|
-
*/
|
|
73
|
+
*/
|
|
74
|
+
export const shouldFetchFavorites$ = favoritesWillEnter$.merge(appDidStart$);
|
|
75
|
+
|
|
76
|
+
/**
|
|
28
77
|
* Gets triggered when the favorite list should be refreshed (without
|
|
29
78
|
* @type {Observable}
|
|
30
|
-
*/
|
|
79
|
+
*/
|
|
80
|
+
export const shouldFetchFreshFavorites$ = userDidLogin$.merge(userDidLogout$);
|
|
81
|
+
|
|
82
|
+
/**
|
|
31
83
|
* Gets triggered when the favorites updated in any way.
|
|
32
84
|
* @type {Observable}
|
|
33
|
-
*/
|
|
85
|
+
*/
|
|
86
|
+
export const favoritesDidUpdate$ = main$.filter(({
|
|
87
|
+
action
|
|
88
|
+
}) => [REQUEST_ADD_FAVORITES, ERROR_ADD_FAVORITES, REQUEST_REMOVE_FAVORITES, ERROR_REMOVE_FAVORITES, RECEIVE_FAVORITES, ERROR_FETCH_FAVORITES].includes(action.type));
|
|
89
|
+
|
|
90
|
+
/**
|
|
34
91
|
* Gets triggered when an "add to favorites" action is being placed into the favorite list buffer.
|
|
35
92
|
* @type {Observable}
|
|
36
|
-
*/
|
|
93
|
+
*/
|
|
94
|
+
export const favoritesWillAddItem$ = main$.filter(({
|
|
95
|
+
action
|
|
96
|
+
}) => action.type === REQUEST_ADD_FAVORITES);
|
|
97
|
+
|
|
98
|
+
/**
|
|
37
99
|
* Gets triggered when a single product has been successfully added to the favorite list.
|
|
38
100
|
* @type {Observable}
|
|
39
|
-
*/
|
|
101
|
+
*/
|
|
102
|
+
export const favoritesDidAddItem$ = main$.filter(({
|
|
103
|
+
action
|
|
104
|
+
}) => action.type === SUCCESS_ADD_FAVORITES);
|
|
105
|
+
|
|
106
|
+
/**
|
|
40
107
|
* Gets triggered when a "remove from favorites" action is being placed into the favorite
|
|
41
108
|
* list buffer.
|
|
42
109
|
* @type {Observable}
|
|
43
|
-
*/
|
|
110
|
+
*/
|
|
111
|
+
export const favoritesWillRemoveItem$ = main$.filter(({
|
|
112
|
+
action
|
|
113
|
+
}) => action.type === REQUEST_REMOVE_FAVORITES);
|
|
114
|
+
|
|
115
|
+
/**
|
|
44
116
|
* Gets triggered when a single product has been successfully removed from the favorite list.
|
|
45
117
|
* @type {Observable}
|
|
46
|
-
*/
|
|
118
|
+
*/
|
|
119
|
+
export const favoritesDidRemoveItem$ = main$.filter(({
|
|
120
|
+
action
|
|
121
|
+
}) => action.type === SUCCESS_REMOVE_FAVORITES);
|
|
122
|
+
|
|
123
|
+
/**
|
|
47
124
|
* Gets triggered when the favorite list has successfully been received from the backend.
|
|
48
125
|
* @type {Observable}
|
|
49
|
-
*/
|
|
126
|
+
*/
|
|
127
|
+
export const receiveFavorites$ = main$.filter(({
|
|
128
|
+
action
|
|
129
|
+
}) => action.type === RECEIVE_FAVORITES);
|
|
130
|
+
export const receiveFavoritesWhileVisible$ = receiveFavorites$.filter(({
|
|
131
|
+
getState
|
|
132
|
+
}) => {
|
|
133
|
+
const currentPath = getCurrentPathname(getState());
|
|
134
|
+
return currentPath === FAVORITES_PATH || currentPath === WISH_LIST_PATH;
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
/**
|
|
50
138
|
* Gets triggered whenever all favorite changes have been successfully processed or once when
|
|
51
139
|
* any of the buffered change requests fails.
|
|
52
140
|
* @type {Observable}
|
|
53
|
-
*/
|
|
141
|
+
*/
|
|
142
|
+
export const favoritesSyncIdle$ = main$.filter(({
|
|
143
|
+
action
|
|
144
|
+
}) => action.type === IDLE_SYNC_FAVORITES);
|
|
145
|
+
|
|
146
|
+
/**
|
|
54
147
|
* Gets triggered after an favorites list has been added.
|
|
55
|
-
*/
|
|
148
|
+
*/
|
|
149
|
+
export const favoritesListAdded$ = main$.filter(({
|
|
150
|
+
action
|
|
151
|
+
}) => action.type === SUCCESS_ADD_FAVORITES_LIST);
|
|
152
|
+
|
|
153
|
+
/**
|
|
56
154
|
* Gets triggered when the favorites should be refreshed to maintain data consistency.
|
|
57
155
|
* @type {Observable}
|
|
58
|
-
*/
|
|
156
|
+
*/
|
|
157
|
+
export const refreshFavorites$ = favoritesSyncIdle$.debounceTime(FETCH_FAVORITES_THROTTLE);
|
|
158
|
+
|
|
159
|
+
/**
|
|
59
160
|
* Gets triggered when a product is requested to be added, removed or updated
|
|
60
161
|
* from the favorite list.
|
|
61
162
|
* @type {Observable}
|
|
62
|
-
*/
|
|
163
|
+
*/
|
|
164
|
+
export const didRequestChangeFavorites$ = main$.filter(({
|
|
165
|
+
action
|
|
166
|
+
}) => action.type === REQUEST_ADD_FAVORITES || action.type === REQUEST_REMOVE_FAVORITES || action.type === REQUEST_UPDATE_FAVORITES);
|
|
167
|
+
|
|
168
|
+
/**
|
|
63
169
|
* Gets triggered when the favorites action buffer should be flushed immediately.
|
|
64
170
|
* @type {Observable}
|
|
65
|
-
*/
|
|
171
|
+
*/
|
|
172
|
+
export const didRequestFlushFavoritesBuffer$ = main$.filter(({
|
|
173
|
+
action
|
|
174
|
+
}) => action.type === REQUEST_FLUSH_FAVORITES_BUFFER);
|
|
175
|
+
|
|
176
|
+
/**
|
|
66
177
|
* Gets triggered when the favorites buffer is supposed to be flushed after some delay time or
|
|
67
178
|
* when the `requestFlushFavoritesBuffer` action was triggered.
|
|
68
179
|
* @type {Observable}
|
|
69
|
-
*/
|
|
180
|
+
*/
|
|
181
|
+
export const didReceiveFlushFavoritesBuffer$ = didRequestChangeFavorites$.buffer(didRequestChangeFavorites$.debounceTime(FAVORITE_ACTION_BUFFER_TIME) // Compress delayed actions into a single one
|
|
70
182
|
.merge(didRequestFlushFavoritesBuffer$));
|