{"version":3,"sources":["webpack:///./src/frontend/state/ui/initial-state.js","webpack:///./src/frontend/apps/my-tradera/app/state/actions/payments-actions.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/item-helper.js","webpack:///./src/frontend/state/views/report-item/api.js","webpack:///./src/frontend/state/views/report-item/actions.js","webpack:///./src/frontend/state/views/view-item/constants.js","webpack:///./src/frontend/components/alink/index.js","webpack:///./src/frontend/apps/syi/script/app_react/services/user-data.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/my-tradera.js","webpack:///./src/frontend/hooks/use-format-utc-date-in-swedish-timezone.js","webpack:///./src/frontend/state/multi-currency/selectors.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/cookies.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/payloads/purchase-order.js","webpack:///./src/frontend/apps/my-tradera/app/state/actions/purchase-order.js","webpack:///./src/frontend/state/bank-id/modal-state.js","webpack:///./src/frontend/state/views/shipping-calculator/reducer.js","webpack:///./src/frontend/constants/breakpoints.js","webpack:///./src/frontend/state/views/checkout/reducer.js","webpack:///./src/frontend/apps/my-tradera/app/constants/page.js","webpack:///./src/frontend/apps/tradera/components/vip/helpers/analytics.js","webpack:///./src/frontend/apps/my-tradera/app/constants/urls.js","webpack:///./src/frontend/state/views/shipping-calculator/selectors.js","webpack:///./src/frontend/components/multi-currency/multi-currency.jsx","webpack:///./src/frontend/apps/my-tradera/app/utils/feature-toggles.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/item-columns.js","webpack:///./src/frontend/state/views/tradera-shop/action-types.js","webpack:///./src/frontend/utils/cache.js","webpack:///./src/frontend/apps/tradera/components/vip/bidding/bid-details.jsx","webpack:///./src/frontend/state/discover/action-types.js","webpack:///./src/frontend/state/views/view-item/api.js","webpack:///./src/frontend/components/portals/loading-portal.jsx","webpack:///./src/frontend/state/ui/action-types.js","webpack:///./src/frontend/apps/my-tradera/app/data/leave-feedback-service.js","webpack:///./src/frontend/state/page/action-types.js","webpack:///./src/frontend/constants/sentry-redux-filters.js","webpack:///./src/frontend/utils/sentry/redux.js","webpack:///./src/frontend/utils/set-nested-object-value.js","webpack:///./src/frontend/state/views/cart/reducer.js","webpack:///./src/frontend/state/views/cart/initial-state.js","webpack:///./src/frontend/state/push-notifications/constants.js","webpack:///./src/frontend/apps/my-tradera/app/state/action-types/purchase-order.js","webpack:///./src/frontend/state/views/shipping-checkout/selector.js","webpack:///./src/frontend/state/views/shipping-checkout/reducer.js","webpack:///./src/frontend/state/views/shipping-checkout/initial-state.js","webpack:///./src/frontend/components/application-error-boundary/application-error-boundary.jsx","webpack:///./src/backend/utils/error.js","webpack:///./src/frontend/components/international-shipping-modal/constants.js","webpack:///./src/frontend/state/bank-id/action-types.js","webpack:///./src/frontend/components/loader/loader.jsx","webpack:///./src/frontend/state/discover/api.js","webpack:///./src/frontend/state/views/syi/reducers/short-description.js","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/constants.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/payloads/initial-payload.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/purchase-order-actions-helper-seller.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/purchase-order-actions-helper-buyer.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/purchase-actions.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/purchase-order.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/payloads/wait-for-backend.js","webpack:///./src/frontend/apps/my-tradera/app/components/hoc/with-page-init.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/hoc/make-responsive.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/hoc/make-sticky.jsx","webpack:///./src/frontend/state/views/view-item/selectors.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/formats.js","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/smiley.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/figure.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/figure.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/rating.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/rating.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/detailed-rating.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/detailed-rating.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/feedbacks-actions.js","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/item-not-received.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/unpaid-item.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/comment-input.module.scss","webpack:///./src/frontend/components/form-controls/auto-height-text-area.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/comment-input.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/leave-feedback-helper.js","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/form.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/details-and-price.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/details-and-price.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/leave-feedback-item.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/divider.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/divider.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/dialog.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/feedbacks-reducer.js","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/page-header.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/submit-button.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/sticky-container.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/sticky-container.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/leave-feedback.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/leave-feedback.jsx","webpack:///./src/frontend/utils/array.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/ajax.js","webpack:///./src/frontend/apps/tradera/components/vip/helpers/navigation-helper.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/list-helper.js","webpack:///./src/frontend/hooks/use-day-js.js","webpack:///./src/frontend/state/push-notifications/helpers.js","webpack:///./src/frontend/state/push-notifications/push-notifications-slice.js","webpack:///./src/frontend/state/ads/action-types.js","webpack:///./src/frontend/state/state-initializer.js","webpack:///./src/frontend/state/init-data/actions.js","webpack:///./src/frontend/state/ui/helpers.js","webpack:///./src/frontend/state/ui/reducer.js","webpack:///./src/frontend/components/breakpoint/breakpoint.js","webpack:///./src/frontend/state/categories/action-types.js","webpack:///./src/frontend/constants/transaction-types.js","webpack:///./src/frontend/apps/my-tradera/app/constants/text-strings.js","webpack:///./src/frontend/state/international-shipping/reducer.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/filters.js","webpack:///./src/frontend/constants/state.js","webpack:///./src/frontend/apps/tradera/components/vip/helpers/time-left.jsx","webpack:///./src/frontend/state/views/shipping-checkout/api.js","webpack:///./src/frontend/helpers/shipping-validation-errors.js","webpack:///./src/frontend/state/views/shipping-checkout/actions.js","webpack:///./src/frontend/components/loader/index.js","webpack:///./src/frontend/apps/tradera/components/discover/helpers/search-gtm.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/item-labels.js","webpack:///./src/frontend/apps/my-tradera/app/constants/column-definitions.js","webpack:///./src/frontend/apps/syi/script/app_react/services/draft-service.js","webpack:///./src/frontend/state/views/profile/reducer.js","webpack:///./src/frontend/state/views/profile/initial-state.js","webpack:///./src/frontend/state/ads/initial-state.js","webpack:///./src/frontend/state/ads/actions.js","webpack:///./src/frontend/state/configure-store.js","webpack:///./src/frontend/utils/assert.js","webpack:///./src/frontend/state/items/initial-state.js","webpack:///./src/frontend/state/items/actions.js","webpack:///./src/frontend/apps/my-tradera/app/state/actions/filters.js","webpack:///./src/frontend/utils/history.js","webpack:///./src/frontend/constants/item-types.js","webpack:///./src/frontend/apps/tradera/components/vip/bidding/animate-on-value-change.module.scss","webpack:///./src/frontend/apps/tradera/components/vip/bidding/animate-on-value-change.jsx","webpack:///./src/frontend/state/views/start-page/initial-state.js","webpack:///./src/frontend/state/views/start-page/reducer.js","webpack:///./src/frontend/apps/my-tradera/app/utils/init-data.js","webpack:///./src/frontend/apps/my-tradera/app/utils/fetch.js","webpack:///./src/frontend/apps/my-tradera/app/state/payouts/reducer.js","webpack:///./src/frontend/apps/my-tradera/app/state/payouts/initial-state.js","webpack:///./src/frontend/constants/storage.js","webpack:///./src/frontend/apps/my-tradera/app/components/listing/item/info-item-components.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/storage.js","webpack:///./src/frontend/components/dialog/dialog-modal.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/libs/triot.js","webpack:///./src/frontend/state/status/reducer.js","webpack:///./src/frontend/apps/tradera/components/vip/api/vip-api-constants.js","webpack:///./src/frontend/state/views/syi/reducers/buyer-region.js","webpack:///./src/frontend/state/items/api.js","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/single-feedback-dialog.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/single-feedback-dialog.jsx","webpack:///./src/frontend/state/views/checkout/initial-state.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/route-helper.js","webpack:///./src/frontend/apps/my-tradera/app/state/actions/my-tradera-items.js","webpack:///./src/frontend/state/views/syi/selectors/syi.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/shipping-selectors.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/item-actions-helper-seller.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/item-actions-helper-buyer.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/item-actions.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/items.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/commands-helper.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/seller-commands.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/buyer-commands.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/my-tradera-items.js","webpack:///./src/frontend/state/ads/reducer.js","webpack:///./src/frontend/state/bank-id/initial-state.js","webpack:///./src/frontend/state/bank-id/reducer.js","webpack:///./src/frontend/state/categories/initial-state.js","webpack:///./src/frontend/state/categories/reducer.js","webpack:///./src/frontend/state/discover/helpers.js","webpack:///./src/frontend/state/discover/reducer.js","webpack:///./src/frontend/state/init-data/reducer.js","webpack:///./src/frontend/state/items/reducer.js","webpack:///./src/frontend/state/page/reducer.js","webpack:///./src/frontend/state/personalisation/initial-state.js","webpack:///./src/frontend/state/personalisation/reducer.js","webpack:///./src/frontend/state/views/syi/reducers/draft.js","webpack:///./src/frontend/state/views/syi/reducers/category.js","webpack:///./src/frontend/state/views/syi/reducers/payment.js","webpack:///./src/frontend/state/views/syi/reducers/syi.js","webpack:///./src/frontend/state/views/syi/reducers/errors.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/ensure-good-shipping-options.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/validate.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/validate-valid-shipping-price.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/get-selected-shipping-options.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/index.js","webpack:///./src/frontend/state/views/syi/reducers/template.js","webpack:///./src/frontend/state/views/syi/reducers/item-condition.js","webpack:///./src/frontend/state/views/syi/reducers/campaign-code.js","webpack:///./src/frontend/state/views/syi/reducers/fees.js","webpack:///./src/frontend/state/views/syi/reducers/item-duration.js","webpack:///./src/frontend/state/views/syi/reducers/extra-features.js","webpack:///./src/frontend/state/views/syi/reducers/images.js","webpack:///./src/frontend/state/views/syi/reducers/price.js","webpack:///./src/frontend/state/views/syi/reducers/edit.js","webpack:///./src/frontend/state/views/syi/reducers/long-description.js","webpack:///./src/frontend/state/views/syi/reducers/scroll.js","webpack:///./src/frontend/state/views/syi/reducers/charity-campaign.js","webpack:///./src/frontend/state/views/syi/reducers/attributes-helpers.js","webpack:///./src/frontend/state/views/syi/reducers/attributes.js","webpack:///./src/frontend/state/views/syi/reducers/member-consent.js","webpack:///./src/frontend/state/views/syi/reducers/preview.js","webpack:///./src/frontend/state/views/syi/reducer.js","webpack:///./src/frontend/state/views/syi/reducers/drafts.js","webpack:///./src/frontend/state/views/syi/reducers/language.js","webpack:///./src/frontend/state/views/syi/reducers/templates.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/purchase-order.js","webpack:///./src/frontend/state/views/my-tradera/reducer.js","webpack:///./src/frontend/state/views/tradera-shop/reducer.js","webpack:///./src/frontend/state/views/reducer.js","webpack:///./src/frontend/state/root-reducer.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/item-actions-helper.js","webpack:///./src/frontend/hooks/use-is-mobile.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/filters.js","webpack:///./src/frontend/state/views/tradera-shop/api.js","webpack:///./src/frontend/state/views/tradera-shop/initial-state.js","webpack:///./src/frontend/state/views/tradera-shop/actions.js","webpack:///./src/frontend/state/items/action-types.js","webpack:///./src/frontend/state/ui/actions.js","webpack:///./src/frontend/state/ui/api.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/enums.js","webpack:///./src/frontend/state/views/report-item/reducer.js","webpack:///./src/frontend/state/discover/initial-state.js","webpack:///./src/frontend/state/discover/actions.js","webpack:///./src/frontend/state/views/view-item/item-state-helper.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/router.js","webpack:///./src/frontend/state/views/report-item/constants.js","webpack:///./src/frontend/state/page/initial-state.js","webpack:///./src/frontend/state/page/actions.js","webpack:///./src/frontend/apps/tradera/components/discover/constants/constants.js","webpack:///./src/frontend/state/views/syi/reducers/charity.js","webpack:///./src/frontend/state/views/view-item/reducer.js","webpack:///./src/frontend/apps/my-tradera/app/state/actions/scroll-to-initial-scroll.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/messaging-helpers.js","webpack:///./src/frontend/utils/login.js","webpack:///./src/frontend/state/init-data/action-types.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/payments-reducer.js","webpack:///./src/frontend/apps/syi/script/app_react/services/config.js"],"names":["getInitialBadges","messaging","threads","threadsUnread","system","getInitialState","cartItemCount","cartSum","isGdprModalOpen","itemLayout","messageThreadCount","messageThreadsUnreadCount","showHeaderSearch","showSearchForm","siteLayout","systemMessages","gdpr","modalOpen","settingsOpen","badges","nullifyUndefinedProperties","categoryDropdownMenu","open","CONSTANTS","MODAL","CLOSED","itemSettings","item","messagingModal","title","src","participating","recipientId","modals","currentModal","notificationOptinModal","modalType","gaLabel","description","tagGroups","profileMenu","redirectUrl","quickView","items","itemIds","currentItem","loading","BankAccountMissing","InvoiceOverdue","InvoiceUnpaid","PayoutFailed","PayoutReadyBankAccountMissing","SwishNumberMissing","videoModal","video","youtubeVideoModal","shareModal","isOpen","settings","initializeFromInitData","initData","dispatch","headerElement","document","querySelector","getAttribute","messagingBadges","cache","read","CACHE_KEYS","MESSAGING_BADGES","state","cookieUtil","readCookie","GDPR_CONSENT_ALERT_DISMISSED","DEFAULT_COOKIES","key","default","pageName","includes","hasSearch","SYSTEM_MESSAGES","uiActions","initialize","actionTypes","INIT_DATA_LOAD","INIT_DATA_LOADED","UPDATE_PHONENUMBER","INVALID_PHONENUMBER","UPDATE_VERIFYCODE","INVALID_VERIFYCODE","DELETE_PHONENUMBER","SAVE_PHONENUMBER","SWISH_ENABLED","SWISH_ERROR","DELETE_BANK_ACCOUNT","UPDATE_CLEARING_NUMBER","UPDATE_ACCOUNT_NUMBER","BANK_NOT_MATCHED","IGNORE_BANK_NOT_MATCHED","BANK_ACCOUNT_SAVED","INVALID_CLEARINGNUMBER","INVALID_BANKACCOUNTNUMBER","BANK_ERROR","INIT_TINK","CANCEL_TINK","SHOW_BANK_ACCOUNTS","SELECT_BANK_ACCOUNT","TINK_COMPLETED","TINK_ERROR","SKIP_BANKID_AUTH","BEGIN_BANKID_AUTH","CANCEL_BANKID_AUTH","BANKID_IN_PROGRESS","BANKID_COMPLETED","BANKID_ERROR","PAYOUTS_LOADED","PAYOUTS_ERROR","setVerifiedPhoneNumber","a","fetch","method","credentials","headers","response","json","ok","type","payload","logger","saveBankAccount","getState","clearingNumber","selectPaymentsState","bankAccountDetails","newClearingNumber","accountNumber","newAccountNumber","body","JSON","stringify","result","maskedAccountNumber","code","saveTinkBankAccount","account","errorMessage","bankIdAuthenticate","ENDPOINTS","BANK_ID_AUTHENTICATE","purpose","bankIdUserMessage","bankIdVerification","errorCount","bankIdPollProgress","sleep","delay","resolve","setTimeout","BANK_ID_PROGRESS","Date","getTime","isCompleted","tink","bankIdInProgress","loadInitData","toLocalizedUrl","searching","error","deletePhoneNumber","updatePhoneNumber","newNumber","number","isValid","length","savePhoneNumber","phoneNumber","requireSmsVerification","requireBankIdVerification","completeText","verificationText","updateVerifyCode","verifyCode","deleteBankAccount","removePayout","updateAccountNumber","updateClearingNumber","initSaveBankAccount","invalidNumber","initTink","cancelTink","errorTink","loadBankAccounts","data","accounts","selectBankAccount","cancelBankId","bankIdContinue","generateSumOfDiscounts","discounts","map","discount","amount","total","currentAmount","getBidCount","bidInformation","bidCount","getSumOfDiscounts","transaction","getMaxBid","caller","maxBid","formatPrice","getTimeLeft","isActive","timeLeft","timeleft","isTimeLeftCritical","critical","getShippingCost","listViewType","translateShippingNames","name","names","Takeaway","TakeawayLong","TakeawayOnly","SchenkerPrivpak","Alternative","LIST_VIEW_TYPES","BASIC","getShippingLabelWithPrice","shippingItem","shippingType","shippingCost","shouldShowShippingPrice","shippingOptions","listing","selectedShipping","isTakeaway","cost","isFreeShipping","STRINGS","SHIPPING_LABELS","FREE_SHIPPING","hasIntegratedPayment","theOnlyShippingOption","TAKEAWAY","i","undefined","find","shippingOption","accumulator","currentValue","isNormalListViewType","NORMAL","getReportItemModel","itemId","touchWebClient","get","postReport","reason","message","categoryId","post","loadReportItemModel","reportItem","views","setViewState","hasEnded","VIEW_STATES","ITEM_ENDED","FORM","LOADING","handleReportItemModel","API_ERRORS","LOGGED_OUT","window","location","getReturnUrl","getBackToHereRedirectUrl","reportItemModel","setReportItem","submitReport","SUBMITTING","SUBMIT_SUCCESS","SUBMIT_FAILED","VIEW_ITEM_STATES","INITIALIZING","ACTIVE","ENDING","ENDED","ITEM_STATES","ONGOING_AUCTION","ONGOING_AUCTION_BIN","ONGOING_FIXED_PRICE","ENDED_AUCTION_WITHOUT_BID","ENDED_AUCTION_WITH_WINNING_BID","ENDED_AUCTION_WITHOUT_WINNING_BID","ENDED_AUCTION_BIN_BOUGHT_AS_BIN","ENDED_FIXED_PRICE","UNKNOWN","isServer","sellingGlobalData","initialState","isCombinedShippingEnabled","isSearching","page","environment","version","splitTests","memberAlias","memberFirstName","memberId","memberLastName","memberCountryCodeIso2","memberMessagingParticipation","mobileMenu","mobileActions","changeShippingModal","purchaseOrderId","setDiscountModal","slice","createSlice","reducers","setCombinedShippingEnabled","TEXT_STRINGS","ERRORS","GENERIC","openModal","setBreakPoint","setMemberMessagingParticipation","openChangeShipping","closeChangeShipping","openSetDiscount","closeSetDiscount","setTranslatedRouteInformation","extraReducers","uiActionTypes","OPEN_MESSAGING_MODAL","uiReducer","CLOSE_MESSAGING_MODAL","selectMyTraderaState","myTradera","actions","useFormatUtcDateInSwedishTimeZone","dayjs","useDayJs","useCallback","transactionDate","formatUtcDateAsSwedishTimeZoneDate","selectCurrencies","multiCurrency","currencies","selectPreferredCurrency","preferredCurrency","c","selectShowCurrencySelection","enabled","defaultCookies","cookiesSlice","Object","keys","MYTRADERA_DEFAULT_COOKIES","forEach","value","val","setCookie","reducer","prepare","createCookie","e","selectCookiesState","cookies","initialPayloadItems","listType","purchaseOrders","purchaseOrder","rows","row","sellerState","haveMultipleRows","haveCombinedShipping","combinedShippingInformation","isArchived","itemUrl","restart","endDate","formatted","buying","seller","sellerMember","id","shipping","shippingDiscount","url","trackingLink","bookedShipment","isPaymentExpired","paidShipmentCheckoutId","shipmentCheckoutId","shipmentId","hasUnpaidShipping","isRefundAllowed","isDiscountAllowed","isPaidWithIntegratedPaymentOption","isPaidWithIntegratedPayment","hasBuyerProtection","payment","PAGE_LIST_TYPES","BUYER_PURCHASES","buyerState","paid","isPaid","isMarkedAsPaidByBuyer","shippingBooked","isShippingBooked","shipped","isShipped","hidden","isHiddenForBuyer","inr","isInrSubmitted","upiSubmitted","isUpiSubmitted","feedbackLeft","isHiddenForSeller","buyer","buyerMember","initialPayloadPurchaseOrders","transactionIds","transactionId","itemsToGiveFeedBackTo","filter","Boolean","resetPurchaseOrder","PURCHASE_ORDER_RESET","feedbackLeftBySeller","submittables","PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER","feedbackLeftByBuyer","PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER","updateShippingBooked","URLS","UNMARK_BOOKED","ids","PURCHASE_ORDERS_SHIPPING_BOOKED","myTraderaItemsActions","handleError","deleteShipment","DELETE_SHIPMENT","PURCHASE_ORDER_DELETE_SHIPMENT","requestCombinedShippingPrice","hasBuyerRequestedCombinedShippingPrice","REQUEST_COMBINED_SHIPPING_PRICE","hasRequested","PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING","updatePurchaseOrderShipped","MARK_SHIPPED","transactionsMarkAsShippedBySeller","UNMARK_SHIPPED","transactionsUnmarkAsShippedBySeller","PURCHASE_ORDER_SHIPPED","updatePurchaseOrderPaidBySeller","SELLER_MARK_PAID","purchaseOrdersMarkAsPaidBySeller","showSuccessToast","SELLER_UNMARK_PAID","purchaseOrdersUnmarkAsPaidBySeller","PURCHASE_ORDER_PAID_BY_SELLER","updatePurchaseOrderPaidByBuyer","BUYER_MARK_PAID","purchaseOrdersMarkAsPaidByBuyer","BUYER_UNMARK_PAID","purchaseOrdersUnmarkAsPaidByBuyer","PURCHASE_ORDER_PAID_BY_BUYER","runPurchaseOrders","shouldScrollToInitialScroll","waitForBackend","dontModifyHistory","endPoint","searchUrlNormalView","currentMemberId","member","resetMyTraderaItems","search","modifiersFromState","selectFiltersState","modifiers","PageNumber","paging","PageSize","size","changeParamsForBackend","UPDATE_ITEMS","PURCHASE_ORDER_LIST","from","totalPages","totalNumberOfPages","totalItems","totalNumberOfPurchaseOrders","statistics","scrollToInitialScroll","updateURL","updatePurchaseOrderHiddenForSeller","isHidden","action","sellerHideTransaction","sellerUnhideTransaction","PURCHASE_ORDER_HIDDEN","updatePurchaseOrderHiddenForBuyer","buyerHideTransaction","buyerUnhideTransaction","modalState","START","COMPLETED","ERROR","IN_PROGRESS","defaultBox","height","width","weight","weightMap","defaultCountry","shippingCalculatorSlice","box","selectedToCountry","selectedFromCountry","availableFromCountryCodes","availableToCountryCodes","weightUnit","weightSliderValue","isLoadingShippingProducts","shippingProviders","providerName","service","internationalProductsGroupedByFromThenToCountry","SE","showError","setSelectedToCountry","setSelectedFromCountry","setDefaultValuesOnBox","updateFilter","filterName","setWeightFilter","setWeightUnit","beginFetchingShippingProducts","setShowError","setShippingProducts","internationalShippingCalculatorProducts","prev","product","fromCountryCodeIso2","to","toCountryCodeIso2","push","setDefaultValues","fetchShippingProducts","selectBox","selectIsBoxValid","axiosWithTokenRefresh","INTERNATIONAL_SHIPPING_CALCULATOR","params","lengthInMillimeters","heightInMillimeters","widthInMillimeters","weightInGrams","axiosConfigs","authenticated","then","finalizeResponse","catch","BREAKPOINTS","XS","SM","MD","LG","XL","BREAKPOINT_SIZES","BPOINT","bp","index","entries","min","max","breakpoint","checkoutSlice","receiveCheckout","shippingInfo","combinedShippingInfo","ongoingPaymentAttempt","shippingFeeRule","isFetching","hasError","orderNumber","shippingPriceRange","selectedCollectionPoint","collectionPointId","created","shippingOptionsLoading","setShippingOptionsLoading","isLoading","receivePaymentOptions","paymentOptions","receiveCollectionPoints","collectionPoints","setFetching","status","paymentAttemptId","modal","cancelPayment","checkoutSummary","showDisableOverlay","closeModal","MODAL_STATUS","setHasError","setPaymentFetching","setPaymentHasError","setPaymentMethodData","paymentMethodData","setCheckoutSummaryFetching","setCheckoutSummaryHasError","setSelectedPayment","selectedPayment","setSelectedShipping","setShowDisableOverlay","setOngoingPaymentAttempt","setCombinedShippingInfo","setBuyerMember","setBuyerMemberAddress","address","setCollectionPoint","setShippingInfoFetching","setCollectionPointSaving","savingCollectionPoint","PAGE_NAMES","Overview","BuyerActiveItems","BuyerItemsLost","MyTraderaLeaveFeedback","SellerActive","SellerSold","SellerUnsold","BuyerPurchases","Settings","SettingsAccount","SettingsEmail","SettingsNotifications","SettingsSeller","SettingsSecurity","Payouts","Invoices","CATEGORIES","trackAction","category","label","GtmService","trackBiddingConfirmBid","trackBiddingShowEnterBid","trackBiddingShowConfirmBid","trackBiddingShowChangeMaxBid","trackBiddingQuickBid","trackBiddingNewMaxBid","trackNewBid","trackNewMaxBid","trackOpenCheckoutBin","trackConfirmBin","trackPayBin","trackKeepShopping","trackBinError","trackBidPlaced","validationCode","isMaxBid","potentialBidChange","bidId","transactionTotal","weightedBidValue","BID_VALIDATION_RESULTS","LEADING_BIDDER","HIGHER_BIDDER_EXISTS","event","placedBidId","bidValue","trackWishlist","isAdding","trackAddToCart","sellerMemberAlias","fixedPrice","trackLinkClickAndGotoUrl","getGaTrackingData","clientId","ga","getAll","trackingIds","gaData","BUYER_ACTIVE_ITEMS_HIDE","pageSpecificData","BUYER_ACTIVE_ITEMS_SHOW","ACTIVE_ITEMS_RESTART_SUMMARY","MARK_PAID","SELLER_HIDE","SELLER_SHOW","UNSOLDHIDE","UNSOLDSHOW","ACTIVE_END_ITEMS","UNSOLD_RESTART_ITEMS","BUYER_HIDE","BUYER_SHOW","shippingCalculator","selectFilterValue","selectWeightUnit","selectWeightSliderValue","selectNormalizedWeight","selectWeightString","selectAvailableShippingProviders","shippingProducts","selectShippingProducts","includedProviders","provider","some","x","shippingProvider","p","selectIsDifferentFromDefaultBox","selectSelectedCountries","selectAvailableCountryCodes","selectShowError","MultiCurrency","amountInSek","className","TagName","tagName","style","prefix","allowNegative","language","useCurrentLanguage","useSelector","rate","formattedPrice","currency","maximumFractionDigits","decimals","propTypes","defaultProps","isEnabled","featureSwitches","errors","ELASTIC_MYTRADERA","isBuyerOrderInformationEnabled","isDisputesEntranceEnabled","isLeaveFeedbackReactEnabled","isMyTraderaElasticEnabled","isMessagingEnabled","isMessagingBuyerButtonsEnabled","isMessagingSellerButtonsEnabled","isInrPurchaseOrderEnabled","isUpiPurchaseOrderEnabled","isPennybridgeCharitiesEnabled","isSyiShippingAlertPriceIncreaseEnabled","isShippingCheckoutSwishHandelPaymentReactEnabled","isShippingCheckoutPaymentInvoiceReactEnabled","labels","columns","CurrentPrice","TransactionDate","EndDate","ShippingCost","Bids","ItemId","OpeningBid","ReservePrice","BuyItNow","OwnReference","MaxBid","TimeLeft","columnCssClassCore","getCoreCssClass","column","getHeading","cssClass","columnKey","term","getTranslatedColumnKey","t","getHeadings","columnDefinitions","getUserHeading","highestBidder","getColumns","hasTransactionDate","price","currentPrice","getItemId","itemType","hasHighestBidder","leadingBidder","shouldShowBids","purchaseType","getTransactionDate","getEndDate","getTimeLeftAsString","columnCssClass","itemHasBidsButReservePriceNotReached","Discount","columnTitle","full","getBids","component","infoItemComponents","BIDS","getOpeningBid","pricing","openingBid","getReservePrice","reservePrice","getBuyItNow","buyItNow","getOwnReference","ownReference","callerMaxBid","TIME_LEFT","definitions","ITEM_PRICE","definition","tagTitle","getColumn","INITIALIZE","SET_IS_LOADING","SET_ITEM_DETAILS","SET_PRODUCT","RECENTLY_VIEWED_ITEMS","constructor","store","keyPrefix","this","cached","getItem","expires","now","removeItem","write","ttl","setItem","remove","removeAll","clearByPrefix","expire","expireAll","caches","getItemsByPrefix","localStore","BidDetails","isEnding","itemState","leadingBidAmount","onShowBids","timeLeftText","isTimeLeftBelowWarningLimit","winningBidAmount","useTranslator","formatUtcDateInSwedishTimeZone","amountDetails","getAmountDetails","amountTitle","amountValue","trigger","formatNumberWithSeparators","timeTitle","timeValue","bidTitle","href","onClick","preventDefault","showBidCount","hasLeadingBid","hasLostLeadingBid","leadingBid","hasBids","ADD_ITEM_ON_DISPLAY","ADD_SEARCH_RESULTS","CHANGE_SORT_VALUE","HANDLE_SEARCH_RESULTS_ERROR","LOCATION_CHANGE","RECEIVE_SEARCH_RESULTS","REMOVE_ITEM_ON_DISPLAY","REQUEST_SEARCH_RESULTS","SET_ACTIVE_CATEGORY","SET_ACTIVE_FILTER","SET_CATEGORY_PATH","SET_CURRENT_CATEGORY_ID","SET_SINGLE_FILTER","STOP_REQUEST_SEARCH_RESULTS","RESET","fetchDescription","languageCodeIso2","fromLanguageCodeIso2","utilizeCancelToken","cancel","cancelToken","ITEM_DESCRIPTION","getItemApi","preferredLanguageCode","IGNORE_ME","placeBidApi","onLoggedOut","bid","serverSecondsLeft","isSuccessful","leadingBidderMemberId","leadingBidMemberAlias","leadingMemberAlias","nextValidBidAmount","nextBidAmount","validationResult","placedBid","reservePriceReached","sellerMemberId","sellermemberId","startDate","bidInfo","analyticsData","myMaxBidAmount","getItemsFromSeller","getCombinedShippingUpsell","COMBINED_SHIPPING_UPSELL","LoadingPortal","Component","super","el","createElement","loadingPortalRoot","getElementById","componentDidMount","appendChild","classList","add","componentWillUnmount","removeChild","render","props","children","ReactDOM","createPortal","TOGGLE_HEADER_SEARCH","OPEN_GDPR_MODAL","CLOSE_GDPR_MODAL","OPEN_GDPR_SETTINGS","CLOSE_GDPR_SETTINGS","OPEN_QUICK_VIEW","CLOSE_QUICK_VIEW","LOADING_QUICK_VIEW","OPEN_VIDEO_MODAL","CLOSE_VIDEO_MODAL","OPEN_YOUTUBE_VIDEO_MODAL","CLOSE_YOUTUBE_VIDEO_MODAL","OPEN_NOTIFICATION_OPTIN_MODAL","CLOSE_NOTIFICATION_OPTIN_MODAL","OPEN_MODAL","CLOSE_MODAL","OPEN_SHARE_MODAL","CLOSE_SHARE_MODAL","ITEM_LAYOUT","UPDATE_SYSTEM_MESSAGES","UPDATE_MESSAGING_NOTIFICATIONS","OPEN_PROFILE_MENU","CLOSE_PROFILE_MENU","OPEN_CATEGORY_DROPDOWN_MENU","CLOSE_CATEGORY_DROPDOWN_MENU","OPEN_SEARCH_FORM","CLOSE_SEARCH_FORM","REQUEST_ITEM_SETTINGS","OPEN_ITEM_SETTINGS","CLOSE_ITEM_SETTINGS","SITE_LAYOUT","SET_HAS_SEARCH","OPEN_HELP_SECTION","CLOSE_HELP_SECTION","LOG_OUT","storageKey","rootUrl","riot","observable","onSuccess","onError","ajax","traditional","statusCode","bind","setRootUrl","toLocalizedRiotUrl","setStorageKey","getFeedbackItems","getAllFeedbackItems","skip","take","getFeedbackStorageAsArray","currentStorageArray","Array","isArray","addFeedbackToStorage","newStorageArray","newItems","existingItem","newItemsCounter","comment","newStorageItem","text","counter","searchTime","_createNewFeedbackItemsToStore","maxStorage","newItem","concat","curr","next","_mergeAndSortStorage","getFeedbackHistory","getStorageKey","submitData","cb","dataType","contentType","failures","saveAutomaticFeedback","comments","SET_PAGE_TYPE","SET_PAGE_META_FROM_SEARCH_RESULT","SET_PAGE_META","TRACK_REDUX_ACTIONS","SAVE_REDUX_STATE_PATHS","sentryReduxEnhancer","Sentry","actionTransformer","stateTransformer","sentryState","keyString","keyArray","split","has","object","keyPathArray","acc","array","setNestedObjectValue","cartSlice","merchantPreOrders","setCartData","setError","MODAL_TYPES","wishlistReminders","selling","CHANNEL_TAG_GROUPS","buyingListingOutbid","buyingListingWon","sellingListingFirstBid","sellingListingAllBids","sellingListingSold","sellingPaymentReceived","selectShippingCheckout","shippingCheckout","selectShipping","selectItemWithoutShipment","itemWithoutShipment","selectShipment","shipments","shipment","shippingCheckoutSlice","isDeleting","isUpdating","isCreating","buyerContactDetails","nonIntegrated","markedAsBooked","markedAsShipped","isShippingFetching","hasShippingError","openNonIntegratedModal","providerId","closeNonIntegratedModal","builder","addCase","createShipmentCheckout","fulfilled","hasFetchError","pending","rejected","hasDeleteError","isChangingProvider","updateShipment","arg","meta","buyerAddress","cleanedBuyerAddress","streetName","receiver","street","mostPreciseErrorKey","isUpdatingShipment","translationKey","createShipment","productId","getItemWithoutShipment","errorCode","getShippingOptions","bringEnabled","postnordEnabled","dhlEnabled","schenkerEnabled","productsDecorated","productsPerWeightSpan","weightClass","filteredProductsWithDecoration","products","outage","uuid","uuidv4","markAsBooked","markAsShipped","log","Logger","ApplicationErrorBoundary","React","componentDidCatch","capture","getErrorMessage","source","fallback","INTERNATIONAL_SHIPPING_MODAL_ID","START_AUTH","SET_ERROR","CLOSE","LoaderComponent","visibleClassName","otherProps","loaderRef","useRef","useEffect","timeout","current","clearTimeout","ref","GlobalLoader","PortalLoader","LocalLoader","Loader","usePortal","getSearchResults","endpoint","baseURL","process","axios","paramsSerializer","qs","arrayFormat","checkResponseVersion","shortDescription","validationError","descriptionLanguageCodeIso2","isDescriptionLanguageCodeIso2ChangeAvailable","isDenmarkCountryCode","getValidationError","validate","shortDescriptionSlice","setShortDescription","resetShortDescription","setDescriptionLanguageCodeIso2","ROLES","BUYER","SELLER","MAX_COMMENT_LENGTH","UNSET_RATING_VALUE","MIN_RATING_VALUE","MAX_RATING_VALUE","RATING_NAMES","DESCRIPTION","COMMUNICATION","SHIPPING_TIME","SHIPPING_COST","PAYMENT_TIME","RATING_NAMES_SELLER","RATING_NAMES_BUYER","RATING_SETTINGS","titleKey","descriptionKeys","getInitialFilters","filters","newFilters","defaultFilters","defaultSearchParams","parse","replace","getId","showModal","openMyTraderaModal","bulkAction","icon","isSingleButton","getTranslatedMessage","getActionsForPurchaseOrder","secondaryActions","primaryAction","resolveActions","potentialActions","actionCreator","isVisible","isPrimaryAction","checkAndAdd","actionsForItem","types","DISPATCH","getTranslatedLabel","LINK","purchaseOrderActions","unpaidShipping","EXTERNAL_LINK","hasShipmentReceipt","hasShipmentLabel","modalId","SINGLE_FEEDBACK_DIALOG_ID","featureToggles","soldActions","buttonTheme","cleanedAlias","boughtActions","selectPurchaseOrderState","LIST_VIEW_TYPE","selectRouterState","pathname","selectMyTraderaItemsState","itemsOrderedByID","myTraderaItems","itemsByID","updateditems","modifyHistory","match","history","defaultPayload","query","filterBar","shownFilters","withPageInit","initialPayload","useDispatch","sellerEmail","memberEmail","stateCookies","useState","pageListType","setPageListType","listViewTypeWithFallBack","featureToggleErrors","setFiltersForSelectedPage","getPurchaseOrderIdFromHash","hash","removeHashAndSetNormalList","removeHashFromUrl","changeShippingPurchaseOrderId","URL_HASHES","openChangeCombinedShippingModal","shouldOpenChangeCombinedShippingModal","markAsPaidPurchaseOrderId","markAsPaid","shouldMarkAsPaid","shouldShowRequestedCombinedShippingToast","setDefaultListViewType","SELLER_SOLD","getData","shouldWaitForBackend","myTraderaItemActions","runSearch","MakeResponsive","ComposedComponent","Responsive","matchMedia","matches","handleMediaChange","addListener","removeMediaQueries","removeListener","addMediaQueries","removeMediaQuery","connect","MakeSticky","sticky","onScroll","onScrollThrottled","throttle","wait","addEventListener","doc","removeEventListener","documentElement","position","getBoundingClientRect","setState","top","zIndex","positions","bottom","wrapperStyles","stickyStyles","getStickyClasses","selectViewItem","viewItem","selectTranslatedDescription","translatedDescription","selectItemDetails","itemDetails","selectBreadcrumbs","breadCrumbs","selectItemId","selectBidInfo","selectTranslatedDescriptionState","translatedDescriptionState","format","formatMe","toLocaleString","symbol","symbolPosition","decimal","comma","formatShippingPrice","nonActiveButtonClasses","activeButtonClasses","_Happy","active","_Sad","Happy","memo","Sad","Caption","color","styles","right","Figure","imageUrl","captionText","captionColor","figure","alt","_Rating","selectedRating","onRatingClicked","ratingButton","Rating","_DetailedRating","ratingDescriptions","ratingDescription","DetailedRating","namespace","ACTION_TYPES","SET_FEEDBACKS","TOGGLE_IS_POSITIVE","SET_IS_POSITIVE","SET_IS_ITEM_NOT_RECEIVED","SET_COMMENT","SET_RATING","toggleIsPositive","isPositive","_ItemNotReceived","isItemNotReceived","checkboxId","onChange","setItemNotReceived","checked","htmlFor","ItemNotReceived","_UnpaidItem","unpaidItemUrl","useUrlLocalizer","target","rel","UnpaidItem","AutoHeightTextArea","textAreaRef","setText","textAreaHeight","setTextAreaHeight","parentHeight","setParentHeight","scrollHeight","minHeight","CommentInput","onKeyPress","evt","setComment","togglePositive","previous","createFeedbackPayloadsMap","groups","isBuyer","ratingNames","feedbacks","group","feedback","ratings","createFeedbackPayload","isCommentTooLong","isCommentWithLinebreaks","isValidFeedback","every","isAllRatingsValid","isPositiveOrNegative","Form","errorMessageTranslationKeys","ratingSettings","ratingValues","isMobile","useIsMobile","isCommentInvalid","indexOfShippingTime","findIndex","ratingSetting","showItemNotReceived","indexOfPaymentTime","showUnpaidItem","charsCount","ratingName","rating","setRating","DetailsAndPrice","memberUrl","alias","shippingPrice","useLink","_LeaveFeedbackItem","isNegative","Image","stateColor","showForm","LeaveFeedbackItem","ThinDivider","ThickDivider","Dialog","dismissActionText","onDismiss","confirmActionText","onConfirm","mobileFullscreen","SubmittedDialog","submittedFeedbackCount","count","SubmitErrorDialog","AlreadySubmittedErrorDialog","ConfirmSubmitDialog","negativeCount","isInMultipleFeedbacksContext","updateValidationError","getValidationErrorTranslationKeys","updateSubmittables","validFeedback","isAllRatings","resetItemNotReceivedIfNeeded","feedbacksReducer","newState","oldFeedback","newFeedback","setAllRatings","newRatings","Error","PageHeader","actionComponent","hasSecondColumn","SubmitButton","isSubmitting","submittableCount","submitButtonText","disabled","StickyContainer","makeSticky","Layout","renderHeader","LeaveFeedback","onDone","role","givenTransactionIds","loadedCount","setLoadedCount","itemsLeft","setItemsLeft","setGroups","setIsFetching","setIsSubmitting","setNegativeCount","showSubmitNegativeWarning","setShowSubmitNegativeWarning","showSubmittedDialog","setShowSubmittedDialog","showSubmitErrorDialog","setShowSubmitErrorDialog","showAlreadySubmittedErrorDialog","setShowAlreadySubmittedErrorDialog","useReducer","nextCount","negatives","submittable","submitOrConfirm","submit","leaveFeedbackService","onFetchAllSuccess","oldGroups","newGroups","incomingGroup","existingGroup","g","mayHaveDuplicates","arr","getKey","keepFirst","seen","keepUnique","onFetchError","responseJSON","fetchNext","fetchAll","fetchByTransactionIds","isInDialog","showItems","itemsExist","downTo","upTo","upiUrl","$","openBiddingModal","saveInWishlist","openBinModal","hasRequestedCombinedShipping","nextRouter","ignoreQueryPrefix","forceRedirect","otherQueryParams","addQueryPrefix","shallow","replaceState","shouldOpenBiddingModal","bidding","substr","shouldSaveInWishlist","shouldOpenBinModal","getBaseRedirectUrl","queryParams","Math","round","random","protocol","host","getBiddingRedirectUrl","getWishlistRedirectUrl","getBinRedirectUrl","listActions","selectedFilterBar","SELLER_ACTIVE","isCheckboxActive","bulkCssClass","PAGE_BULK_ACTIONS","ACTIVE_CANCEL","heading","itemCount","confirmButtonText","cancelButtonText","dismissable","idType","SELLER_NOT_SOLD","hasRestartedChild","UNSOLD_RESTART","wide","headingCSS","messageAlignment","BUYER_ACTIVE_ITEMS","leadingBidRemoved","BUYER_SHOW_ACTIVE","BUYER_HIDE_ACTIVE","PURCHASES_SHOW","BUYER_ITEMS_LOST","preferredLanguageCodeIso2","preferred","localizedDayjsCallback","localizedDayjs","withDayJs","WrappedComponent","WithDayJs","displayName","getUrbanSdk","UA","UACache","sdk","isSupported","getTagGroupsFromUrbanAirship","channel","groupTags","tag","tags","isPushEnabled","GdprSettings","isFunctionalEnabled","isLoggedIn","pushNotificationsSlice","initDone","pushSupported","optedIn","shownModals","setInitDone","setPushSupported","setOptedInValue","setTagGroupsValue","setShownModalTrue","STORAGE_KEYS","WEB_PUSH_SHOWN_MODALS","setAllShownModals","setEnabled","init","canRegister","set","optIn","register","namedUser","toString","optOut","saveTagsToUrbanAirshipAndUpdateState","tagGroupValue","tagGroupsToSet","pushNotifications","channelTags","addTagGroups","tagGroupsToAdd","removeTagGroups","tagGroupsToRemove","SET_TCF_LOADED","SET_ADS","initializeState","currencyCode","itemNext","adsActions","setTcfLoaded","initializeUiFromInitData","pushNotificationActions","initShippingRegion","initEnvironment","initLanguage","initMember","initInitData","initMultiCurrency","itemsActions","pageActions","initStartPage","initTraderaShop","fetchSystemMessages","discoverActions","discoverResponse","receiveSearchResults","stripItmFromQueryParameters","formatQueryParams","toQueryParameters","viewItemActions","traderaShopProduct","setAds","reduxContainer","ads","getSystemMessageAlertCount","HyperwalletPayeeVerificationRequired","toggleHeaderSearch","openGdprModal","closeGdprModal","openGdprSettings","closeGdprSettings","openQuickView","OPEN","closeQuickView","loadingQuickView","openVideoModal","videoUrl","pageType","buttonLink","buttonText","closeVideoModal","openYoutubeVideoModal","videoId","closeYoutubeVideoModal","openMessagingModal","closeMessagingModal","openNotificationOptinModal","closeNotificationOptinModal","currentModalData","updateSystemMessages","updateMessagingNotifications","openProfileMenu","closeProfileMenu","openCategoryDropdownMenu","closeCategoryDropdownMenu","openSearchForm","closeSearchForm","logOut","openItemSettings","closeItemSettings","openShareModal","closeShareModal","openHelpSection","helpSection","closeHelpSection","def","Breakpoint","desktop","tablet","mobile","is","mediaQuery","minWidth","maxWidth","useMediaQuery","PropTypes","bool","oneOf","REQUEST_CATEGORY_LIST","RECEIVE_CATEGORY_LIST","HANDLE_CATEGORY_LIST_ERROR","AUCTION","CART","BIN","NO_SELECTED_SHIPPING","internationalShippingSlice","allowedBuyerRegion","messagingLink","ownItem","providers","setInternationalShipping","b","fetchInternationalShipping","sellerId","selectPreferredLanguageCode","WEB_API","selectIsLoggedIn","buyerId","selectMemberId","resetPageIndex","updatePageSize","selectSortChange","sort","sorting","order","sortOrder","changeSortOrder","selectTypeChange","setDateFrom","dateRange","setSingleFilterValue","sellerFilters","setDateTo","filterByState","showSelectFiltersDropDown","selected","setSellerFilterBarModifiers","defaults","changePage","resetDateRangeTo","resetDateRangeFrom","resetFilters","changeSearchQuery","searchQuery","selectReservationPriceChange","updateFiltersForSelectedPage","setFiltersFromRouter","setEnum","buyerFilters","MENU","GRID","LIST","webApiClient","setShipmentDetails","shippingDetails","setShippingAsBooked","booked","setShippingAsShipped","fromCountry","toCountry","getMemberSoldItemShippingInfo","resolveMostPreciseTranslationKey","errorKeys","errorTranslationKeys","getOrDefault","errorPrio","DefaultReceiverAddressError","DefaultError","indexOf","getDefaultErrorKey","errorMap","ReceiverAddress","Shipment","SenderAddress","ValidatedProperty","Unknown","Street","ZipCode","City","CountryCode","Email","Phone","Length","Width","Height","Weight","ValidationErrorType","DefaultSenderAddressError","Name","Agent","createAsyncThunk","thunkAPI","api","rejectWithValue","_","shipmentDetails","responseStatus","mostPreciseTranslationKeys","updateShippingProvider","shippingPayload","buildShippingPayload","updateShippingAddress","city","zipCode","fullName","town","mostPreciseTranslationKey","shippingProductId","filterNameMappings","itemCondition","sellerType","county","countyBox","itemStatus","shoeTypes","subDepartments","shoeSizes","brandTags","sortBy","trackFilter","trackButton","trackPriceFilter","fromPrice","toPrice","lbl","join","trackNewSearch","categoryPath","metaTitle","reverseCategoryPath","trackGtmEvent","keywords","ga_page_title","getTranslatedImageLabel","labelKey","buyerActiveItemsLabelKeys","RESERVE_PRICE_NOT_REACHED","activeLabelKeys","unsoldLabelKeys","soldLabelKeys","NOT_PAID","purchasesLabelKeys","PAID","DONE","LEADING","OVERBIDDEN","BID_REMOVED","NOT_STARTED","HAS_BIDS","SOLD","NOT_SOLD","SHIPPING_BOOKED","SHIPPED","FORICBLY_CLOSED","RESTARTED","itemLostLabelKeys","REMOVED","LOST","buyerActiveItemsLabels","reservePriceNotReached","leading","overbidden","bidRemoved","activeLabels","notStarted","sold","notSold","soldLabels","notPaid","done","unsoldLabels","forciblyClosed","restarted","purchasesLabels","itemLostLabels","lost","removed","itemHasBids","getActiveLabel","activityType","getActiveActiveLabel","unSold","getUnsoldLabel","closed","getStates","getBuyerActiveItemsLabel","getSoldLabel","states","getPurchasesLabel","getBuyerItemsLostLabel","buyerActiveItemsColumns","Basic","buyerItemsLostColumns","sellerActiveColumns","Compact","sellerSoldColumns","Normal","sellerUnsoldColumns","buyerPurchasesColumns","payments2Columns","defaultDrafts","resetUnwantedProperties","draft","isNullOrUndefined","getType","hasOpeningPrice","hasFixedPrice","ensureApplicationId","metadata","applicationId","ensureBraintree","userData","braintree","isBraintreeOnly","loadDraft","draftId","httpClient","SELLING_DRAFT","loadDrafts","SELLING_DRAFTS","loadDraftFromTemplate","templateId","SELLING_DRAFT_LOAD_FROM_TEMPLATE","draftReason","saveDraft","SELLING_DRAFT_SAVE","getCustomEndTime","itemDuration","customEndTimeHour","customEndTimeMinute","deleteDrafts","draftIds","SELLING_DRAFTS_DELETE","isPureBin","isAuctionBin","getDefaultTemplateValue","propertyName","newTemplate","loadDefaultDraft","loadDefaultTemplateDraft","buildDraftFromState","syiSlice","MemberId","publishedPromoted","publishedHighlighted","createdDate","lastModifiedDate","publishedDate","publishedAsItemType","reference","additionalDescriptions","templateName","longDescription","draftCategoryId","draftCategoryPath","images","slots","slot","imageId","isListingImage","draftImage","listingImage","rotationDegrees","filename","imageGroupId","resolveImages","isPureBinSelected","auctionBinPrice","vat","durationDays","customEndTime","selectedShippingOptions","selectedPaymentOptions","buyerRegion","selectedBuyerRegion","campaignCode","campaignCodeId","displayPromoted","extraFeatures","displayHighlighted","charityId","charityCampaign","charity","allowZeroDayAuctions","attributeValues","termAttributeValues","attributes","categoryAttributes","attribute","values","options","option","backingField","userGenerated","deleteDraft","profileSlice","isTranslationOnDemandDisabled","loadingModel","model","showTranslatedReviews","translatedReviews","translatedReviewsLoading","translatedReviewsLoadingError","setTranslatedReviews","translatedReviewsProviderName","resetTranslatedReview","review","gradeId","setTranslationOnDemandIsDisabled","show","Analytics","trackEvent","beginLoadingTranslatedReviews","failedLoadingTranslatedReviews","beginLoadingModel","setModel","feedbackItems","feedbackItem","setFeedbackComment","feedbackId","newFeedbackItems","hasReply","isReplyAllowed","reply","isTcfLoaded","gpt","gptData","adSenseQuery","adSenseShoppingPublisherId","reduxStore","configureStore","browserHistory","createStore","rootReducer","middlewares","ReduxThunk","routerMiddleware","compose","applyMiddleware","getComposer","observe","select","currentState","handleChange","nextState","unsubscribe","subscribe","module","hot","accept","nextRootReducer","require","replaceReducer","enableWebPackHotModuleReplacementForReducers","globalStore","getHistory","ProviderWithGlobalStore","assertNoUndefinedProperties","obj","console","wishListItemIds","recent","cacheOrder","setItemWishList","exists","WISHLIST","ADD","addItemsToWishList","WISHLIST_ADD_RANGE","addRecentlyViewed","getStore","ADD_RECENTLY_VIEWED","updateItem","UPDATE_ITEM","wishlist","shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip","existsInWishList","onSignedOutError","signIn","gtmCore","postWishlistItem","CANCELLED","NETWORK","TIMEOUT","VERSION_MISMATCH","setPageSize","pageSize","ITEMS_PER_PAGE","historyLocationDidUpdate","isPrevAndCurrentPathnameEqual","routingState","router","checkStateOfQueryParams","showHideFilterToolbar","showCookies","createBrowserHistory","AUCTION_BIN","PURE_BIN","SHOP_ITEM","AnimateOnValueChange","animate","setAnimate","firstUpdate","onAnimationEnd","config","startPageResponse","trendingBrands","trendingSearches","wishList","favouriteSellers","sellers","sellerSuggestions","startPageSlice","_state","setStartPageConfigAction","setStartPageConfigStatusAction","setTrendingBrandsAction","setTrendingBrandsStatusAction","setTrendingSearchesAction","setTrendingSearchesStatusAction","setWishListAction","setWishListStatusAction","setFavouriteSellersAction","setFavouriteSellersStatusAction","initDataEL","checkStatus","ID","getInitData","tradVersion","reload","reject","parseJSON","res","payoutSlice","traderaPay","receivePayouts","payoutDestination","selectPayoutState","payout","COOKIE_NOTIFICATION","HIDE_WISH_LIST_INFO_CARD","ITEMS_CLICK","SAVE_SEARCH_HINT","SEARCH_RECENT","WEB_PUSH_ACCEPTED","SELLER_LIST_COMPACT_VIEW","SYI_NEW_LAYOUT_INFO_DISMISSED","SYI_DESCRIPTION_LANGUAGE_DISMISSED","BATCH_PAYOUTS_ALERT_DISMISSED","CACHE_MESSAGING_BADGES","CACHE_RECENTLY_VIEWED_ITEMS","CACHE_SYSTEM_MESSAGES","APPLE_ID_USER","STORAGE_VALUES","SAVE_SEARCH_HINT_CLICKED","defaultStorage","storage","TEST_KEY","testStorage","localStorage","delete","clear","gdprSettings","setFilter","contexts","stringifiedLength","warn","mobileOnlyProps","desktopOnlyProps","allDeviceProps","DialogModal","getDefaultMediaProps","mediaQueryProps","dismissOnOverlayClick","TriotException","triot","create","defineProperties","bus","enumerable","writable","configurable","mixin","on","getLanguage","translate","whenInitialized","update","safeMount","selector","opts","mountedComponents","mount","setupTeardown","keepRootTag","unmounted","vdom","unmount","unmountAll","off","setIsActionsPerFullPageLoadDone","isActionsPerFullPageLoadDone","setIsHumanyScriptLoaded","isHumanyScriptLoaded","AUCTION_HAS_ENDED","AUCTION_HAS_NOT_STARTED","BELOW_MINIMUM","BELOW_OWN_LEADING_BID","BELOW_RESERVE_PRICE","BID_NOT_FOUND","BIDDER_IS_BLOCKED","BIDDING_OR_BUYING_OWN_ITEM","BUYING_LIMIT_REACHED","EQUAL_OR_HIGHER_THAN_BUY_IT_NOW","ITEM_NO_LONGER_AVAILABLE","ITEM_NOT_FOUND","NO_LONGER_VALID","ONLY_EU_BUYERS_ACCEPTED","ONLY_NORDIC_BUYERS_ACCEPTED","ONLY_SWEDISH_BUYERS_ACCEPTED","SUCCESSFULLY_CHANGED_AUTOBID","USER_IS_SUSPENDED","MAX_PLACED_BIDS_LIMIT","BID_AMOUNT_LIMIT","OFFLINE","BID_VALIDATION_RETRY","BIN_VALIDATION_RESULTS","ITEM_HAS_ENDED","BUYING_OWN_ITEM","ITEM_ALREADY_PURCHASED_BY_OTHER_USER","PURCHASE_DID_NOT_SUCCEED","availableAllowedBuyerRegions","defaultBuyerRegion","allowedBuyerRegions","r","selectedBuyerRegionText","availableAllowedBuyerRegionsForEditWithBids","isSetAllowedBuyerRegionToAtLeastEuEnabled","isTraderaPayEnabled","initModuleGlobals","buyerRegionSlice","setAllowedBuyerRegion","setAvailableAllowedBuyerRegions","availableRegions","draftState","getSyiSlice","regionState","regions","selectedRegion","Sweden","region","Nordic","EU","International","withCredentials","WISHLIST_ADD","WISHLIST_REMOVE","checkResponseLoggedOut","getItemDiscountQuota","ITEM_DISCOUNT_QUOTA","postItemSettings","onDisplay","discountRate","formData","SETTINGS","SingleFeedbackDialog","isSeller","ui","MODAL_TYPE","BANK_ID","SWISH_APP_2_APP","SWISH_HANDEL","COMPLETE","PAYMENT_OPTIONS","CARD","PAYNOVA","PAYPAL","APPLEPAY","GOOGLEPAY","VISA_MASTERCARD","PAYNOVA_DIRECT_INVOICE","PAYNOVA_INSTALLMENTS","PAYMENT_OPTION_STATUS","AVAILABLE","UNAVAILABLE_DUE_TO_AMOUNT","getAvailableQueryParams","filtersState","checkModifiersExist","getDefaultFilters","datatype","field","processState","properties","scope","searchType","userIs","locationQuery","check","checkItem","COMPLETED_SEARCH","OPEN_MORE","SELECT_ITEM","SELECT_ALL_ITEMS","REMOVE_ITEMS","OPEN_DEL_LISTING_ITEM","REMOVE_ALL_SELECTED","UPDATE_ITEMS_WITH_ERROR","PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER","PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER","PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER","PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER","PURCHASE_ORDERS_HIDDEN_BY_SELLER","PURCHASE_ORDERS_HIDDEN_BY_BUYER","PURCHASE_ORDERS_SHOWN_BY_SELLER","PURCHASE_ORDERS_SHOWN_BY_BUYER","ITEM_HIDDEN","ITEM_SHOWN","PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER","PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER","PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED","PURCHASE_ORDERS_MARKED_AS_SHIPPING_BOOKED","SHIPMENT_DELETED","FEEDBACK_LEFT_BY_SELLER","FEEDBACK_LEFT_BY_BUYER","RESET_ITEMS","SET_RESTARTED","SET_NEW_SHIPPING_PRICE","updateItems","updateItemsWithError","resetSelectedCheckboxes","removeItems","locationDescriptor","purchaseOrderIds","messagingParticipation","newPaging","cancelItem","endItems","buyerActiveItemsHide","buyerActiveItemsShow","buyerActiveItemsHideItems","buyerActiveItemsShowItems","openMore","searchUrl","selectItem","selectAllItems","contactHighestBidder","modalTitle","messageSubject","itemEnddate","itemImageUrl","main","medium","itemTitle","receiverMemberAlias","receiverMemberId","senderMemberEmail","businessWarning","reloadAfterClose","markPurchaseOrdersAsPaidBySeller","unmarkPurchaseOrdersAsPaidBySeller","rebuildList","existingState","currentTime","purchaseOrdersShownBySeller","purchaseOrdersHiddenBySeller","sellerUnhideUnsold","unsoldItemsShown","sellerHideUnsold","unsoldItemsHidden","sellingMarkAsShippingBooked","transactionsMarkAsShippingBooked","sellingMarkAsShipped","sellingUnmarkAsShipped","sellingUnmarkAsShippingBooked","transactionsUnmarkAsShippingBooked","sellingDeleteShipment","transactionDeleteShipment","sellingLeaveFeedback","markPurchaseOrdersAsPaidByBuyer","unmarkPurchaseOrdersAsPaidByBuyer","transactionsShownByBuyer","transactionsHiddenByBuyer","buyingLeaveFeedback","setRestarted","setNewShippingPrice","newPrice","syi","getAllProducts","primaryShippingProviders","secondaryShippingProviders","getAllProviders","getPrimaryOrSecondaryProducts","onlyPrimary","getSelectedProduct","getVariant","variants","getAllVariants","variant","getSelectedShippingProducts","shippingByWeight","offerTakeaway","possiblePosten","takeAwayOption","summaryDisplayName","getIds","isTakeAway","commonActions","sellSimilar","getMessagingThreadLink","traderaUserId","singleThread","openForm","hasStampsAsSelectedShippingType","unpaidShippingUrl","unpaidShippingId","isDiscountAfterPaymentSupported","dateLimit","subtract","date","isAfter","hasTransactionDateNewerThen60Days","isDiscountBeforePaymentSupported","hide","unshift","itemsFromSeller","getActionsForItem","isLeading","fixedItemUrl","fixItemUrlIfNeeded","activeBuyerActions","dispute","lostActions","hiddenByMember","unsoldActions","isShopItem","common","translationKeys","shareHeader","shareMailSubject","shareMailBody","sharePinterestDescription","shareLinkText","DISABLED","tooltip","_props","shareLinkHref","origin","shareTitle","shareImageUrl","activeSellerActions","labelFunc","columnFunc","getCheapestShippingPrice","substring","actionLabelMap","createReturnObject","hasIncorrectResponse","findKeysByPurchaseOrderId","findKeysByTransactionId","findKeysByItemId","updateStateAndLabels","myTraderaItemsSelector","updateUnsoldLabelsAndActions","setPaidState","flag","setShippedState","setTransactionHiddenState","err","setUnsoldItemHiddenState","removeFromList","setFeedback","setShippingBookedState","markAsPaidBySellerReducer","stateItems","updateChangedItems","findUpdatedKeysByPurchaseOrderId","updatedItems","updatedItem","unmarkAsPaidBySellerReducer","markAsShippedReducer","findUpdatedKeysByTransactionId","unmarkAsShippedReducer","markTransactionAsHiddenBySellerReducer","markTransactionAsShownBySellerReducer","markItemAsHiddenReducer","findUpdatedKeysByItemId","markItemAsShownReducer","markAsShippingBooked","unmarkAsShippingBooked","setRestartedReducer","feedbacksLeftBySeller","markAsPaidByBuyerReducer","unmarkAsPaidByBuyerReducer","markTransactionAsHiddenByBuyerReducer","markTransactionAsShownByBuyerReducer","feedbacksLeftByBuyer","poHiddenByBuyer","poShownByBuyer","isSubMenuOpen","bulkChecked","selectedCheckboxes","chosenBoxes","allItemsWithBulk","checkIfActive","isOpenDeleteItem","newItemsOrderedByID","element","purchaseOrderActionTypes","itemKeysForPurchaseOrderId","isAutoStartAllowed","autoStartToken","onCompleteCallback","onCloseCallback","retryCount","list","topLevelCategories","allCategories","normalize","responseData","normalized","activeBrands","activeFilters","attributeFilters","currentCategoryId","fallbackItemsById","filterCategories","filterPrice","headerText","internalSearch","internalSearchBar","introText","isSavedSearchEmailEnabled","isShopOwnedByCurrentMember","itemsOnDisplay","itemsById","itemsOnDisplayById","mainText","pagination","fallbackUrl","discoverTranslationResult","categoryFilter","parameter","normalizeFilters","singleOptionFilters","selectedValue","ACTIVE_FILTER_STATES","priceRangeFilter","fallbackItems","requestSearchResults","hasResult","handleSearchResultsError","setSingleFilter","addItemOnDisplay","removeItemOnDisplay","setCategoryPath","setCurrentCategoryId","showOrHideAllowedBuyerRegionFilter","displayAllowedBuyerRegionFilter","isoCode","reset","memberActionTypes","SET_GEOLOCATION","DEFAULT_ACTION","ITEM_CACHE_MAX_SIZE","newCache","newCacheOrder","updatedRecent","recentItem","wishlistAddRange","brands","searches","recentSearches","lastUpdated","createInitialState","suggestionsAvailable","levels","fill","anyLevelOpen","showExplanation","previousDraftCategoryId","prevoiusDraftCategoryPath","shortDescriptionForRecommendations","level","categories","suggestions","suggestionsVisible","categoriesVisible","moreButtonVisible","hideButtonVisible","selectedCategory","visible","_paymentOptions","_paymentOptionsPresentationData","hasAnyValidPayment","shapePaymentOptions","filteredPaymentOptions","paymentOption","presentationData","pd","paymentType","uiCheckedPaymentOptions","selectedPaymentOption","takeawaySelected","displayPaymentOptions","po","paymentOptionsTop","paymentOptionGroups","showToggle","forceBraintreeIfNeeded","isPropertyEditMode","creationType","allErrorsVisible","isEditOfPublishedItem","publishPending","publishFailed","publishFailedReasonDisplayText","publishedItemPendingVip","publishedItem","openModalData","autoSaveEnabled","draftCanBeResumed","itemUpdating","itemUpdated","step1","step2","step3","step4","optionHasError","offerShipping","globalValidationError","validationErrors","global","validateProviders","hasAnyNonValidOption","hasAnyValidOption","weightIsInvalid","so","isAdvanced","useAdvancedWidget","isWeightValid","weightValidationError","primaryValidations","secondaryValidations","getFirstValidationError","primaryValidationError","secondaryValidationError","secondaryShippingOptionOpen","primary","secondary","getSelectedShippingOptions","selectedVariant","shippingRecommendations","recommendedWeight","shippingOptionsError","showPrimaryShippingCalculator","hasPrimaryCalculatorSuggestions","showSecondaryShippingCalculator","hasSecondaryCalculatorSuggestions","isLoadingProvidersWithProducts","defaultCalculatorDimensions","primaryCalculatorDimensions","secondaryCalculatorDimensions","forceFreeShipping","getProviderByProductType","productType","shippingContainsProduct","createReducer","SET_SUGGESTED_SHIPPING_PRODUCTS","suggestedProduct","calculatorSuggestion","additionalInfo","CLEAR_SUGGESTED_SHIPPING_PRODUCTS","suggestion","RESET_SHIPPING_OPTIONS","primaryShippingOption","secondaryShippingOption","RESET_SELECTED_SHIPPING_OPTIONS","SET_SHIPPING_OPTIONS","ensureGoodShippingOptions","updateProviderProducts","updateProductIfType","typeToBeVisible","updateVisibilities","showMoreSecondaryOptions","promoted","TOGGLE_SHIPPING_OPTION","showShippingCalculator","previousValue","matchingVariant","SET_SHIPPING_OPTION_COST","SET_SHIPPING_OPTION_VARIANT","SET_SHIPPING_OPTIONS_BY_WEIGHT","shippingContainsTakeaway","SET_SHIPPING_OPTION_SELECTED","selectedOptions","SET_SHIPPING_SELECTED","SET_TAKEAWAY_SELECTED","shippingByWeightEnabled","SET_SECONDARY_SHIPPING_OPTION_OPEN","REMOVE_SHIPPING_OPTION","MAKE_SECONDARY_SHIPPING_OPTION_PRIMARY","tmp","FORCE_FREE_SHIPPING","FREE_SHIPPING_PAID_BY_PROVIDER","SET_SHIPPING_PROVIDERS_WITH_PRODUCTS","SET_SHIPPING_PROVIDERS_WITH_PRODUCTS_FETCHING","SET_SHIPPING_OPTIONS_LOADING","SET_SHIPPING_OPTIONS_ERROR","SET_SHIPPING_CALCULATOR_DIMENSIONS","dimensions","SET_SHOW_SHIPPING_CALCULATOR","SET_SHIPPING_FROMCOUNTRY","CLEAR_SHIPPING_RECOMMENDATIONS","SET_SHIPPING_RECOMMENDATIONS","saveAsDialogOpen","templatesLimitReachedDialogOpen","ignoreProperties","SET_SAVE_AS_DIALOG_OPEN","SET_TEMPLATES_LIMIT_REACHED_DIALOG_OPEN","RESET_IGNORE_PROPERTIES","ADD_IGNORE_PROPERTIES","REMOVE_IGNORE_PROPERTIES","prop","selectionError","defaultCampaignProperties","campaignCodeDescription","maxFeeCap","campaignCodeChecked","firstTimeSubscribe","validCampaign","timeoutId","campaignCodeValid","searchingDelayed","searchingDelayedTimeoutId","isReadOnly","bannerMobileImageUrl","bannerTabletImageUrl","bannerDesktopImageUrl","nullIfFalsy","ensureValidCampaignCodeId","defaultDraft","commissionProcent","discountFactor","campaignCommissionProcent","minCommissionCost","commissionMinimum","maxCommissionCost","commissionCap","isVariableCommission","chosenExtraFeatures","hasChosenExtraFeatures","isUnsoldFeeFree","isCategoryWithNoCommissionCap","makeDaysOptions","maxDays","numberOfDays","days","makeHourOptions","hour","makeMinuteOptions","minute","getValidationErrors","customEndTimeError","startOf","earliestEndDate","isBefore","uploadError","isUploadingWithApp","imageCount","isUploading","resolveFirstEmpty","foundFirst","firstEmpty","resetUploadError","setImageCount","withUrl","isValidPrice","str","String","Number","isFinite","isInt","errorKey","isNaN","validateFixedPrice","showAuctionBinPrice","validateAuctionBinPrice","showReservePrice","validateReservePrice","showCharityDonation","editCharity","selectableVats","selectableVatValues","reservePriceCanChangeButNotBeRemoved","draftBeforeChange","textWithHtml","elm","innerHTML","textContent","innerText","ensureString","s","isCurrentDescriptionFromDraft","fromDraftCounter","scrollY","isSchenkerPaidBySchenker","filterSelectableSuggestions","incomingSuggestedAttributes","selectableSuggestions","sa","categoryAttribute","suggestedAttribute","v","isSelectableSuggestion","o","isMaxReached","maxNumberOfValues","draftAttributes","selectableSuggestedAttributes","selectableCategorySuggestedAttributes","selectableImageToColorSuggestedAttributes","imageToColorSuggestedAttributes","updateSelectableSuggestedAttributes","primarySuggestedAttributes","secondarySuggestedAttributes","primarySuggestedAttribute","psa","secondarySuggestedAttribute","ssa","suggestedAttributeValues","isAlreadySuggested","updateSelectableImageToColorSuggestedAttributes","updateCategoryAttributesOptionsStatuses","draftAttributeValues","tav","numberOfValuesSelected","RESET_ATTRIBUTES","RESET_SELECTED_ATTRIBUTES","RESET_IMAGE_ATTRIBUTES_SUGGESTIONS","SET_CATEGORY_ATTRIBUTES","SET_DRAFT_ATTRIBUTES","SET_CATEGORY_ATTRIBUTE_OPTION","attributeId","isMultiSelect","optionValue","activate","UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES","SET_CATEGORY_ATTRIBUTES_SUGGESTIONS","categorySuggestedAttributes","suggestedAttributes","suggestionsExtractorType","SET_IMAGE_ATTRIBUTES_SUGGESTIONS","consent","shouldGiveConsent","isSyiMemberConsentEnabled","hasTraderaPayConsent","hasValidationError","createInitalState","SET_TRADERAPAY_CONSENT","hasLoaded","viewItemState","isBidding","placeBidResponse","info","initialBidFormValue","combineReducers","minNumberOfValues","bankId","traderaStateBankId","isChecked","newLevels","isLeaf","toUpperCase","newDraft","referenceIsReadonly","isNewDraft","newAdditionalDescriptions","toISOString","drafts","edit","e1","step1Errors","e2","step2Errors","e3","step3Errors","e4","step4Errors","fees","newslots","slotIndex","removeLastLoading","numberOfLoading","setLoadingOnFreeSlots","numberOfSlots","daysOptions","hourOptions","minuteOptions","isCustomEndTimeVisible","customEndTimePrice","isRestartAvailable","newStateWithoutCampaignRelatedProps","draftService","preferredLanguage","memberConsent","isCreditCard","isSecure","helpModalId","isPhone","hasFee","allVisible","preview","mapItemDetails","transactionType","scroll","publishDelayed","reasonDisplayText","categoryRestriction","newValue","modalData","templates","template","image","imageRotationDegrees","updatePurchaseOrderRequestCombinedShipping","buyerRequestedCombinedShippingPriceDate","updatePurchaseOrderShippingPrice","sellerSetCombinedShippingPriceDate","shippingAmount","totalAmount","totalItemAmount","updatePurchaseOrderShipment","updatePurchaseOrderShippedBooked","updatePurchaseOrders","checkHaveGivenFeedBackTo","itemToGiveFeedBackTo","updatePurchaseOrderFeedback","updatePurchaseOrderHidden","payments","checkout","profile","cart","startPage","traderaShop","discover","internationalShipping","personalisation","shippingRegion","connectRouter","getBodyStringFromIDs","bodyString","pos","formHeaders","restartItemsSummary","showPurchases","showActive","hideActive","restartItems","markPaid","withIsMobile","WithIsMobile","getTraderaShopProductData","fetchTraderaShopProductData","urlSlug","setIsLoading","setItemDetails","setProduct","openedFrom","restOfPayload","updatedData","imageFormats","itemActions","gtm","updateItemLayout","defaultCookie","updateSiteLayout","MEMBER_SYSTEM_MESSAGES","fetchedMessages","fetchMessagingNotifications","messagingNotifications","cancelTokenId","dismissSwish","PAYMENT_SWISH_OPTOUT","getJSValue","True","False","All","setJSValue","true","false","getEnum","categoryNames","categoryLevel","paymentTerms","reasons","resultMessage","shippingTerms","viewState","resetInitialState","getItemState","breadCrumb","setCategories","isFetchingGeolocation","updatePageMetaForSearchResults","pageMeta","setPageMeta","itemsToAdd","afterReceiveSearchResults","onLoaded","discoverTracking","fetchSearchResults","searchResults","finally","shippingCountry","selectShippingRegionCountryCodeIso2","memberCountry","selectMemberCountryCodeIso2","isSwedenCountryCodeOrUndefined","isSwedenCountryNameOrUndefined","leadingBidMemberId","isAuction","ITEM_TYPES","isBuyItNow","TRANSACTION_TYPES","getEndedItemState","getOngoingItemState","REASONS","NONE","SUSPECTED_FRAUD","ITEM_IS_A_COUNTERFEIT","BRAND_NAME_MISUSE","WRONG_CATEGORY","PROHIBITED_SHIPPINGvOR_PAYMEN_TMETHOD","OTHER_PROHIBITED_ITEM","OTHER_PROHIBITED_SETUP","OTHER","breadcrumbs","canonicalLink","metaDescription","metaRobots","MODALS","FILTER_MODAL","CATEGORY_MODAL","queryParamCharityId","preselectCharity","anonymous","logoUrl","percentageToDonate","isFreeShippingPaidByProvider","freeShippingPaidByProviderName","charitySlice","setCharityId","setCharityInfo","setCharityAnonymous","setCharityFromDraft","resetCharity","setCharityShippingInfo","initialPlaceBidResponse","translatedDescriptionStates","DEFAULT","SERVER_ERROR","TRANSLATION_ON_DEMAND_DISABLED","viewItemSlice","resetPlaceBidResponse","setInitialBidFormValue","setIsRestricted","isRestricted","setIsInternationalWacko","isWackoViewModel","isInternationalWacko","setPurchaseInfo","purchaseInfo","setBreadCrumbs","setIsBidding","setPlaceBidResponse","bidError","setBidInfo","isFirstBidInfo","isBinPurchase","bidStatus","getLeadingBidStatus","existingBidCount","incomingBidCount","newBidInfo","currentItemId","bidInfoItemId","setMyMaxBidAmount","setItemState","setViewItemState","setServerSecondsLeft","setTranslatedDescription","setTranslationOnDemandDisabled","resetTranslatedDescription","beginLoadingTranslatedDescription","failedLoadingTranslatedDescription","setSellerItems","sellerItems","setReduxContainer","toLowerCase","img","thumbnail","multiThumbnail","small","normal","smallFit","mediumFit","largeFit","altText","handleItemModel","itemModel","previousItemId","inWishList","maxBidAmount","hasBidsWinnerToBeConfirmed","updateItemState","handleNewPage","hasWon","currentItemDetails","currentBidInfo","swedishCategoryPath","contentGroup","itemFixedPrice","itemCategory","itemEndDate","ensureCorrectUrlForItem","expectedItemId","fetchItemAndBidInfo","shouldResetInititalState","setLoading","setLoaded","previousBidInfo","hadLeadingBid","hadLostLeadingBid","toggleWishList","forceAdd","inWishListOldValue","inWishListNewValue","wishListCountOldValue","wishListCount","wishListCountNewValue","isInteger","analytics","placeBid","setNotValidToBidOrBuyNow","initialScrollEls","querySelectorAll","scrollTo","offsetTop","checkUserMessagingParticipation","TOUCHWEB_URL","sellerResponse","participates","setUserMessagingParticipation","messagingSettings","userResponse","setUserMessagingEmailSetting","setting","u1","u2","l","optionsWithDefaults","getMessagingPageLink","redirectURL","encodeURIComponent","initState","shouldInitBankID","bankIdErrorMessage","swishDetails","isCompany","bankAccountSaved","bankUnknown","hasFailedPayouts","isMemberSetForPayout","tinkOnboarding","iframeUrl","shouldInitTink","payouts","paginationLinks","swishApp2AppMember","braintreeMember","onboardToHyperwalletProblems","tinkLink","hyperwalletPayeeVerification","suggestedPhoneNumber","checkMark","maskedBankAccountNumber","isBankAccountSupplied","bankIdCompleted","sellingGlobalConfig","maxTemplates","domainNameCategoryId"],"mappings":"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","file":"script/chunks/chunk.3.d45309648b.js","sourcesContent":["import CONSTANTS from 'tradera-constants/state';\nimport { nullifyUndefinedProperties } from 'tradera-utils/object';\nimport {\n DEFAULT_COOKIES,\n GDPR_CONSENT_ALERT_DISMISSED\n} from 'tradera-constants/cookies';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { cache, CACHE_KEYS } from 'tradera-utils/cache';\nimport uiActions from './actions';\n\nexport const getInitialBadges = () => ({\n messaging: {\n threads: 0,\n threadsUnread: 0\n },\n system: 0\n});\n\nexport const getInitialState = ({\n cartItemCount,\n cartSum,\n isGdprModalOpen = false,\n itemLayout,\n messageThreadCount = 0,\n messageThreadsUnreadCount = 0,\n showHeaderSearch,\n showSearchForm,\n siteLayout,\n systemMessages\n}) => {\n const gdpr = {\n modalOpen: isGdprModalOpen,\n settingsOpen: false\n };\n\n const badges = getInitialBadges();\n badges.messaging.threads = messageThreadCount;\n badges.messaging.threadsUnread = messageThreadsUnreadCount;\n\n return nullifyUndefinedProperties({\n cartItemCount,\n cartSum,\n categoryDropdownMenu: { open: CONSTANTS.MODAL.CLOSED },\n badges,\n gdpr,\n itemLayout: itemLayout,\n itemSettings: {\n open: CONSTANTS.MODAL.CLOSED,\n item: {}\n },\n messagingModal: {\n open: CONSTANTS.MODAL.CLOSED,\n title: '',\n src: '',\n participating: false,\n recipientId: '',\n item: null\n },\n modals: {\n currentModal: null\n },\n notificationOptinModal: {\n open: CONSTANTS.MODAL.CLOSED,\n modalType: null,\n gaLabel: null,\n title: null,\n description: null,\n tagGroups: []\n },\n profileMenu: { open: CONSTANTS.MODAL.CLOSED, redirectUrl: false },\n quickView: {\n open: CONSTANTS.MODAL.CLOSED,\n items: {},\n itemIds: [],\n currentItem: 0,\n loading: false\n },\n siteLayout,\n showHeaderSearch,\n showSearchForm,\n systemMessages: {\n BankAccountMissing: false,\n InvoiceOverdue: false,\n InvoiceUnpaid: false,\n PayoutFailed: false,\n PayoutReadyBankAccountMissing: false,\n SwishNumberMissing: false,\n ...systemMessages\n },\n videoModal: {\n open: CONSTANTS.MODAL.CLOSED,\n video: ''\n },\n youtubeVideoModal: {\n open: CONSTANTS.MODAL.CLOSED,\n video: ''\n },\n shareModal: {\n isOpen: false,\n settings: null\n }\n });\n};\n\nexport const initializeFromInitData = initData => dispatch => {\n const headerElement = document.querySelector('[data-site-header-slim]');\n const cartItemCount = parseInt(\n headerElement?.getAttribute('data-cart-item-count') || '0'\n );\n const cartSum = parseInt(\n headerElement?.getAttribute('data-cart-sum') || '0'\n );\n\n const messagingBadges = cache.read(CACHE_KEYS.MESSAGING_BADGES) || {\n threads: 0,\n threadsUnread: 0\n };\n\n const state = getInitialState({\n cartItemCount,\n cartSum,\n isGdprModalOpen:\n cookieUtil.readCookie(GDPR_CONSENT_ALERT_DISMISSED) === null,\n itemLayout:\n cookieUtil.readCookie(DEFAULT_COOKIES['ITEM_LAYOUT'].key) ||\n DEFAULT_COOKIES['ITEM_LAYOUT'].default,\n messageThreadCount: messagingBadges.threads,\n messageThreadsUnreadCount: messagingBadges.threadsUnread,\n showHeaderSearch:\n initData.pageName && initData.pageName.includes('StartPage'),\n showSearchForm: !!initData.hasSearch,\n siteLayout:\n cookieUtil.readCookie(DEFAULT_COOKIES['SITE_LAYOUT'].key) ||\n DEFAULT_COOKIES['SITE_LAYOUT'].default,\n systemMessages: cache.read(CACHE_KEYS.SYSTEM_MESSAGES) || {}\n });\n dispatch(uiActions.initialize(state));\n};\n","import { logger } from 'packages';\n//jshint module : true\nimport {\n searching,\n error\n} from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { removePayout } from '../payouts/reducer';\nimport { selectPaymentsState } from 'tradera-apps/my-tradera/app/state/reducers/payments-reducer';\nconst actionTypes = {\n // Init\n INIT_DATA_LOAD: 'INIT_DATA_LOAD',\n INIT_DATA_LOADED: 'INIT_DATA_LOADED',\n\n // Swish\n UPDATE_PHONENUMBER: 'UPDATE_PHONENUMBER',\n INVALID_PHONENUMBER: 'INVALID_PHONENUMBER',\n UPDATE_VERIFYCODE: 'UPDATE_VERIFYCODE',\n INVALID_VERIFYCODE: 'INVALID_VERIFYCODE',\n DELETE_PHONENUMBER: 'DELETE_PHONENUMBER',\n SAVE_PHONENUMBER: 'SAVE_PHONENUMBER',\n SWISH_ENABLED: 'SWISH_ENABLED',\n SWISH_ERROR: 'SWISH_ERROR',\n\n // Bank\n DELETE_BANK_ACCOUNT: 'DELETE_BANK_ACCOUNT',\n UPDATE_CLEARING_NUMBER: 'UPDATE_CLEARING_NUMBER',\n UPDATE_ACCOUNT_NUMBER: 'UPDATE_ACCOUNT_NUMBER',\n BANK_NOT_MATCHED: 'BANK_NOT_MATCHED',\n IGNORE_BANK_NOT_MATCHED: 'IGNORE_BANK_NOT_MATCHED',\n BANK_ACCOUNT_SAVED: 'BANK_ACCOUNT_SAVED',\n INVALID_CLEARINGNUMBER: 'INVALID_CLEARINGNUMBER',\n INVALID_BANKACCOUNTNUMBER: 'INVALID_BANKACCOUNTNUMBER',\n BANK_ERROR: 'BANK_ERROR',\n\n // Tink\n INIT_TINK: 'INIT_TINK',\n CANCEL_TINK: 'CANCEL_TINK',\n SHOW_BANK_ACCOUNTS: 'SHOW_BANK_ACCOUNTS',\n SELECT_BANK_ACCOUNT: 'SELECT_BANK_ACCOUNT',\n TINK_COMPLETED: 'TINK_COMPLETED',\n TINK_ERROR: 'TINK_ERROR',\n\n // BankId\n SKIP_BANKID_AUTH: 'SKIP_BANKID_AUTH',\n BEGIN_BANKID_AUTH: 'BEGIN_BANKID_AUTH',\n CANCEL_BANKID_AUTH: 'CANCEL_BANKID_AUTH',\n BANKID_IN_PROGRESS: 'BANKID_IN_PROGRESS',\n BANKID_COMPLETED: 'BANKID_COMPLETED',\n BANKID_ERROR: 'BANKID_ERROR',\n\n // Payouts\n PAYOUTS_LOADED: 'PAYOUTS_LOADED',\n PAYOUTS_ERROR: 'PAYOUTS_ERROR'\n};\n\n// Init\n\nconst loadInitData = toLocalizedUrl => {\n return async dispatch => {\n try {\n dispatch({ type: actionTypes.INIT_DATA_LOAD });\n const response = await fetch(\n toLocalizedUrl('/my/payments2/GetInitData'),\n {\n method: 'GET',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n }\n );\n const result = await response.json();\n if (response.ok)\n dispatch({\n type: actionTypes.INIT_DATA_LOADED,\n payload: result\n });\n else\n dispatch({\n type: actionTypes.PAYOUTS_ERROR,\n payload: 'Det gick inte att ladda utbetalningar.'\n });\n\n dispatch(searching(false));\n dispatch(error(false));\n } catch (err) {\n logger(err);\n }\n };\n};\n\n// Swish\n\nconst updatePhoneNumber = newNumber => ({\n type: actionTypes.UPDATE_PHONENUMBER,\n payload: { number: newNumber, isValid: newNumber.length > 7 }\n});\n\nconst updateVerifyCode = verifyCode => ({\n type: actionTypes.UPDATE_VERIFYCODE,\n payload: verifyCode\n});\n\nconst deletePhoneNumber = () => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/DeletePhoneNumber', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n });\n await response.json();\n if (response.ok) dispatch({ type: actionTypes.DELETE_PHONENUMBER });\n else\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst verifyCode = code => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/VerifyCode', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ code: code })\n });\n const result = await response.json();\n const payload = {\n type: 'swish',\n completeText: 'Ditt Swish-nummer är nu tillagt och bekräftat.',\n verificationText: 'Bekräfta Swish-nummer'\n };\n if (response.ok) {\n dispatch({\n type: actionTypes.BEGIN_BANKID_AUTH,\n payload: payload\n });\n dispatch(bankIdAuthenticate());\n } else if (result.code == 'InvalidCode')\n dispatch({\n type: actionTypes.INVALID_VERIFYCODE,\n payload: 'Du har angett fel kod.'\n });\n else\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst savePhoneNumber = newNumber => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/SavePhoneNumber', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ phoneNumber: newNumber })\n });\n const result = await response.json();\n if (\n response.ok &&\n !result.requireSmsVerification &&\n !result.requireBankIdVerification\n ) {\n const payload = {\n type: 'swish',\n completeText:\n 'Ditt Swish-nummer är nu tillagt och bekräftat.',\n verificationText: 'Bekräfta Swish-nummer'\n };\n dispatch({\n type: actionTypes.SAVE_PHONENUMBER,\n payload: newNumber\n });\n dispatch({ type: actionTypes.SWISH_ENABLED });\n dispatch({\n type: actionTypes.SKIP_BANKID_AUTH,\n payload: payload\n });\n } else if (response.ok)\n dispatch({\n type: actionTypes.SAVE_PHONENUMBER,\n payload: newNumber\n });\n else if (result.code == 'InvalidPhoneNumber')\n dispatch({\n type: actionTypes.INVALID_PHONENUMBER,\n payload: 'Du har angett ett felaktigt telefonnummer.'\n });\n else if (result.code == 'InvalidCompanySwishNumber')\n dispatch({\n type: actionTypes.INVALID_PHONENUMBER,\n payload: 'Du har angett ett felaktigt Swishnummer.'\n });\n else if (result.code == 'SendSmsError')\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Det gick inte att skicka SMS. Försök igen.'\n });\n else\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst setVerifiedPhoneNumber = () => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/SetSwishVerified', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n });\n await response.json();\n if (response.ok) dispatch({ type: actionTypes.SWISH_ENABLED });\n else\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\n// Bank\n\nconst updateAccountNumber = newAccountNumber => ({\n type: actionTypes.UPDATE_ACCOUNT_NUMBER,\n payload: {\n newAccountNumber: newAccountNumber,\n isValid: newAccountNumber.length > 4\n }\n});\n\nconst updateClearingNumber = newClearingNumber => ({\n type: actionTypes.UPDATE_CLEARING_NUMBER,\n payload: {\n newClearingNumber: newClearingNumber,\n isValid: newClearingNumber.length > 3\n }\n});\n\nconst deleteBankAccount = () => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/DeleteBankAccount', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n });\n if (response.ok) {\n dispatch({ type: actionTypes.DELETE_BANK_ACCOUNT });\n dispatch(removePayout());\n } else {\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst saveBankAccount = () => {\n return async (dispatch, getState) => {\n try {\n const clearingNumber = selectPaymentsState(getState())\n .bankAccountDetails.newClearingNumber;\n const accountNumber = selectPaymentsState(getState())\n .bankAccountDetails.newAccountNumber;\n const response = await fetch('/my/payments2/SaveBankAccount', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n clearingNumber: clearingNumber,\n accountNumber: accountNumber\n })\n });\n const result = await response.json();\n if (response.ok) {\n dispatch({\n type: actionTypes.BANK_ACCOUNT_SAVED,\n payload: result.maskedAccountNumber\n });\n } else if (result.code == 'InvalidClearingNumber') {\n dispatch({\n type: actionTypes.INVALID_CLEARINGNUMBER,\n payload:\n 'Du har angett ett felaktigt clearingnummer. Clearingnumret ska vara 4-5 siffror långt.'\n });\n } else if (result.code == 'InvalidBankAccountNumber') {\n dispatch({\n type: actionTypes.INVALID_BANKACCOUNTNUMBER,\n payload:\n 'Du har angett ett felaktigt bankkontonummer. Bankkontonumret ska vara mellan 7-10 siffror långt.'\n });\n } else {\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst initSaveBankAccount = () => {\n return async (dispatch, getState) => {\n try {\n const clearingNumber = selectPaymentsState(getState())\n .bankAccountDetails.newClearingNumber;\n const accountNumber = selectPaymentsState(getState())\n .bankAccountDetails.newAccountNumber;\n\n const response = await fetch('/my/payments2/MatchBank', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n clearingNumber: clearingNumber,\n accountNumber: accountNumber\n })\n });\n\n const result = await response.json();\n\n if (result.invalidNumber) {\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Felaktigt kontonummer'\n });\n return;\n }\n const payload = {\n type: 'bank',\n completeText: 'Ditt bankkonto är nu tillagt och bekräftat.',\n verificationText: 'Bekräfta bankkonto'\n };\n if (result.ok && !result.requireBankIdVerification) {\n dispatch(saveBankAccount());\n dispatch({\n type: actionTypes.SKIP_BANKID_AUTH,\n payload: payload\n });\n return;\n }\n if (result.ok) {\n dispatch({\n type: actionTypes.BEGIN_BANKID_AUTH,\n payload: payload\n });\n dispatch(bankIdAuthenticate());\n return;\n }\n\n dispatch({ type: actionTypes.BANK_NOT_MATCHED });\n if (result.requireBankIdVerification) {\n dispatch({\n type: actionTypes.BEGIN_BANKID_AUTH,\n payload: payload\n });\n } else {\n dispatch({\n type: actionTypes.SKIP_BANKID_AUTH,\n payload: payload\n });\n }\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\n// Tink\nconst initTink = () => ({\n type: actionTypes.INIT_TINK\n});\n\nconst cancelTink = () => ({\n type: actionTypes.CANCEL_TINK\n});\n\nconst errorTink = () => ({\n type: actionTypes.TINK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n});\n\nconst loadBankAccounts = data => {\n return async dispatch => {\n try {\n const response = await fetch(\n '/my/payments2/TinkCallback?code=' + data.data,\n {\n method: 'GET',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n }\n );\n const result = await response.json();\n dispatch({\n type: actionTypes.SHOW_BANK_ACCOUNTS,\n payload: result.accounts\n });\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.TINK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst selectBankAccount = account => {\n return async dispatch => {\n dispatch({ type: actionTypes.SELECT_BANK_ACCOUNT, payload: account });\n const payload = {\n type: 'tink',\n completeText: 'Ditt bankkonto är nu tillagt och bekräftat.',\n verificationText: 'Bekräfta bankkonto'\n };\n dispatch({ type: actionTypes.BEGIN_BANKID_AUTH, payload: payload });\n };\n};\n\n// Needs better handling: 500 error on fetch does not catch\nconst saveTinkBankAccount = account => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/SaveTinkBankAccount', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ accountNumber: account.accountNumber })\n });\n const result = await response.json();\n if (result.errorMessage) {\n dispatch({\n type: actionTypes.TINK_ERROR,\n payload: result.errorMessage\n });\n } else {\n dispatch({\n type: actionTypes.TINK_COMPLETED,\n payload: result.maskedAccountNumber\n });\n }\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.TINK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\n// BankId\n\nconst cancelBankId = () => {\n return async dispatch => {\n try {\n await fetch('/bankid/cancel', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n });\n } catch (err) {\n logger(err);\n }\n\n dispatch({ type: actionTypes.CANCEL_BANKID_AUTH });\n };\n};\n\nconst bankIdContinue = () => {\n return async (dispatch, getState) => {\n dispatch({ type: actionTypes.IGNORE_BANK_NOT_MATCHED });\n if (\n selectPaymentsState(getState()).bankIdVerification\n .requireBankIdVerification\n ) {\n dispatch(bankIdAuthenticate());\n } else {\n dispatch(saveBankAccount());\n }\n };\n};\n\nconst bankIdAuthenticate = () => {\n return async (dispatch, getState) => {\n try {\n const response = await fetch(ENDPOINTS.BANK_ID_AUTHENTICATE, {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n purpose: 'confirm-bank-account-or-swish'\n })\n });\n\n const result = await response.json();\n if (result.errorMessage) {\n dispatch({\n type: actionTypes.BANKID_ERROR,\n payload: bankIdUserMessage(result.errorMessage)\n });\n return;\n }\n dispatch({ type: actionTypes.BANKID_IN_PROGRESS, payload: result });\n\n selectPaymentsState(getState()).bankIdVerification.errorCount = 0;\n\n dispatch(bankIdPollProgress());\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.BANKID_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst sleep = delay => new Promise(resolve => setTimeout(resolve, delay));\n\nconst bankIdPollProgress = () => {\n return async (dispatch, getState) => {\n try {\n const response = await fetch(\n `${ENDPOINTS.BANK_ID_PROGRESS}?${new Date().getTime()}`,\n {\n method: 'GET',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n }\n );\n const result = await response.json();\n if (result.errorMessage) {\n dispatch({\n type: actionTypes.BANKID_ERROR,\n payload: bankIdUserMessage(result.errorMessage)\n });\n return;\n }\n if (result.isCompleted) {\n if (\n selectPaymentsState(getState()).bankIdVerification.type ===\n 'swish'\n ) {\n dispatch(setVerifiedPhoneNumber());\n } else if (\n selectPaymentsState(getState()).bankIdVerification.type ===\n 'bank'\n ) {\n dispatch(saveBankAccount());\n } else if (\n selectPaymentsState(getState()).bankIdVerification.type ===\n 'tink'\n ) {\n dispatch(\n saveTinkBankAccount(\n selectPaymentsState(getState()).tink.account\n )\n );\n }\n dispatch({ type: actionTypes.BANKID_COMPLETED });\n return;\n }\n await sleep(3000);\n if (\n !selectPaymentsState(getState()).bankIdVerification\n .bankIdInProgress\n ) {\n return;\n }\n dispatch(bankIdPollProgress());\n } catch (err) {\n selectPaymentsState(getState()).bankIdVerification.errorCount++;\n if (\n selectPaymentsState(getState()).bankIdVerification.errorCount <\n 3\n ) {\n dispatch(bankIdPollProgress());\n } else {\n logger(err);\n dispatch({\n type: actionTypes.BANKID_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n }\n };\n};\n\nconst bankIdUserMessage = errorMessage => {\n switch (errorMessage) {\n case 'START_FAILED':\n return 'BankID-appen verkar inte finnas i din dator eller telefon. Installera den och hämta ett BankID hos din internetbank.';\n case 'EXPIRED_TRANSACTION':\n return 'BankID-appen svarar inte. Kontrollera att den är startad och att du har internetanslutning. Om du inte har något giltigt BankID kan du hämta ett hos din Bank. Försök sedan igen.';\n case 'ALREADY_IN_PROGRESS':\n return 'En identifiering för det här personnumret är redan påbörjad. Vänta en stund och försök igen.';\n case 'CERTIFICATE_ERROR':\n return 'Det BankID du försöker använda är för gammalt eller spärrat. Använd ett annat BankID eller hämta ett nytt hos din internetbank.';\n case 'CANCELLED':\n return 'Åtgärden avbruten. Försök igen.';\n case 'USER_CANCEL':\n return 'Åtgärden avbruten.';\n default:\n return 'Ett fel uppstod. Försök igen.';\n }\n};\n\nexport default {\n actionTypes,\n loadInitData,\n deletePhoneNumber,\n updatePhoneNumber,\n savePhoneNumber,\n updateVerifyCode,\n verifyCode,\n deleteBankAccount,\n updateAccountNumber,\n updateClearingNumber,\n initSaveBankAccount,\n initTink,\n cancelTink,\n errorTink,\n loadBankAccounts,\n selectBankAccount,\n saveTinkBankAccount,\n cancelBankId,\n bankIdContinue,\n bankIdAuthenticate\n};\n","import React from 'react';\nimport { formatPrice } from './formats';\nimport { LIST_VIEW_TYPES } from './../constants/list-types';\nimport STRINGS from './../constants/text-strings';\n\nexport const generateSumOfDiscounts = discounts => {\n return discounts\n .map(discount => discount.amount)\n .reduce((total, currentAmount) => {\n return total + currentAmount;\n }, 0);\n};\n\nexport const getBidCount = item => {\n return item && item.bidInformation && item.bidInformation.bidCount > 0\n ? item.bidInformation.bidCount\n : 0;\n};\n\nexport const getSumOfDiscounts = item => {\n const transaction = item.transaction;\n return transaction &&\n transaction.discounts &&\n transaction.discounts.length > 0\n ? generateSumOfDiscounts(transaction.discounts)\n : null;\n};\n\nexport const getMaxBid = item =>\n item.caller && item.caller.maxBid && item.caller.maxBid > 0\n ? formatPrice(item.caller.maxBid)\n : null;\n\nexport const getTimeLeft = item => {\n return item.isActive === true && item.timeLeft && item.timeLeft.timeleft\n ? item.timeLeft.timeleft\n : null;\n};\n\nexport const isTimeLeftCritical = item => {\n return item.timeLeft && item.timeLeft.critical\n ? item.timeLeft.critical\n : false;\n};\n\nexport const getShippingCost = (item, listViewType) => {\n const translateShippingNames = name => {\n const names = {\n Takeaway: 'Avh.',\n TakeawayLong: 'Avhämtning',\n TakeawayOnly: 'Avhämtning',\n SchenkerPrivpak: 'DB Schenker',\n Alternative: 'Annat fraktsätt'\n };\n if (!names[name]) {\n return name;\n }\n if (name === 'Takeaway' && listViewType === LIST_VIEW_TYPES.BASIC) {\n return names['TakeawayLong'];\n }\n return names[name];\n };\n\n const shouldShowShippingPrice = shippingItem =>\n shippingItem.shippingType === 'Takeaway'\n ? ''\n : `: ${formatPrice(shippingItem.shippingCost)}`;\n const getShippingLabelWithPrice = shippingItem => {\n return `${translateShippingNames(\n shippingItem.shippingType\n )}${shouldShowShippingPrice(shippingItem)}`;\n };\n\n return () => {\n const shippingOptions = item.listing.shippingOptions;\n\n if (item.transaction) {\n // Logic from Areas/MyTradera/Models/ShippingPrice.cs\n const selectedShipping = item.transaction.selectedShipping;\n if (selectedShipping) {\n if (selectedShipping.isTakeaway) {\n return `${translateShippingNames(\n 'Takeaway'\n )}: ${formatPrice(item.transaction.selectedShipping.cost)}`;\n }\n\n if (selectedShipping.isFreeShipping) {\n return STRINGS.SHIPPING_LABELS.FREE_SHIPPING;\n }\n return `${translateShippingNames(\n selectedShipping.name\n )}: ${formatPrice(item.transaction.selectedShipping.cost)}`;\n } else {\n /*\n * @todo: This if should be fixed in the backend.\n */\n if (\n item.transaction.hasIntegratedPayment === true &&\n shippingOptions.length === 1\n ) {\n let theOnlyShippingOption = item.listing.shippingOptions[0];\n return theOnlyShippingOption.shippingType === 'Takeaway'\n ? STRINGS.SHIPPING_LABELS.TAKEAWAY\n : formatPrice(theOnlyShippingOption.shippingCost);\n }\n\n return shippingOptions.map((shippingItem, i) => {\n return listViewType === LIST_VIEW_TYPES.BASIC ? (\n

{getShippingLabelWithPrice(shippingItem)}

\n ) : (\n `${getShippingLabelWithPrice(shippingItem)}${\n i < shippingOptions.length ? ', ' : ''\n }`\n );\n });\n }\n }\n\n const itemOffersTakeawayOnly = () =>\n shippingOptions.length === 1 &&\n shippingOptions.find(\n shippingOption => shippingOption.shippingType === 'Takeaway'\n ) !== undefined\n ? true\n : false;\n const getCheapestShippingCost = () =>\n shippingOptions.length === 0\n ? { shippingCost: 0 }\n : shippingOptions.reduce((accumulator, currentValue) => {\n if (\n (currentValue.shippingCost <\n accumulator.shippingCost &&\n currentValue.shippingType !== 'Takeaway') ||\n accumulator.shippingType === 'Takeaway'\n ) {\n return currentValue;\n }\n return accumulator;\n });\n\n return itemOffersTakeawayOnly()\n ? STRINGS.SHIPPING_LABELS.TAKEAWAY\n : formatPrice(getCheapestShippingCost().shippingCost);\n };\n};\n\nexport const isNormalListViewType = listViewType =>\n listViewType === LIST_VIEW_TYPES.NORMAL;\n","import { touchWebClient } from 'tradera-utils/http';\n\nexport const getReportItemModel = itemId => {\n return touchWebClient.get(`report-item/${itemId}.json`);\n};\n\nexport const postReport = (itemId, reason, message, categoryId) => {\n const payload = { reason, message, categoryId };\n return touchWebClient.post(`report-item/${itemId}`, payload);\n};\n","import { setReportItem, setViewState } from './reducer';\nimport { getReportItemModel, postReport } from './api';\nimport { VIEW_STATES } from './constants';\nimport { logger } from 'packages';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { getBackToHereRedirectUrl } from 'tradera-utils/url';\nimport { getReturnUrl } from 'tradera-utils/login';\n\nconst onLoggedOut = () => {\n window.location = `/login${getReturnUrl(getBackToHereRedirectUrl())}`;\n};\n\nexport const loadReportItemModel = itemId => async (dispatch, getState) => {\n const reportItem = getState().views.reportItem;\n const isLoaded = reportItem.itemId === itemId;\n if (isLoaded) {\n dispatch(\n setViewState(\n reportItem.hasEnded ? VIEW_STATES.ITEM_ENDED : VIEW_STATES.FORM\n )\n );\n return;\n }\n try {\n dispatch(setViewState(VIEW_STATES.LOADING));\n const { data } = await getReportItemModel(itemId);\n\n dispatch(handleReportItemModel(data));\n } catch (error) {\n if (error.message === API_ERRORS.LOGGED_OUT) {\n onLoggedOut();\n } else {\n logger(error);\n }\n }\n};\n\nexport const handleReportItemModel = reportItemModel => dispatch => {\n dispatch(setReportItem(reportItemModel));\n};\n\nexport const submitReport = (\n itemId,\n reason,\n message,\n categoryId\n) => async dispatch => {\n dispatch(setViewState(VIEW_STATES.SUBMITTING));\n try {\n await postReport(itemId, reason, message, categoryId);\n dispatch(setViewState(VIEW_STATES.SUBMIT_SUCCESS));\n } catch (error) {\n logger(error);\n dispatch(setViewState(VIEW_STATES.SUBMIT_FAILED));\n }\n};\n","export const VIEW_ITEM_STATES = {\n INITIALIZING: 'INITIALIZING',\n ACTIVE: 'ACTIVE',\n ENDING: 'ENDING',\n ENDED: 'ENDED'\n};\n\nexport const ITEM_STATES = {\n ONGOING_AUCTION: 'ONGOING_AUCTION',\n ONGOING_AUCTION_BIN: 'ONGOING_AUCTION_BIN',\n ONGOING_FIXED_PRICE: 'ONGOING_FIXED_PRICE',\n ENDED_AUCTION_WITHOUT_BID: 'ENDED_AUCTION_WITHOUT_BID',\n ENDED_AUCTION_WITH_WINNING_BID: 'ENDED_AUCTION_WITH_WINNING_BID',\n ENDED_AUCTION_WITHOUT_WINNING_BID: 'ENDED_AUCTION_WITHOUT_WINNING_BID',\n ENDED_AUCTION_BIN_BOUGHT_AS_BIN: 'ENDED_AUCTION_BIN_BOUGHT_AS_BIN',\n ENDED_FIXED_PRICE: 'ENDED_FIXED_PRICE',\n UNKNOWN: 'UNKNOWN'\n};\n","export { default } from './alink';\n","import { isServer } from 'tradera-utils/nextjs';\n\nexport default !isServer && window.sellingGlobalData;\n","import initData from 'init-data';\nimport uiReducer from 'tradera-state/ui/reducer';\nimport CONSTANTS from 'tradera-constants/state';\nimport TEXT_STRINGS from 'tradera-apps/my-tradera/app/constants/text-strings';\nimport { createSlice } from '@reduxjs/toolkit';\nimport uiActionTypes from 'tradera-state/ui/action-types';\n\nconst initialState = {\n isCombinedShippingEnabled: false,\n isSearching: false,\n page: {},\n error: false,\n initData: {\n environment: initData.environment || '',\n version: initData.environment || '',\n title: initData.title || '',\n description: initData.description || ''\n },\n splitTests: initData.splitTests || null,\n memberAlias: initData ? initData.memberAlias : '',\n memberFirstName: initData ? initData.memberFirstName : '',\n memberId: initData ? initData.memberId : '',\n memberLastName: initData ? initData.memberLastName : '',\n memberCountryCodeIso2: initData ? initData.memberCountryCodeIso2 : null,\n memberMessagingParticipation: false,\n mobileMenu: false,\n mobileActions: false,\n messagingModal: {\n open: CONSTANTS.MODAL.CLOSED,\n title: '',\n src: '',\n participating: false,\n recipientId: '',\n item: null\n },\n changeShippingModal: {\n open: false,\n purchaseOrderId: null\n },\n setDiscountModal: {\n open: false,\n purchaseOrderId: null\n }\n};\n\nconst slice = createSlice({\n name: 'my-tradera',\n initialState,\n reducers: {\n setCombinedShippingEnabled: (state, { payload }) => {\n state.isCombinedShippingEnabled = payload;\n },\n searching: (state, { payload }) => {\n state.isSearching = payload;\n },\n error: (state, { payload }) => {\n state.error =\n payload === true ? TEXT_STRINGS.ERRORS.GENERIC : payload;\n },\n openModal: (state, { payload }) => {\n state.openModal = payload;\n },\n setBreakPoint: (state, { payload }) => {\n state.setBreakPoint = payload;\n },\n mobileMenu: (state, { payload }) => {\n state.mobileMenu =\n payload && payload === false ? false : !state.mobileMenu;\n },\n mobileActions: (state, { payload }) => {\n state.mobileActions =\n payload && payload === false ? false : !state.mobileActions;\n },\n setMemberMessagingParticipation: (state, { payload }) => {\n state.memberMessagingParticipation = payload;\n },\n openChangeShipping: (state, { payload }) => {\n state.changeShippingModal.open = true;\n state.changeShippingModal.purchaseOrderId = payload;\n },\n closeChangeShipping: state => {\n state.changeShippingModal.open = false;\n },\n openSetDiscount: (state, { payload }) => {\n state.setDiscountModal.open = true;\n state.setDiscountModal.purchaseOrderId = payload;\n },\n closeSetDiscount: state => {\n state.setDiscountModal.open = false;\n },\n setTranslatedRouteInformation: (state, { payload }) => {\n state.page = payload;\n }\n },\n extraReducers: {\n /*\n Reusing actions and reducers for messaging modal from global\n redux store to reduce duplicate code\n */\n [uiActionTypes.OPEN_MESSAGING_MODAL]: uiReducer,\n [uiActionTypes.CLOSE_MESSAGING_MODAL]: uiReducer\n }\n});\n\nexport const selectMyTraderaState = state => state.views.myTradera.myTradera;\n\nexport default slice.reducer;\n\nexport const {\n openModal,\n searching,\n error,\n mobileMenu,\n mobileActions,\n setBreakPoint,\n setMemberMessagingParticipation,\n openChangeShipping,\n closeChangeShipping,\n openSetDiscount,\n closeSetDiscount,\n setCombinedShippingEnabled,\n setTranslatedRouteInformation\n} = slice.actions;\n","import { useCallback } from 'react';\nimport { useDayJs } from 'tradera-hooks/use-day-js';\nimport { formatUtcDateAsSwedishTimeZoneDate } from 'tradera-utils/date';\n\nexport const useFormatUtcDateInSwedishTimeZone = () => {\n const dayjs = useDayJs();\n\n const formatUtcDateInSwedishTimeZone = useCallback(\n transactionDate =>\n formatUtcDateAsSwedishTimeZoneDate(transactionDate, dayjs),\n [dayjs]\n );\n\n return formatUtcDateInSwedishTimeZone;\n};\n","export const selectCurrencies = state => state.multiCurrency.currencies;\n\nexport const selectPreferredCurrency = state =>\n state.multiCurrency.preferredCurrency ||\n state.multiCurrency.currencies.find(c => c.code === 'SEK');\n\nexport const selectShowCurrencySelection = state =>\n !!(\n state.multiCurrency.enabled &&\n state.multiCurrency.preferredCurrency &&\n state.multiCurrency.currencies &&\n state.multiCurrency.currencies.length > 0\n );\n","import cookieUtil from 'tradera-utils/cookie';\nimport { MYTRADERA_DEFAULT_COOKIES } from 'tradera-constants/cookies';\nimport { logger } from 'packages';\nimport { createSlice } from '@reduxjs/toolkit';\n\nconst defaultState = () => {\n let defaultCookies = {};\n Object.keys(MYTRADERA_DEFAULT_COOKIES).forEach(value => {\n let val = cookieUtil.readCookie(MYTRADERA_DEFAULT_COOKIES[value].key);\n defaultCookies[value] = val\n ? val\n : MYTRADERA_DEFAULT_COOKIES[value].default;\n });\n return defaultCookies;\n};\n\nconst cookiesSlice = createSlice({\n name: 'cookies',\n initialState: defaultState(),\n reducers: {\n setCookie: {\n reducer: (state, { payload }) => {\n if (state[payload.name] !== payload.value) {\n state[payload.name] = payload.value;\n }\n },\n prepare: payload => {\n const { length, key } = MYTRADERA_DEFAULT_COOKIES[payload.name];\n try {\n cookieUtil.createCookie(key, payload.value, length);\n } catch (e) {\n logger(e);\n }\n return { payload };\n }\n }\n }\n});\n\nexport default cookiesSlice.reducer;\n\nexport const { setCookie } = cookiesSlice.actions;\n\nexport const selectCookiesState = state => state.views.myTradera.cookies;\n","import { formatUtcDateAsSwedishTimeZoneDate } from 'tradera-utils/date';\nimport { PAGE_LIST_TYPES } from '../../constants/list-types';\n\nconst isTakeaway = shippingType => {\n return shippingType === 'Takeaway' || shippingType === 'TakeawayOnly';\n};\n\nconst getSoldItemStateFor = sellerState => {\n if (sellerState.shipped && sellerState.feedbackLeft) {\n return 'Done';\n }\n if (sellerState.shipped) {\n return 'Shipped';\n }\n return sellerState.paid ? 'Paid' : 'NotPaid';\n};\n\nexport const initialPayloadItems = (data, listType, dayjs) => {\n return data.purchaseOrders\n .map(purchaseOrder =>\n purchaseOrder.rows.map(row => ({\n ...row,\n caller: {},\n haveMultipleRows: purchaseOrder.rows.length > 1,\n haveCombinedShipping: !!purchaseOrder.combinedShippingInformation,\n isArchived: purchaseOrder.state.isArchived,\n key: row.listing.itemId,\n itemId: row.listing.itemId,\n itemUrl: row.listing.itemUrl,\n listing: {\n ...row.listing,\n restart: {},\n endDate: {\n formatted: formatUtcDateAsSwedishTimeZoneDate(\n row.listing.endDate,\n dayjs\n )\n }\n },\n bidInformation: {\n bidCount: row.buying.bidCount\n },\n seller: {\n ...purchaseOrder.sellerMember,\n id: purchaseOrder.sellerMember.memberId\n },\n transaction: {\n ...row.transaction,\n ...(purchaseOrder.shipping.selectedShipping\n ? {\n selectedShipping: {\n ...purchaseOrder.shipping.selectedShipping,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.selectedShipping\n .shippingType\n )\n }\n }\n : null),\n ...(purchaseOrder.shipping.shippingDiscount\n ? {\n shippingDiscount: {\n ...purchaseOrder.shipping.shippingDiscount,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.shippingDiscount\n .shippingType\n )\n }\n }\n : null),\n ...(purchaseOrder.shipping.shipping?.url\n ? {\n trackingLink: purchaseOrder.shipping.shipping?.url\n }\n : null),\n bookedShipment: {\n ...purchaseOrder.shipping.shipping\n },\n isPaymentExpired: purchaseOrder.state.isPaymentExpired,\n paidShipmentCheckoutId:\n purchaseOrder.shipping.shipping?.shipmentCheckoutId,\n shipmentId: purchaseOrder.shipping.shipping?.shipmentId,\n hasUnpaidShipping: purchaseOrder.state.hasUnpaidShipping,\n isRefundAllowed: purchaseOrder.state.isRefundAllowed,\n isDiscountAllowed: purchaseOrder.state.isDiscountAllowed,\n isPaidWithIntegratedPaymentOption:\n purchaseOrder.state.isPaidWithIntegratedPayment,\n purchaseOrderId: purchaseOrder.purchaseOrderId,\n hasBuyerProtection:\n purchaseOrder.payment.hasBuyerProtection,\n ...(listType === PAGE_LIST_TYPES.BUYER_PURCHASES\n ? {\n buyerState: {\n ...row.transaction.sellerState,\n ...row.transaction.buyerState,\n paid:\n purchaseOrder.state.isPaid ||\n purchaseOrder.state.isMarkedAsPaidByBuyer,\n shippingBooked:\n purchaseOrder.state.isShippingBooked,\n shipped: purchaseOrder.state.isShipped,\n hidden: purchaseOrder.state.isHiddenForBuyer,\n inr: row.transaction.buyerState.isInrSubmitted\n }\n }\n : {\n sellerState: {\n upiSubmitted:\n purchaseOrder.state.isUpiSubmitted,\n state: getSoldItemStateFor({\n ...row.transaction.sellerState,\n shipped: purchaseOrder.state.isShipped,\n paid: purchaseOrder.state.isPaid\n }),\n ...row.transaction.sellerState,\n paid: purchaseOrder.state.isPaid,\n shippingBooked:\n purchaseOrder.state.isShippingBooked,\n shipped: purchaseOrder.state.isShipped,\n hidden: purchaseOrder.state.isHiddenForSeller\n }\n }),\n transactionDate: {\n formatted: formatUtcDateAsSwedishTimeZoneDate(\n row.transaction.transactionDate,\n dayjs\n )\n },\n buyer: {\n ...purchaseOrder.buyerMember,\n id: purchaseOrder.buyerMember.memberId\n }\n }\n }))\n )\n .flatMap(row => row);\n};\n\nexport const initialPayloadPurchaseOrders = (data, page) => {\n return data.purchaseOrders.map(purchaseOrder => {\n return {\n ...purchaseOrder,\n shipping: {\n ...purchaseOrder.shipping,\n ...(purchaseOrder.shipping.selectedShipping\n ? {\n selectedShipping: {\n ...purchaseOrder.shipping.selectedShipping,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.selectedShipping\n .shippingType\n )\n }\n }\n : null),\n ...(purchaseOrder.shipping.shippingDiscount\n ? {\n shippingDiscount: {\n ...purchaseOrder.shipping.shippingDiscount,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.shippingDiscount\n .shippingType\n )\n }\n }\n : null)\n },\n transactionIds: purchaseOrder.rows.map(row => {\n return row.transaction.transactionId;\n }),\n itemsToGiveFeedBackTo: purchaseOrder.rows\n .map(row => {\n if (\n row.transaction[\n page.listType === PAGE_LIST_TYPES.BUYER_PURCHASES\n ? 'buyerState'\n : 'sellerState'\n ].feedbackLeft !== true\n ) {\n return row.transaction.transactionId;\n }\n return null;\n })\n .filter(Boolean)\n };\n });\n};\n","import {\n selectMyTraderaState,\n searching,\n error\n} from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectFiltersState } from 'tradera-apps/my-tradera/app/state/selectors/filters';\nimport fetch from '../../utils/fetch';\nimport myTraderaItemsActions from './my-tradera-items';\nimport URLS from '../../constants/urls';\nimport { actionTypes } from '../action-types/purchase-order';\nimport {\n initialPayloadItems,\n initialPayloadPurchaseOrders\n} from '../../helpers/payloads/purchase-order';\nimport { showSuccessToast } from 'tradera-services/toasts';\nimport { scrollToInitialScroll } from 'tradera-apps/my-tradera/app/state/actions/scroll-to-initial-scroll';\n\nconst resetPurchaseOrder = () => ({\n type: actionTypes.PURCHASE_ORDER_RESET\n});\n\nconst runPurchaseOrders = ({\n page,\n shouldScrollToInitialScroll = false,\n listViewType,\n waitForBackend = false,\n dontModifyHistory = true,\n dayjs\n}) => async (dispatch, getState) => {\n const endPoint = page.searchUrlNormalView;\n\n if (!endPoint) {\n return;\n }\n\n const state = getState();\n\n const currentMemberId = state.member.memberId;\n\n dispatch(searching(true));\n dispatch(error(false));\n dispatch(resetPurchaseOrder());\n dispatch(myTraderaItemsActions.resetMyTraderaItems());\n\n const search = async () => {\n try {\n const modifiersFromState = selectFiltersState(state).modifiers;\n const modifiers = {\n ...modifiersFromState,\n PageNumber: modifiersFromState.paging.page,\n PageSize: modifiersFromState.paging.size\n };\n\n const data = await fetch(endPoint, {\n body: JSON.stringify(\n myTraderaItemsActions.changeParamsForBackend(modifiers)\n )\n });\n\n dispatch({\n type: myTraderaItemsActions.actionTypes.UPDATE_ITEMS,\n payload: {\n value: {\n currentMemberId,\n items: initialPayloadItems(data, page.listType, dayjs)\n },\n page: page.pageName,\n listViewType,\n memberMessagingParticipation: selectMyTraderaState(state)\n .memberMessagingParticipation\n }\n });\n dispatch({\n type: actionTypes.PURCHASE_ORDER_LIST,\n payload: {\n paging: {\n from:\n modifiers.paging.size * (modifiers.paging.page - 1),\n page: modifiers.paging.page,\n size: modifiers.paging.size,\n totalPages: data.totalNumberOfPages,\n totalItems: data.totalNumberOfPurchaseOrders\n },\n purchaseOrders: initialPayloadPurchaseOrders(data, page),\n statistics: data.statistics\n }\n });\n\n if (shouldScrollToInitialScroll === true) {\n scrollToInitialScroll();\n }\n\n dispatch(error(false));\n return dispatch(searching(false));\n } catch (error) {\n dispatch(searching(false));\n if (dontModifyHistory === false) {\n myTraderaItemsActions.updateURL(\n dispatch,\n page.url,\n selectFiltersState(state).modifiers\n );\n }\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n };\n\n // This is a hack to enable delay of searches since sometimes when modifying an item\n // outside of the SPA world, it could take some time for the backend to catch up\n if (waitForBackend === true) {\n setTimeout(search, 3000);\n } else {\n search();\n }\n};\n\nconst updatePurchaseOrderShipped = (\n purchaseOrderId,\n listViewType,\n transactionIds,\n isShipped\n) => async dispatch => {\n dispatch(searching(true));\n try {\n dispatch(error(false));\n if (isShipped) {\n await fetch(URLS.MARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n });\n dispatch(\n myTraderaItemsActions.transactionsMarkAsShippedBySeller(\n transactionIds,\n listViewType\n )\n );\n } else {\n await fetch(URLS.UNMARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n });\n dispatch(\n myTraderaItemsActions.transactionsUnmarkAsShippedBySeller(\n transactionIds,\n listViewType\n )\n );\n }\n dispatch({\n type: actionTypes.PURCHASE_ORDER_SHIPPED,\n payload: {\n isShipped,\n purchaseOrderId\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst requestCombinedShippingPrice = (\n purchaseOrderId,\n hasBuyerRequestedCombinedShippingPrice\n) => async dispatch => {\n dispatch(searching(true));\n try {\n dispatch(error(false));\n\n await fetch(URLS.REQUEST_COMBINED_SHIPPING_PRICE, {\n body: JSON.stringify({\n purchaseOrderId,\n hasRequested: hasBuyerRequestedCombinedShippingPrice\n })\n });\n\n dispatch({\n type: actionTypes.PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING,\n payload: {\n purchaseOrderId,\n hasBuyerRequestedCombinedShippingPrice\n }\n });\n\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst updatePurchaseOrderPaidByBuyer = (\n purchaseOrderId,\n listViewType,\n isMarkedAsPaidByBuyer\n) => async dispatch => {\n dispatch(searching(true));\n try {\n dispatch(error(false));\n if (isMarkedAsPaidByBuyer) {\n await fetch(URLS.BUYER_MARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersMarkAsPaidByBuyer(\n [purchaseOrderId],\n listViewType\n )\n );\n } else {\n await fetch(URLS.BUYER_UNMARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersUnmarkAsPaidByBuyer(\n [purchaseOrderId],\n listViewType\n )\n );\n }\n dispatch({\n type: actionTypes.PURCHASE_ORDER_PAID_BY_BUYER,\n payload: {\n isMarkedAsPaidByBuyer,\n purchaseOrderId\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst updatePurchaseOrderPaidBySeller = (\n purchaseOrderId,\n listViewType,\n memberMessagingParticipation,\n isPaid\n) => async dispatch => {\n dispatch(searching(true));\n try {\n dispatch(error(false));\n if (isPaid) {\n await fetch(URLS.SELLER_MARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersMarkAsPaidBySeller(\n [purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n );\n showSuccessToast('siteWideNotifications_orderMarkedAsPaid');\n } else {\n await fetch(URLS.SELLER_UNMARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersUnmarkAsPaidBySeller(\n [purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n );\n }\n dispatch({\n type: actionTypes.PURCHASE_ORDER_PAID_BY_SELLER,\n payload: {\n isPaid,\n purchaseOrderId\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst deleteShipment = (\n shipmentId,\n purchaseOrderId,\n listViewType\n) => async dispatch => {\n dispatch(searching(true));\n try {\n await fetch(URLS.DELETE_SHIPMENT, {\n body: JSON.stringify({ shipmentId: shipmentId })\n });\n dispatch(error(false));\n dispatch({\n type: actionTypes.PURCHASE_ORDER_DELETE_SHIPMENT,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst updateShippingBooked = (\n purchaseOrderId,\n listViewType\n) => async dispatch => {\n dispatch(searching(true));\n try {\n await fetch(URLS.UNMARK_BOOKED, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(error(false));\n dispatch({\n type: actionTypes.PURCHASE_ORDERS_SHIPPING_BOOKED,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n dispatch(searching(false));\n } catch (error) {\n myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst feedbackLeftBySeller = (purchaseOrderId, submittables, listViewType) => {\n return {\n type: actionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER,\n payload: {\n submittables,\n purchaseOrderId,\n listViewType\n }\n };\n};\n\nconst feedbackLeftByBuyer = (purchaseOrderId, submittables, listViewType) => {\n return {\n type: actionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER,\n payload: {\n purchaseOrderId,\n submittables,\n listViewType\n }\n };\n};\n\nconst updatePurchaseOrderHiddenForSeller = (\n purchaseOrderId,\n isHidden,\n listViewType\n) => async dispatch => {\n try {\n dispatch(searching(true));\n\n const action = isHidden\n ? myTraderaItemsActions.sellerHideTransaction\n : myTraderaItemsActions.sellerUnhideTransaction;\n\n dispatch(action([purchaseOrderId], listViewType));\n dispatch({\n type: actionTypes.PURCHASE_ORDER_HIDDEN,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst updatePurchaseOrderHiddenForBuyer = (\n purchaseOrderId,\n transactionIds,\n isHidden,\n listViewType\n) => async dispatch => {\n try {\n dispatch(searching(true));\n\n const action = isHidden\n ? myTraderaItemsActions.buyerHideTransaction\n : myTraderaItemsActions.buyerUnhideTransaction;\n\n dispatch(action(transactionIds, listViewType));\n dispatch({\n type: actionTypes.PURCHASE_ORDER_HIDDEN,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nexport default {\n feedbackLeftBySeller,\n feedbackLeftByBuyer,\n updateShippingBooked,\n deleteShipment,\n requestCombinedShippingPrice,\n updatePurchaseOrderShipped,\n updatePurchaseOrderPaidBySeller,\n updatePurchaseOrderPaidByBuyer,\n resetPurchaseOrder,\n runPurchaseOrders,\n updatePurchaseOrderHiddenForSeller,\n updatePurchaseOrderHiddenForBuyer\n};\n","const modalState = {\n CLOSED: 'CLOSED',\n START: 'START',\n COMPLETED: 'COMPLETED',\n ERROR: 'ERROR',\n IN_PROGRESS: 'IN_PROGRESS'\n};\n\nexport default modalState;\n","import { createSlice } from '@reduxjs/toolkit';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n axiosConfigs,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\n\nimport {\n selectBox,\n isLoadingShippingProducts,\n selectIsBoxValid\n} from './selectors';\n\nconst defaultBox = {\n length: 15,\n height: 15,\n width: 15,\n weight: 1000\n};\n\nconst weightMap = {\n 1: 50,\n 2: 100,\n 3: 250,\n 4: 500,\n 5: 1000,\n 6: 2000,\n 7: 3000,\n 8: 5000,\n 9: 7000,\n 10: 9000,\n 11: 10000,\n 12: 12000,\n 13: 15000,\n 14: 20000,\n 15: 35000\n};\n\nconst defaultCountry = 'SE';\n\nconst shippingCalculatorSlice = createSlice({\n name: 'shippingCalculator',\n initialState: {\n box: { ...defaultBox },\n selectedToCountry: defaultCountry,\n selectedFromCountry: defaultCountry,\n availableFromCountryCodes: [],\n availableToCountryCodes: [],\n defaultBox,\n weightUnit: 'kg',\n weightSliderValue: 5,\n isLoadingShippingProducts: false,\n shippingProviders: [\n {\n providerName: 'SchenkerPrivpak',\n service: 'traceable'\n },\n {\n providerName: 'PostNordParcel',\n service: 'traceable'\n },\n {\n providerName: 'PostNordStamp',\n service: 'stamps'\n },\n {\n providerName: 'DHL',\n service: 'traceable'\n },\n {\n providerName: 'Bussgods',\n service: 'traceable'\n },\n {\n providerName: 'BringDenmark',\n service: 'traceable'\n }\n ],\n internationalProductsGroupedByFromThenToCountry: {\n SE: { SE: [] }\n },\n showError: false\n },\n reducers: {\n setSelectedToCountry: (state, action) => {\n state.selectedToCountry = action.payload.selectedToCountry;\n },\n setSelectedFromCountry: (state, action) => {\n state.selectedFromCountry = action.payload.selectedFromCountry;\n },\n setDefaultValuesOnBox: state => {\n state.box = { ...defaultBox };\n const value = weightMap[5];\n state.weightUnit = value % 1000 === 0 ? 'kg' : 'g';\n state.weightSliderValue = 5;\n },\n updateFilter: (state, action) => {\n const { filterName, value } = action.payload;\n state.box[filterName] = value;\n },\n setWeightFilter: (state, action) => {\n const value = weightMap[action.payload.value];\n state.weightUnit = value % 1000 === 0 ? 'kg' : 'g';\n state.box.weight = value;\n state.weightSliderValue = action.payload.value;\n },\n setWeightUnit: (state, action) => {\n state.weightUnit = action.payload.weightUnit;\n },\n beginFetchingShippingProducts: state => {\n state.isLoadingShippingProducts = true;\n },\n setShowError: state => {\n state.showError = true;\n },\n setShippingProducts: (state, action) => {\n const { internationalShippingCalculatorProducts } = action.payload;\n\n const internationalProductsGroupedByFromThenToCountry = internationalShippingCalculatorProducts.reduce(\n (prev, product) => {\n const {\n fromCountryCodeIso2: from,\n toCountryCodeIso2: to\n } = product;\n prev[from] = prev[from] || {};\n prev[from][to] = prev[from][to] || [];\n prev[from][to].push(product);\n return prev;\n },\n {}\n );\n\n const availableToCountryCodes = [\n ...new Set(\n internationalShippingCalculatorProducts.map(\n ({ toCountryCodeIso2 }) => toCountryCodeIso2\n )\n )\n ];\n\n const availableFromCountryCodes = [\n ...new Set(\n internationalShippingCalculatorProducts.map(\n ({ fromCountryCodeIso2 }) => fromCountryCodeIso2\n )\n )\n ];\n\n state.availableFromCountryCodes = availableFromCountryCodes;\n state.availableToCountryCodes = availableToCountryCodes;\n state.showError = false;\n state.internationalProductsGroupedByFromThenToCountry = internationalProductsGroupedByFromThenToCountry;\n state.isLoadingShippingProducts = false;\n }\n }\n});\n\nexport const setDefaultValues = () => dispatch => {\n dispatch(setDefaultValuesOnBox());\n dispatch(fetchShippingProducts());\n dispatch(setSelectedToCountry({ selectedToCountry: defaultCountry }));\n dispatch(setSelectedFromCountry({ selectedFromCountry: defaultCountry }));\n};\n\nexport const fetchShippingProducts = () => async (dispatch, getState) => {\n const { length, height, width, weight } = selectBox(getState());\n\n if (isLoadingShippingProducts(getState())) {\n return;\n }\n\n if (!selectIsBoxValid(getState())) {\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts: []\n })\n );\n return;\n }\n dispatch(beginFetchingShippingProducts());\n\n try {\n const response = await axiosWithTokenRefresh()\n .get(ENDPOINTS.INTERNATIONAL_SHIPPING_CALCULATOR, {\n params: {\n lengthInMillimeters: length * 10,\n heightInMillimeters: height * 10,\n widthInMillimeters: width * 10,\n weightInGrams: weight\n },\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(handleError());\n\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts:\n response.data.internationalShippingCalculatorProducts\n })\n );\n } catch (e) {\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts: []\n })\n );\n dispatch(setShowError());\n }\n};\n\nexport const {\n updateFilter,\n setWeightUnit,\n beginFetchingShippingProducts,\n setShippingProducts,\n setDefaultValuesOnBox,\n setSelectedToCountry,\n setSelectedFromCountry,\n setWeightFilter,\n setShowError\n} = shippingCalculatorSlice.actions;\nexport default shippingCalculatorSlice.reducer;\n","import BPOINT from '@tradera/blueprint/theme/scss/export/breakpoints.module.scss';\n\n// Explicit list of breakpoints for code completion\nconst BREAKPOINTS = {\n XS: 'XS',\n SM: 'SM',\n MD: 'MD',\n LG: 'LG',\n XL: 'XL'\n};\n\n/**\n * @type {Object.}\n */\nconst BREAKPOINT_SIZES = {};\nObject.entries(BPOINT)\n .filter(([bp]) => BREAKPOINTS[bp])\n .map(([name, size], index, entries) => {\n const min = parseInt(size, 10);\n // Look ahead to next breakpoint entry and get its size minus one as current breakpoint's max size\n const max =\n index + 1 in entries\n ? parseInt(entries[index + 1][1], 10) - 1\n : 99999;\n return {\n min,\n max,\n name\n };\n })\n .forEach(breakpoint => {\n BREAKPOINT_SIZES[breakpoint.name] = breakpoint;\n });\n\nexport { BREAKPOINTS, BREAKPOINT_SIZES };\n","import { createSlice } from '@reduxjs/toolkit';\nimport getInitialState, {\n MODAL_STATUS\n} from 'tradera-state/views/checkout/initial-state';\n\nconst checkoutSlice = createSlice({\n name: 'checkout',\n initialState: getInitialState(),\n reducers: {\n receiveCheckout: (state, { payload }) => {\n const {\n buyerMember,\n purchaseOrder,\n sellerMember,\n shippingInfo,\n combinedShippingInfo,\n ongoingPaymentAttempt,\n shippingFeeRule\n } = payload;\n state.buyerMember = { ...buyerMember };\n state.sellerMember = { ...sellerMember };\n state.items = purchaseOrder.items;\n state.isFetching = false;\n state.hasError = false;\n state.purchaseOrderId = purchaseOrder.purchaseOrderId;\n state.orderNumber = purchaseOrder.orderNumber;\n state.isPaid = purchaseOrder.isPaid;\n state.isMarkedAsPaidByBuyer = purchaseOrder.isMarkedAsPaidByBuyer;\n state.ongoingPaymentAttempt = ongoingPaymentAttempt;\n state.shippingInfo.shippingOptions = shippingInfo.shippingOptions;\n state.shippingInfo.shippingPriceRange =\n shippingInfo.shippingPriceRange;\n state.shippingInfo.shippingDiscount = shippingInfo.shippingDiscount;\n state.shippingInfo.selectedCollectionPoint =\n shippingInfo.collectionPointId !== undefined\n ? { id: shippingInfo.collectionPointId }\n : undefined;\n state.combinedShippingInfo = combinedShippingInfo;\n state.shippingFeeRule = shippingFeeRule;\n state.purchaseOrder = {\n isOpen: purchaseOrder.isOpen,\n created: purchaseOrder.created\n };\n state.shippingOptionsLoading = false;\n },\n setShippingOptionsLoading: (state, { payload }) => {\n state.shippingOptionsLoading = payload.isLoading;\n },\n receivePaymentOptions: (state, { payload }) => {\n const { paymentOptions } = payload;\n state.payment.paymentOptions = paymentOptions;\n state.payment.isFetching = false;\n },\n receiveCollectionPoints: (state, { payload }) => {\n state.shippingInfo.collectionPoints = payload;\n },\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n state.hasError = false;\n },\n openModal: (state, { payload }) => {\n const { open, status, paymentAttemptId } = payload;\n state.modal = {\n open,\n status,\n paymentAttemptId\n };\n },\n cancelPayment: state => {\n state.checkoutSummary.hasError = false;\n state.checkoutSummary.isFetching = false;\n state.showDisableOverlay = false;\n },\n closeModal: state => {\n state.modal = {\n open: '',\n status: MODAL_STATUS.START\n };\n },\n setHasError: (state, { payload }) => {\n state.hasError = payload;\n state.isFetching = false;\n state.showDisableOverlay = false;\n },\n setPaymentFetching: (state, { payload }) => {\n state.payment.isFetching = payload;\n state.payment.hasError = false;\n },\n setPaymentHasError: (state, { payload }) => {\n state.payment.hasError = payload;\n state.payment.isFetching = false;\n state.showDisableOverlay = false;\n },\n setPaymentMethodData: (state, { payload }) => {\n state.payment.paymentMethodData = payload;\n },\n setCheckoutSummaryFetching: (state, { payload }) => {\n state.checkoutSummary.isFetching = payload;\n state.checkoutSummary.hasError = false;\n },\n setCheckoutSummaryHasError: (state, { payload }) => {\n state.checkoutSummary.hasError = payload;\n state.checkoutSummary.isFetching = false;\n state.showDisableOverlay = false;\n state.modal.status = MODAL_STATUS.ERROR;\n },\n setSelectedPayment: (state, { payload }) => {\n state.payment.selectedPayment = payload;\n state.payment.paymentMethodData = null;\n state.checkoutSummary.hasError = false;\n },\n setSelectedShipping: (state, { payload }) => {\n state.selectedShipping = payload;\n },\n setShowDisableOverlay: (state, { payload }) => {\n state.showDisableOverlay = payload;\n },\n setOngoingPaymentAttempt: (state, { payload }) => {\n state.ongoingPaymentAttempt = payload;\n },\n setCombinedShippingInfo: (state, { payload }) => {\n state.combinedShippingInfo = {\n ...state.combinedShippingInfo,\n ...payload\n };\n },\n setBuyerMember: (state, { payload }) => {\n state.buyerMember = { ...state.buyerMember, ...payload };\n },\n setBuyerMemberAddress: (state, { payload }) => {\n state.buyerMember.address = {\n ...state.buyerMember.address,\n ...payload\n };\n },\n setCollectionPoint: (state, { payload }) => {\n state.shippingInfo.selectedCollectionPoint = payload;\n },\n setShippingInfoFetching: (state, { payload }) => {\n state.shippingInfo.isFetching = payload;\n },\n setCollectionPointSaving: (state, { payload }) => {\n state.shippingInfo.savingCollectionPoint = payload;\n }\n }\n});\n\nexport const {\n openModal,\n closeModal,\n cancelPayment,\n receiveCheckout,\n setShippingOptionsLoading,\n receivePaymentOptions,\n receiveCollectionPoints,\n setFetching,\n setHasError,\n setCheckoutSummaryFetching,\n setCheckoutSummaryHasError,\n setPaymentFetching,\n setPaymentHasError,\n setPaymentMethodData,\n setSelectedPayment,\n setSelectedShipping,\n setShowDisableOverlay,\n setOngoingPaymentAttempt,\n setCombinedShippingInfo,\n setBuyerMember,\n setBuyerMemberAddress,\n setCollectionPoint,\n setShippingInfoFetching,\n setCollectionPointSaving\n} = checkoutSlice.actions;\n\nexport default checkoutSlice.reducer;\n","export const PAGE_NAMES = {\n Overview: 'MyTradera',\n BuyerActiveItems: 'MyTradera_ActiveBids',\n BuyerItemsLost: 'MyTradera_LostBids',\n MyTraderaLeaveFeedback: 'MyTradera_LeaveFeedback',\n SellerActive: 'MyTradera_ActiveItems',\n SellerSold: 'MyTradera_SoldItems',\n SellerUnsold: 'MyTradera_UnsoldItems',\n BuyerPurchases: 'MyTradera_Purchases',\n Settings: 'MyTradera_Settings',\n SettingsAccount: 'MyTradera_SettingsAccount',\n SettingsEmail: 'MyTradera_SettingsEmail',\n SettingsNotifications: 'MyTradera_SettingsNotifications',\n SettingsSeller: 'MyTradera_SettingsSeller',\n SettingsSecurity: 'MyTradera_SettingsSecurity',\n Payouts: 'MyTradera_Payouts',\n Invoices: 'MyTradera_Invoices'\n};\n","import GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { BID_VALIDATION_RESULTS } from '../api/vip-api-constants';\n\nexport const CATEGORIES = {\n VIEW_ITEM: 'View item',\n BIDDING: 'Bidding',\n CART: 'Cart',\n CHECKOUT_BIN: 'Checkout bin'\n};\n\nconst trackAction = (category, action, label) => {\n GtmService.trackAction(category, action, label);\n};\n\nexport const trackBiddingConfirmBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Bid button', 'Bekräfta bud');\n\nexport const trackBiddingShowEnterBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Show', 'EnterBid');\n\nexport const trackBiddingShowConfirmBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Show', 'ConfirmBid');\n\nexport const trackBiddingShowChangeMaxBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Show', 'ChangeMaxBid');\n\nexport const trackBiddingQuickBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Bid button', 'Lägg snabbud');\n\nexport const trackBiddingNewMaxBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Bid button', 'Lägg maxbud');\n\nexport const trackNewBid = () =>\n trackAction(CATEGORIES.VIEW_ITEM, 'Bid button', 'Lägg bud');\n\nexport const trackNewMaxBid = () =>\n trackAction(CATEGORIES.VIEW_ITEM, 'Bid button', 'Ändra maxbud');\n\nexport const trackOpenCheckoutBin = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Show', 'Open BIN modal');\n\nexport const trackConfirmBin = () =>\n trackAction(\n CATEGORIES.CHECKOUT_BIN,\n 'Bin navigation',\n 'Confirm BIN purchase'\n );\n\nexport const trackPayBin = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Bin navigation', 'Pay BIN');\n\nexport const trackKeepShopping = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Bin navigation', 'Keep shopping');\n\nexport const trackBinError = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Bin navigation', 'Error');\n\nexport const trackBidPlaced = (\n itemId,\n validationCode,\n isMaxBid,\n potentialBidChange,\n bidId,\n transactionTotal,\n weightedBidValue\n) => {\n switch (validationCode) {\n case BID_VALIDATION_RESULTS.LEADING_BIDDER:\n case BID_VALIDATION_RESULTS.HIGHER_BIDDER_EXISTS:\n // LeadingBidder.cshtml and HigherBidderExists renders _PlaceBidDataLayerTracking.cshtml\n // which has this tracking.\n GtmService.push({\n event: 'auctionEvent',\n transactionTotal: `${transactionTotal}`\n });\n GtmService.trackAction(\n CATEGORIES.BIDDING,\n 'PlacedBidPotential',\n isMaxBid ? 'MaxBid' : 'MinBid',\n `${potentialBidChange}`,\n true\n );\n GtmService.push({\n event: 'bidPlacedEvent',\n itemId: `${itemId}`,\n placedBidId: `${bidId}`,\n bidValue: `${transactionTotal}`,\n weightedBidValue: `${weightedBidValue}`\n });\n break;\n }\n GtmService.trackAction(\n CATEGORIES.BIDDING,\n 'Show',\n validationCode,\n '0',\n true\n );\n};\n\nexport const trackWishlist = (itemId, isAdding) => {\n const action = isAdding ? 'Added to wish list' : 'Removed from wish list';\n const label = isAdding\n ? `Added item: ${itemId}`\n : `Removed item: ${itemId}`;\n GtmService.trackAction('View item', action, label);\n};\n\nexport const trackAddToCart = (sellerMemberAlias, fixedPrice, redirectUrl) =>\n GtmService.trackLinkClickAndGotoUrl(\n CATEGORIES.CART,\n 'Add to cart',\n `Added ${sellerMemberAlias}`,\n redirectUrl,\n fixedPrice\n );\n\nconst defaultClientId = '2ab8b9da-aeb2-4790-86cf-bd1cd3c51453';\nexport const getGaTrackingData = () => {\n /* global gaData */\n return {\n clientId: window?.ga?.getAll?.()[0]?.get('clientId') || defaultClientId,\n trackingIds:\n typeof gaData !== 'undefined' ? [Object.keys(gaData)[1]] : []\n };\n};\n","import initData from 'init-data';\n\nexport default {\n BUYER_ACTIVE_ITEMS_HIDE: initData.pageSpecificData?.BUYER_ACTIVE_ITEMS_HIDE,\n BUYER_ACTIVE_ITEMS_SHOW: initData.pageSpecificData?.BUYER_ACTIVE_ITEMS_SHOW,\n ACTIVE_ITEMS_RESTART_SUMMARY:\n initData.pageSpecificData?.ACTIVE_ITEMS_RESTART_SUMMARY,\n MARK_PAID: initData.pageSpecificData?.MARK_PAID,\n SELLER_MARK_PAID: initData.pageSpecificData?.SELLER_MARK_PAID,\n SELLER_UNMARK_PAID: initData.pageSpecificData?.SELLER_UNMARK_PAID,\n MARK_SHIPPED: initData.pageSpecificData?.MARK_SHIPPED,\n UNMARK_SHIPPED: initData.pageSpecificData?.UNMARK_SHIPPED,\n DELETE_SHIPMENT: initData.pageSpecificData?.DELETE_SHIPMENT,\n SELLER_HIDE: initData.pageSpecificData?.SELLER_HIDE,\n SELLER_SHOW: initData.pageSpecificData?.SELLER_SHOW,\n UNSOLDHIDE: initData.pageSpecificData?.UNSOLDHIDE,\n UNSOLDSHOW: initData.pageSpecificData?.UNSOLDSHOW,\n UNMARK_BOOKED: initData.pageSpecificData?.UNMARK_BOOKED,\n ACTIVE_END_ITEMS: initData.pageSpecificData?.ACTIVE_END_ITEMS,\n UNSOLD_RESTART_ITEMS: initData.pageSpecificData?.UNSOLD_RESTART_ITEMS,\n BUYER_MARK_PAID: initData.pageSpecificData?.BUYER_MARK_PAID,\n BUYER_UNMARK_PAID: initData.pageSpecificData?.BUYER_UNMARK_PAID,\n BUYER_HIDE: initData.pageSpecificData?.BUYER_HIDE,\n BUYER_SHOW: initData.pageSpecificData?.BUYER_SHOW,\n REQUEST_COMBINED_SHIPPING_PRICE:\n '/api/webapi/shopping/ordercheckout/requestcombinedshippingprice'\n};\n","export const selectBox = state => state.views.shippingCalculator.box;\n\nexport const selectFilterValue = filterName => state =>\n state.views.shippingCalculator.box[filterName];\n\nexport const selectIsBoxValid = state =>\n state.views.shippingCalculator.box.height &&\n state.views.shippingCalculator.box.length &&\n state.views.shippingCalculator.box.width &&\n state.views.shippingCalculator.box.weight;\n\nexport const selectWeightUnit = state =>\n state.views.shippingCalculator.weightUnit;\n\nexport const selectWeightSliderValue = state =>\n state.views.shippingCalculator.weightSliderValue;\n\nexport const selectNormalizedWeight = state =>\n state.views.shippingCalculator.box.weight % 1000 === 0\n ? state.views.shippingCalculator.box.weight / 1000\n : state.views.shippingCalculator.box.weight;\n\nexport const selectWeightString = state =>\n `${selectNormalizedWeight(state)} ${selectWeightUnit(state)}`;\n\nexport const isLoadingShippingProducts = state =>\n state.views.shippingCalculator.isLoadingShippingProducts;\n\nexport const selectShippingProviders = state =>\n state.views.shippingCalculator.shippingProviders.map(provider => ({\n ...provider,\n domesticProducts:\n selectShippingProducts(state)[\n state.views.shippingCalculator.selectedFromCountry\n ]?.filter(\n ({ shippingProvider }) =>\n shippingProvider === provider.providerName\n ) || []\n }));\n\nexport const selectAvailableShippingProviders = state => {\n const shippingProviders = state.views.shippingCalculator.shippingProviders;\n const shippingProducts = selectShippingProducts(state);\n\n const includedProviders = [];\n\n shippingProviders.forEach(provider => {\n Object.keys(shippingProducts).forEach(key => {\n if (\n shippingProducts[key] &&\n shippingProducts[key].length > 0 &&\n shippingProducts[key].some(\n x =>\n x.shippingProvider === provider.providerName &&\n !includedProviders.includes(x.shippingProvider)\n )\n ) {\n includedProviders.push(provider.providerName);\n }\n });\n });\n\n return shippingProviders.filter(({ providerName }) =>\n includedProviders.find(p => p === providerName)\n );\n};\n\nexport const selectShippingProducts = state => {\n const {\n internationalProductsGroupedByFromThenToCountry,\n selectedFromCountry\n } = state.views.shippingCalculator;\n return (\n internationalProductsGroupedByFromThenToCountry[selectedFromCountry] ||\n {}\n );\n};\n\nexport const selectIsDifferentFromDefaultBox = state =>\n !(\n state.views.shippingCalculator.box.length ===\n state.views.shippingCalculator.defaultBox.length &&\n state.views.shippingCalculator.box.width ===\n state.views.shippingCalculator.defaultBox.width &&\n state.views.shippingCalculator.box.height ===\n state.views.shippingCalculator.defaultBox.height &&\n state.views.shippingCalculator.box.weight ===\n state.views.shippingCalculator.defaultBox.weight\n );\n\nexport const selectSelectedCountries = state => ({\n selectedFromCountry: state.views.shippingCalculator.selectedFromCountry,\n selectedToCountry: state.views.shippingCalculator.selectedToCountry\n});\n\nexport const selectAvailableCountryCodes = state => ({\n availableFromCountryCodes:\n state.views.shippingCalculator.availableFromCountryCodes,\n availableToCountryCodes:\n state.views.shippingCalculator.availableToCountryCodes\n});\n\nexport const selectShowError = state =>\n state.views.shippingCalculator.showError;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useCurrentLanguage } from 'tradera-lang/translate';\nimport { formatPrice } from 'tradera-utils/format';\nimport { useSelector } from 'react-redux';\nimport { selectPreferredCurrency } from 'tradera-state/multi-currency/selectors';\n\nconst MultiCurrency = ({\n amountInSek,\n className,\n tagName: TagName,\n style,\n prefix,\n allowNegative\n}) => {\n const { language } = useCurrentLanguage();\n const preferredCurrency = useSelector(selectPreferredCurrency);\n\n const isVisible =\n preferredCurrency &&\n preferredCurrency.code !== 'SEK' &&\n amountInSek &&\n (amountInSek * preferredCurrency.rate > 0 || allowNegative);\n\n if (!isVisible) {\n return null;\n }\n\n const formattedPrice = formatPrice(\n amountInSek * preferredCurrency.rate,\n language,\n {\n currency: preferredCurrency.code,\n maximumFractionDigits: preferredCurrency.decimals\n }\n );\n return (\n \n {prefix || <>≈} {formattedPrice}\n \n );\n};\n\nMultiCurrency.propTypes = {\n amountInSek: PropTypes.number.isRequired,\n className: PropTypes.string,\n tagName: PropTypes.string,\n style: PropTypes.string,\n prefix: PropTypes.string,\n allowNegative: PropTypes.bool\n};\n\nMultiCurrency.defaultProps = {\n tagName: 'span'\n};\n\nexport default MultiCurrency;\n","import initData from 'init-data';\n\nconst isEnabled = key => {\n return (\n initData && initData.featureSwitches && initData.featureSwitches[key]\n );\n};\n\nexport const errors = {\n ELASTIC_MYTRADERA:\n 'Just nu har vi driftstörningar pÃ¥ delar av Mitt Tradera. Vi arbetar pÃ¥ att lösa problemet.'\n};\n\n// ATTENTION!\n// Do not any more dependencies to initData.featureSwitches!\n// Feature switches MUST be read from Redux.\n// The functions below must only be used in MyTradera and the only\n// reason they are still here is because it requires large changes\n// to MyTradera to get rid of them.\nexport default {\n isBuyerOrderInformationEnabled: isEnabled('buyer-order-information'),\n isDisputesEntranceEnabled: isEnabled('disputes-entrance'),\n isLeaveFeedbackReactEnabled: isEnabled('leave-feedback-react'),\n isMyTraderaElasticEnabled: isEnabled('mytradera-elasticsearch'),\n isMessagingEnabled: isEnabled('messaging'),\n isMessagingBuyerButtonsEnabled: isEnabled(\n 'messaging-contact-buyer-buttons'\n ),\n isMessagingSellerButtonsEnabled: isEnabled(\n 'messaging-contact-seller-buttons'\n ),\n isInrPurchaseOrderEnabled: isEnabled('inr-purchaseorder'),\n isUpiPurchaseOrderEnabled: isEnabled('upi-purchaseorder'),\n isPennybridgeCharitiesEnabled: isEnabled('pennybridge-charities'),\n isSyiShippingAlertPriceIncreaseEnabled: isEnabled(\n 'syi-shipping-alert-price-increase'\n ),\n isShippingCheckoutSwishHandelPaymentReactEnabled: isEnabled(\n 'shipping-checkout-swish-handel-payment-react'\n ),\n isShippingCheckoutPaymentInvoiceReactEnabled: isEnabled(\n 'shipping-checkout-payment-invoice-react'\n )\n};\n","import 'react';\nimport { itemHasBidsButReservePriceNotReached } from './item-labels';\nimport { columns } from '../../constants/column-definitions';\nimport { PAGE_NAMES } from '../../constants/page';\nimport { formatPrice } from '../../helpers/formats';\nimport {\n getBidCount,\n getMaxBid,\n getShippingCost\n} from '../../helpers/item-helper';\nimport { infoItemComponents } from 'tradera-apps/my-tradera/app/components/listing/item/info-item-components';\n\nconst labels = {\n [columns.CurrentPrice]: 'Pris',\n [columns.TransactionDate]: 'Avslutad',\n [columns.EndDate]: 'Sluttid',\n [columns.ShippingCost]: 'Frakt',\n [columns.Bids]: '#Bud',\n [columns.ItemId]: 'Objektnr',\n [columns.OpeningBid]: 'Utrop',\n [columns.ReservePrice]: 'Res.pris',\n [columns.BuyItNow]: 'Köp nu',\n [columns.OwnReference]: 'Ref',\n [columns.MaxBid]: 'Maxbud',\n [columns.TimeLeft]: 'Tid kvar'\n};\n\nconst columnCssClassCore = {\n [columns.CurrentPrice]: 'myt-list3__table-column-current-price', // show tablet\n [columns.TransactionDate]: 'myt-list3__table-column-end-date',\n [columns.EndDate]: 'myt-list3__table-column-end-date',\n [columns.ShippingCost]: 'myt-list3__table-column-shipping-cost', // show tablet\n [columns.Bids]: 'myt-list3__table-column-current-bids', // show tablet\n [columns.ItemId]: 'myt-list3__table-column-item-id',\n [columns.OpeningBid]: 'myt-list3__table-column-opening-bid',\n [columns.ReservePrice]: 'myt-list3__table-column-reserve-price',\n [columns.BuyItNow]: 'myt-list3__table-column-buy-it-now',\n [columns.OwnReference]: 'myt-list3__table-column-own-reference',\n [columns.MaxBid]: 'myt-list3__table-column-maxbid',\n [columns.TimeLeft]: 'myt-list3__table-column-timeleft'\n};\n\nconst getCoreCssClass = column => columnCssClassCore[column];\nconst getHeading = (label, cssClass, columnKey) => ({\n term: label,\n cssClass: cssClass,\n columnKey\n});\n\nexport const getTranslatedColumnKey = (t, columnKey) => {\n switch (columnKey) {\n case columns.CurrentPrice:\n return t('myt_columns_price');\n case columns.TransactionDate:\n return t('myt_columns_transactionDate');\n case columns.EndDate:\n return t('myt_columns_endTime');\n case columns.ShippingCost:\n return t('myt_columns_shipping');\n case columns.Bids:\n return `#${t('myt_columns_bids')}`;\n case columns.ItemId:\n return t('myt_columns_objectNo');\n case columns.OpeningBid:\n return t('myt_columns_startingPrice');\n case columns.ReservePrice:\n return t('myt_columns_reservePrice');\n case columns.BuyItNow:\n return t('myt_columns_buyNow');\n case columns.OwnReference:\n return t('myt_columns_ownReference');\n case columns.MaxBid:\n return t('myt_columns_maxBid');\n case columns.TimeLeft:\n return t('myt_columns_timeLeft');\n default:\n return '';\n }\n};\n\nexport const getHeadings = (t, columnDefinitions) => {\n return columnDefinitions\n ? columnDefinitions.map(columnKey =>\n getHeading(\n getTranslatedColumnKey(t, columnKey),\n columnCssClassCore[columnKey]\n )\n )\n : [];\n};\n\nexport const getUserHeading = (t, pageName) => {\n const highestBidder = t('myt_columns_highestBidder');\n\n switch (pageName) {\n case PAGE_NAMES.BuyerActiveItems:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.SellerActive:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.SellerUnsold:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.BuyerPurchases:\n return getHeading(\n 'Mina Köp',\n 'myt-list3__table-column-counterpart'\n );\n default:\n return null;\n }\n};\n\n/**\n * @name GetColumns\n * @desc Builds the columns out for a single item;\n */\nexport const getColumns = (columnDefinitions, listViewType) => item => {\n const getColumn = (label, value, cssClass, title, columnKey) => ({\n term: label,\n definition: value,\n cssClass: cssClass,\n tagTitle: title,\n columnKey\n });\n\n const hasTransactionDate =\n !!item &&\n item.transaction &&\n item.transaction &&\n item.transaction.transactionDate;\n const price = item.transaction\n ? parseInt(item.transaction.price)\n : parseInt(item.currentPrice);\n\n const getCurrentPriceMeta = () =>\n itemHasBidsButReservePriceNotReached(item)\n ? columnCssClassCore[columns.CurrentPrice] + ' text-alert bold'\n : columnCssClassCore[columns.CurrentPrice];\n\n const getItemId = item.itemId;\n const itemType = item.listing.itemType;\n const hasHighestBidder =\n item && item.bidInformation && item.bidInformation.leadingBidder\n ? true\n : false;\n const shouldShowBids =\n itemType === 'Auction' ||\n (hasHighestBidder && itemType === 'AuctionBin') ||\n (hasHighestBidder &&\n item.transaction &&\n item.listing.purchaseType === 'Auction')\n ? true\n : false;\n const bidCount = getBidCount(item);\n const getTransactionDate = hasTransactionDate\n ? item.transaction.transactionDate.formatted\n : null;\n const getEndDate = item.listing.endDate.formatted;\n const getCurrentPrice = () => ({\n component: infoItemComponents.ITEM_PRICE,\n transaction: item.transaction,\n price: formatPrice(price)\n });\n const getTimeLeftAsString = item.listing.timeLeft\n ? item.listing.timeLeft.timeleft\n : null;\n\n const columnCssClass = {\n [columns.CurrentPrice]: getCurrentPriceMeta(),\n [columns.TransactionDate]:\n getCoreCssClass(columns.TransactionDate) +\n (hasTransactionDate && item.transaction.transactionDate.critical\n ? ' text-alert'\n : ''),\n [columns.EndDate]:\n getCoreCssClass(columns.EndDate) +\n (item.listing.endDate.critical ? ' text-alert' : ''),\n [columns.ShippingCost]: getCoreCssClass(columns.ShippingCost),\n [columns.Bids]: getCoreCssClass(columns.Bids),\n [columns.ItemId]: getCoreCssClass(columns.ItemId),\n [columns.OpeningBid]: getCoreCssClass(columns.OpeningBid),\n [columns.ReservePrice]: getCoreCssClass(columns.ReservePrice),\n [columns.BuyItNow]: getCoreCssClass(columns.BuyItNow),\n [columns.OwnReference]: getCoreCssClass(columns.OwnReference),\n [columns.Discount]: getCoreCssClass(columns.Discount) + ' text-alert',\n [columns.TimeLeft]: getCoreCssClass(columns.TimeLeft),\n [columns.MaxBid]: getCoreCssClass(columns.MaxBid)\n };\n\n const columnTitle = {\n [columns.CurrentPrice]: itemHasBidsButReservePriceNotReached(item)\n ? 'Reservationspris ej uppnÃ¥tt'\n : formatPrice(price),\n [columns.TransactionDate]: hasTransactionDate\n ? item.transaction.transactionDate.full\n : null,\n [columns.EndDate]:\n item &&\n item.listing &&\n item.listing.endDate &&\n item.listing.endDate.critical\n ? item.listing.timeLeft.timeleft\n : item.listing.endDate.full,\n [columns.ShippingCost]: '',\n [columns.Bids]: bidCount,\n [columns.ItemId]: '',\n [columns.OpeningBid]: '',\n [columns.ReservePrice]: '',\n [columns.BuyItNow]: '',\n [columns.OwnReference]: '',\n [columns.Discount]: '',\n [columns.TimeLeft]: getTimeLeftAsString\n };\n\n const getBids =\n shouldShowBids && bidCount\n ? {\n component: infoItemComponents.BIDS,\n itemId: getItemId,\n bidCount: bidCount\n }\n : '-';\n const getOpeningBid =\n item.listing.pricing.openingBid > 0\n ? formatPrice(item.listing.pricing.openingBid)\n : ' ';\n const getReservePrice =\n item.listing.pricing.reservePrice > 0\n ? formatPrice(item.listing.pricing.reservePrice)\n : '-';\n const getBuyItNow =\n item.listing.pricing.buyItNow > 0\n ? formatPrice(item.listing.pricing.buyItNow)\n : '-';\n const getOwnReference = item.listing.ownReference\n ? item.listing.ownReference\n : ' ';\n const callerMaxBid = getMaxBid(item) || '-';\n const getTimeLeft = {\n component: infoItemComponents.TIME_LEFT,\n timeLeft: item.listing.timeLeft\n };\n const shippingCost = getShippingCost(item, listViewType)();\n\n const definitions = {\n [columns.CurrentPrice]: getCurrentPrice(),\n [columns.TransactionDate]: getTransactionDate,\n [columns.EndDate]: getEndDate,\n [columns.ShippingCost]: shippingCost,\n [columns.Bids]: getBids,\n [columns.ItemId]: getItemId,\n [columns.OpeningBid]: getOpeningBid,\n [columns.ReservePrice]: getReservePrice,\n [columns.BuyItNow]: getBuyItNow,\n [columns.OwnReference]: getOwnReference,\n [columns.MaxBid]: callerMaxBid,\n [columns.TimeLeft]: getTimeLeft\n };\n\n return columnDefinitions.map(columnKey =>\n getColumn(\n columnKey === 'CurrentPrice' ? undefined : labels[columnKey],\n definitions[columnKey],\n columnCssClass[columnKey],\n columnTitle[columnKey],\n columnKey\n )\n );\n};\n\nexport default {\n getColumns,\n getHeadings\n};\n","export default {\n INITIALIZE: 'TRADERA_SHOP/INITIALIZE',\n SET_IS_LOADING: 'TRADERA_SHOP/SET_IS_LOADING',\n SET_ITEM_DETAILS: 'TRADERA_SHOP/SET_ITEM_DETAILS',\n SET_PRODUCT: 'TRADERA_SHOP/SET_PRODUCT'\n};\n","import { localStore } from 'utils/storage';\n\n// Remember to add prefix+key to STORAGE_KEYS in config/storage!\nconst CACHE_PREFIX = 'cache.';\nconst CACHE_KEYS = {\n MESSAGING_BADGES: 'messagingBadges',\n RECENTLY_VIEWED_ITEMS: 'recentlyViewedItems',\n SYSTEM_MESSAGES: 'systemMessages'\n};\nconst DEFAULT_TTL = 10 * 60 * 1000;\n\nclass CacheHandler {\n constructor(store, keyPrefix) {\n this.store = store;\n this.keyPrefix = keyPrefix;\n }\n\n /**\n * Read item from the cache, return null if expired or non existent\n *\n * @param {string} key\n * @returns {null|*}\n */\n read(key) {\n const cached = this.store.getItem(this.keyPrefix + key);\n if (cached) {\n if (cached.expires > Date.now()) {\n return cached.data;\n } else {\n this.store.removeItem(this.keyPrefix + key);\n }\n }\n return null;\n }\n\n /**\n * Write an item to the cache with expiry time\n *\n * @param {string} key\n * @param data\n * @param {int} [ttl]\n * @returns {CacheHandler}\n */\n write(key, data, ttl = DEFAULT_TTL) {\n this.store.setItem(this.keyPrefix + key, {\n expires: Date.now() + ttl,\n data\n });\n return this;\n }\n\n /**\n * Remove item regardless of expiry time\n *\n * @param {string} key\n * @returns {CacheHandler}\n */\n remove(key) {\n this.store.removeItem(this.keyPrefix + key);\n return this;\n }\n\n /**\n * Remove all items regardless of expiry time\n *\n * @returns {CacheHandler}\n */\n removeAll() {\n this.store.clearByPrefix(this.keyPrefix);\n return this;\n }\n\n /**\n * Remove item if expired, keep otherwise\n *\n * @param {string} key\n * @returns {CacheHandler}\n */\n expire(key) {\n const cached = this.store.getItem(this.keyPrefix + key);\n if (cached) {\n if (cached.expires <= Date.now()) {\n this.store.removeItem(this.keyPrefix + key);\n }\n }\n return null;\n }\n\n /**\n * Remove expired items\n *\n * @returns {CacheHandler}\n */\n expireAll() {\n const caches = this.store.getItemsByPrefix(this.keyPrefix);\n const now = Date.now();\n for (let [key, cached] of Object.entries(caches)) {\n if (cached.expires <= now) {\n this.store.removeItem(key);\n }\n }\n return this;\n }\n}\n\n// Standard cache with GDPR-compliant localStore and standard cache prefix\nconst cache = new CacheHandler(localStore, CACHE_PREFIX);\n\nexport { CACHE_KEYS, CacheHandler, cache };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { formatNumberWithSeparators } from '@tradera/blueprint/utils';\nimport MultiCurrency from 'tradera-components/multi-currency/multi-currency';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { useFormatUtcDateInSwedishTimeZone } from 'tradera-hooks/use-format-utc-date-in-swedish-timezone';\nimport TimeLeft from '../helpers/time-left';\nimport { ITEM_STATES } from 'tradera-state/views/view-item/constants';\nimport { AnimateOnValueChange } from './animate-on-value-change';\n\nexport const BidDetails = ({\n bidCount,\n endDate,\n fixedPrice,\n hasEnded,\n isEnding,\n itemState,\n leadingBidAmount,\n onShowBids,\n openingBid,\n timeLeftText,\n isTimeLeftBelowWarningLimit,\n winningBidAmount\n}) => {\n const { t } = useTranslator();\n const formatUtcDateInSwedishTimeZone = useFormatUtcDateInSwedishTimeZone();\n\n const hasBids = bidCount > 0;\n const amountDetails = getAmountDetails(\n t,\n itemState,\n fixedPrice,\n leadingBidAmount,\n openingBid,\n hasBids,\n winningBidAmount\n );\n\n const amountTitle = (\n

\n {amountDetails.title}\n

\n );\n const amountValue = (\n <>\n \n \n {formatNumberWithSeparators(amountDetails.amount)}{' '}\n {t('vip_currency')}\n \n

\n \n \n );\n const timeTitle =\n isEnding || hasEnded ? (\n

\n {t('vip_hasEndedTime')}{' '}\n {formatUtcDateInSwedishTimeZone(endDate)}\n

\n ) : (\n

\n {t('vip_willEndTime')} {formatUtcDateInSwedishTimeZone(endDate)}\n

\n );\n const timeValue =\n isEnding || hasEnded ? (\n \n {hasEnded ? t('vip_ended') : t('vip_ending')}\n

\n ) : (\n

\n \n

\n );\n const bidTitle = (\n

\n {t('vip_bid')}{' '}\n \n (\n {\n e.preventDefault();\n onShowBids();\n }}>\n {t('vip_show')}\n \n )\n \n

\n );\n const bidValue = (\n

\n {bidCount} {t('vip_amount')}\n

\n );\n\n const showBidCount =\n itemState !== ITEM_STATES.ENDED_AUCTION_BIN_BOUGHT_AS_BIN;\n\n return (\n
\n
\n
{amountTitle}
\n
{amountValue}
\n
\n \n
{timeTitle}
\n
{timeValue}
\n \n {showBidCount && (\n
\n
{bidTitle}
\n
{bidValue}
\n
\n )}\n
\n );\n};\n\nBidDetails.propTypes = {\n bidCount: PropTypes.number,\n endDate: PropTypes.string.isRequired,\n hasEnded: PropTypes.bool.isRequired,\n itemState: PropTypes.string.isRequired,\n leadingBidAmount: PropTypes.number,\n onShowBids: PropTypes.func,\n openingBid: PropTypes.number,\n winningBidAmount: PropTypes.number\n};\n\nBidDetails.defaultProps = {\n className: '',\n hasLeadingBid: false,\n hasLostLeadingBid: false\n};\n\nexport const getAmountDetails = (\n t,\n itemState,\n fixedPrice,\n leadingBid,\n openingBid,\n hasBids,\n winningBidAmount\n) => {\n if (itemState === ITEM_STATES.ENDED_AUCTION_BIN_BOUGHT_AS_BIN) {\n return {\n title: t('vip_soldFor'),\n amount: fixedPrice\n };\n }\n\n if (itemState === ITEM_STATES.ENDED_AUCTION_WITH_WINNING_BID) {\n return {\n title: t('vip_finalPrice'),\n amount: winningBidAmount\n };\n }\n\n if (hasBids) {\n return {\n title: t('vip_leadingBid'),\n amount: leadingBid\n };\n }\n return {\n title: t('vip_openingBid'),\n amount: openingBid\n };\n};\n","export default {\n ADD_ITEM_ON_DISPLAY: 'SEARCH/ADD_ITEM_ON_DISPLAY',\n ADD_SEARCH_RESULTS: 'SEARCH/ADD_SEARCH_RESULTS',\n CHANGE_SORT_VALUE: 'SEARCH/CHANGE_SORT_VALUE',\n HANDLE_SEARCH_RESULTS_ERROR: 'SEARCH/HANDLE_SEARCH_RESULTS_ERROR',\n INITIALIZE: 'SEARCH/INITIALIZE',\n LOCATION_CHANGE: 'SEARCH/ROUTER_DISPATCHED_ROUTE_CHANGE',\n RECEIVE_SEARCH_RESULTS: 'SEARCH/RECEIVE_SEARCH_RESULTS',\n REMOVE_ITEM_ON_DISPLAY: 'SEARCH/REMOVE_ITEM_ON_DISPLAY',\n REQUEST_SEARCH_RESULTS: 'SEARCH/REQUEST_SEARCH_RESULTS',\n SET_ACTIVE_CATEGORY: 'SEARCH/SET_ACTIVE_CATEGORY',\n SET_ACTIVE_FILTER: 'SEARCH/SET_ACTIVE_FILTER',\n SET_CATEGORY_PATH: 'SEARCH/SET_CATEGORY_PATH',\n SET_CURRENT_CATEGORY_ID: 'SEARCH/SET_CURRENT_CATEGORY_ID',\n SET_SINGLE_FILTER: 'SEARCH/SET_SINGLE_FILTER_VALUE',\n STOP_REQUEST_SEARCH_RESULTS: 'SEARCH/STOP_REQUEST_SEARCH_RESULTS',\n RESET: 'SEARCH/RESET'\n};\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n axiosConfigs,\n utilizeCancelToken,\n finalizeResponse,\n handleError,\n API_ERRORS\n} from 'tradera-utils/api';\nimport { toLocalizedUrl } from 'tradera-utils/url';\nimport logger from 'packages/logger';\n\nexport const fetchDescription = (\n itemId,\n languageCodeIso2,\n fromLanguageCodeIso2\n) => {\n const { cancel, cancelToken } = utilizeCancelToken(\n 'getItemDescriptionTranslated'\n );\n\n if (cancel) cancel();\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.ITEM_DESCRIPTION(itemId), {\n cancelToken,\n ...axiosConfigs.authenticated,\n params: {\n languageCodeIso2,\n fromLanguageCodeIso2\n }\n })\n .then(finalizeResponse())\n .catch(handleError());\n};\n\n/**\n * Returns an object with bid information for the item with the given ID.\n * @param {*} itemId\n */\nexport const getItemApi = async (itemId, preferredLanguageCode) => {\n return axiosWithTokenRefresh()\n .get(toLocalizedUrl(`/item/${itemId}.json`, preferredLanguageCode))\n .then(finalizeResponse())\n .then(({ data, status }) => {\n // Normalize & format API response data\n // if (data) {\n // data = normalizeItemModel(data);\n // }\n return { data, status };\n })\n .catch(\n handleError({\n // Ignore 400 & 401 errors that slip through token refresh\n 400: API_ERRORS.IGNORE_ME,\n 401: API_ERRORS.IGNORE_ME\n })\n );\n};\n\n/**\n * Places a bid for the given auction\n * @param {*} itemId\n * @param {*} amount\n */\nexport const placeBidApi = async (\n itemId,\n amount,\n onLoggedOut,\n preferredLanguageCode\n) => {\n try {\n const response = await axiosWithTokenRefresh().post(\n toLocalizedUrl(`/item/place-bid/${itemId}`, preferredLanguageCode),\n { amount },\n axiosConfigs.authenticated\n );\n const {\n data: {\n bid,\n item,\n transactionTotal,\n potentialBidChange,\n isMaxBid,\n weightedBidValue,\n serverSecondsLeft\n }\n } = response;\n\n const {\n bidId,\n isSuccessful,\n leadingBidAmount,\n leadingBidderMemberId,\n leadingMemberAlias: leadingBidMemberAlias,\n nextBidAmount: nextValidBidAmount,\n validationResult,\n placedBid\n } = bid;\n\n const {\n bidCount,\n categoryId,\n endDate,\n itemType,\n openingBid,\n reservePriceReached,\n sellermemberId: sellerMemberId,\n startDate\n } = item;\n\n return {\n isSuccessful,\n validationResult,\n item: {\n bidCount,\n categoryId,\n endDate,\n itemId: item.itemId,\n itemType,\n openingBid,\n reservePriceReached,\n sellerMemberId,\n startDate\n },\n bidInfo: {\n bidCount,\n bidId,\n isMaxBid,\n leadingBidAmount,\n leadingBidderMemberId,\n leadingBidMemberAlias,\n nextValidBidAmount,\n potentialBidChange,\n reservePriceReached,\n transactionTotal,\n weightedBidValue\n },\n analyticsData: {\n bidId,\n transactionTotal,\n potentialBidChange,\n isMaxBid,\n weightedBidValue\n },\n myMaxBidAmount: placedBid,\n serverSecondsLeft\n };\n } catch (error) {\n if (error.message === API_ERRORS.LOGGED_OUT) {\n onLoggedOut();\n } else {\n logger(error);\n }\n }\n};\n\nexport const getItemsFromSeller = (params, preferredLanguageCode) => {\n return axiosWithTokenRefresh()\n .get(\n toLocalizedUrl(\n '/api/webapi/discover/more-from-seller/',\n preferredLanguageCode\n ),\n { params }\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const getCombinedShippingUpsell = params => {\n return axiosWithTokenRefresh()\n .post(\n ENDPOINTS.COMBINED_SHIPPING_UPSELL,\n params,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n","import { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nexport default class LoadingPortal extends Component {\n static propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n };\n\n constructor() {\n super();\n this.el = document.createElement('div');\n this.loadingPortalRoot = document.getElementById('loading-portal');\n }\n\n componentDidMount() {\n if (this.loadingPortalRoot) {\n this.loadingPortalRoot.appendChild(this.el);\n setTimeout(() => {\n this.el.classList.add('loading-portal-visible');\n }, 0);\n }\n }\n\n componentWillUnmount() {\n if (this.loadingPortalRoot) {\n this.loadingPortalRoot.removeChild(this.el);\n }\n }\n\n render() {\n const { children, className = 'loading-portal' } = this.props;\n this.el.className = className;\n return ReactDOM.createPortal(children, this.el);\n }\n}\n","export default {\n INITIALIZE: 'UI/INITIALIZE',\n TOGGLE_HEADER_SEARCH: 'UI/TOGGLE_HEADER_SEARCH',\n OPEN_GDPR_MODAL: 'UI/OPEN_GDPR_MODAL',\n CLOSE_GDPR_MODAL: 'UI/CLOSE_GDPR_MODAL',\n OPEN_GDPR_SETTINGS: 'UI/OPEN_GDPR_SETTINGS',\n CLOSE_GDPR_SETTINGS: 'UI/CLOSE_GDPR_SETTINGS',\n OPEN_QUICK_VIEW: 'UI/OPEN_QUICK_VIEW',\n CLOSE_QUICK_VIEW: 'UI/CLOSE_QUICK_VIEW',\n LOADING_QUICK_VIEW: 'UI/LOADING_QUICK_VIEW',\n OPEN_VIDEO_MODAL: 'UI/OPEN_VIDEO_MODAL',\n CLOSE_VIDEO_MODAL: 'UI/CLOSE_VIDEO_MODAL',\n OPEN_YOUTUBE_VIDEO_MODAL: 'UI/OPEN_YOUTUBE_VIDEO_MODAL',\n CLOSE_YOUTUBE_VIDEO_MODAL: 'UI/CLOSE_YOUTUBE_VIDEO_MODAL',\n OPEN_MESSAGING_MODAL: 'UI/OPEN_MESSAGING_MODAL',\n CLOSE_MESSAGING_MODAL: 'UI/CLOSE_MESSAGING_MODAL',\n OPEN_NOTIFICATION_OPTIN_MODAL: 'UI/OPEN_NOTIFICATION_OPTIN_MODAL',\n CLOSE_NOTIFICATION_OPTIN_MODAL: 'UI/CLOSE_NOTIFICATION_OPTIN_MODAL',\n OPEN_MODAL: 'UI/OPEN_MODAL',\n CLOSE_MODAL: 'UI/CLOSE_MODAL',\n OPEN_SHARE_MODAL: 'UI/OPEN_SHARE_MODAL',\n CLOSE_SHARE_MODAL: 'UI/CLOSE_SHARE_MODAL',\n ITEM_LAYOUT: 'UI/ITEM_LAYOUT',\n UPDATE_SYSTEM_MESSAGES: 'UI/UPDATE_SYSTEM_MESSAGES',\n UPDATE_MESSAGING_NOTIFICATIONS: 'UI/UPDATE_MESSAGING_NOTIFICATIONS',\n OPEN_PROFILE_MENU: 'UI/OPEN_PROFILE_MENU',\n CLOSE_PROFILE_MENU: 'UI/CLOSE_PROFILE_MENU',\n OPEN_CATEGORY_DROPDOWN_MENU: 'UI/OPEN_CATEGORY_DROPDOWN_MENU',\n CLOSE_CATEGORY_DROPDOWN_MENU: 'UI/CLOSE_CATEGORY_DROPDOWN_MENU',\n OPEN_SEARCH_FORM: 'UI/OPEN_SEARCH_FORM',\n CLOSE_SEARCH_FORM: 'UI/CLOSE_SEARCH_FORM',\n REQUEST_ITEM_SETTINGS: 'UI/REQUEST_ITEM_SETTINGS',\n OPEN_ITEM_SETTINGS: 'UI/OPEN_ITEM_SETTINGS',\n CLOSE_ITEM_SETTINGS: 'UI/CLOSE_ITEM_SETTINGS',\n SITE_LAYOUT: 'UI/SITE_LAYOUT',\n SET_HAS_SEARCH: 'UI/SET_HAS_SEARCH',\n OPEN_HELP_SECTION: 'UI/OPEN_HELP_SECTION',\n CLOSE_HELP_SECTION: 'UI/CLOSE_HELP_SECTION',\n // General action types without prefix that many reducers can listen to\n LOG_OUT: 'LOG_OUT'\n};\n","import riot from 'riot';\nimport ajax from 'app/data/ajax';\nimport { localStore } from 'utils/storage';\nimport { toLocalizedRiotUrl } from 'tradera-apps/syi/script/app_react/utils/language';\n\nconst service = riot.observable();\nlet storageKey;\nlet rootUrl;\n\nconst get = function(url, data, onSuccess, onError) {\n ajax({\n url: url,\n method: 'GET',\n data: data,\n traditional: true,\n cache: false,\n statusCode: {\n 200: function(response) {\n onSuccess(response);\n }.bind(this),\n 500: function(response) {\n if (onError) {\n onError(response);\n }\n }\n }\n });\n};\n\nservice.setRootUrl = function(url) {\n rootUrl = toLocalizedRiotUrl(url);\n};\n\nservice.setStorageKey = function(key) {\n storageKey = key;\n};\n\nservice.getFeedbackItems = function(transactionIds, onSuccess, onError) {\n let data = {\n ids: transactionIds\n };\n\n const url = rootUrl + 'items';\n\n get(url, data, onSuccess, onError);\n};\n\nservice.getAllFeedbackItems = function(skip, take, onSuccess, onError) {\n let data = {\n skip: skip || 0,\n take: take || 10\n };\n let url = rootUrl + 'pageditems';\n\n get(url, data, onSuccess, onError);\n};\n\nconst getFeedbackStorageAsArray = function() {\n let currentStorageArray = localStore.getItem(storageKey);\n\n if (!Array.isArray(currentStorageArray)) {\n currentStorageArray = [];\n }\n\n return currentStorageArray;\n};\n\nconst _mergeAndSortStorage = function(newStorageArray, newItems, maxStorage) {\n newStorageArray = newStorageArray.filter(\n item => !newItems.find(newItem => newItem.text === item.text)\n );\n\n newStorageArray = newStorageArray.concat(newItems);\n newStorageArray.sort(function(curr, next) {\n // Sorting on multiple values are tricky - but so am I.\n return (\n next.counter +\n '.' +\n next.searchTime -\n (curr.counter + '.' + curr.searchTime)\n );\n });\n\n return newStorageArray.slice(0, maxStorage);\n};\n\nconst _createNewFeedbackItemsToStore = function(data, newStorageArray) {\n let newItemsCounter = 0;\n let newItems = [];\n let existingItem;\n\n for (let i = 0; i < data.length; i++) {\n if (data[i].comment && data[i].comment.length > 0) {\n // Om data finns.\n existingItem = newStorageArray.find(\n newStorageItem => newStorageItem.text === data[i].comment\n );\n if (existingItem) {\n newItems[newItemsCounter] = {\n text: existingItem.text,\n counter: existingItem.counter + 1\n };\n } else {\n newItems[newItemsCounter] = {\n text: data[i].comment,\n counter: 1\n };\n }\n newItems[newItemsCounter].searchTime = Date.now();\n newItemsCounter++;\n }\n }\n\n return newItems;\n};\n\nconst addFeedbackToStorage = function(data) {\n let newStorageArray = getFeedbackStorageAsArray() || [];\n let maxStorage = 10;\n let newItems = _createNewFeedbackItemsToStore(data, newStorageArray);\n\n if (newItems.length > 0) {\n newStorageArray = _mergeAndSortStorage(\n newStorageArray,\n newItems,\n maxStorage\n );\n localStore.setItem(storageKey, newStorageArray);\n }\n};\n\nservice.getFeedbackHistory = function() {\n return getFeedbackStorageAsArray();\n};\n\nservice.getStorageKey = function() {\n return storageKey;\n};\n\nservice.submitData = function(data, cb, error) {\n ajax({\n url: rootUrl + 'save',\n method: 'POST',\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n traditional: true,\n statusCode: {\n 200: function(response) {\n addFeedbackToStorage(data);\n if (response.failures?.length > 0) {\n error(response);\n } else {\n cb(response);\n }\n },\n 400: function(response) {\n error(response);\n }\n }\n });\n};\n\nservice.saveAutomaticFeedback = function(data, cb) {\n ajax({\n url: toLocalizedRiotUrl('/my/profile/save-automatic-feedback'),\n method: 'POST',\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n traditional: true,\n statusCode: {\n 200: function(response) {\n let comments = [];\n if (data.message && data.message.length > 0) {\n comments.push({ comment: data.message });\n addFeedbackToStorage(comments);\n }\n cb(response);\n }\n }\n });\n};\n\nexport default service;\n","export default {\n INITIALIZE: 'PAGE/INITIALIZE',\n SET_PAGE_TYPE: 'PAGE/SET_PAGE_TYPE',\n SET_PAGE_META_FROM_SEARCH_RESULT: 'PAGE/SET_PAGE_META_FROM_SEARCH_RESULT',\n SET_PAGE_META: 'PAGE/SET_PAGE_META'\n};\n","export const TRACK_REDUX_ACTIONS = ['SET_DRAFT_ID', 'SET_DRAFT_VERSION'];\n// Note: Don't add large objects - Sentry will reject events over 200kB\nexport const SAVE_REDUX_STATE_PATHS = [\n 'views.syi.draft.draftId',\n 'views.syi.draft.itemId',\n 'views.syi.draft.version',\n 'views.syi.syi.autoSaveEnabled'\n];\n","import has from 'underscore/modules/has';\nimport get from 'underscore/modules/get';\nimport * as Sentry from '@sentry/react';\nimport { setNestedObjectValue } from 'tradera-utils/set-nested-object-value';\nimport {\n TRACK_REDUX_ACTIONS,\n SAVE_REDUX_STATE_PATHS\n} from 'tradera-constants/sentry-redux-filters';\n\nexport const actionTransformer = action =>\n TRACK_REDUX_ACTIONS.includes(action.type) ? action : null;\n\nexport const stateTransformer = state =>\n SAVE_REDUX_STATE_PATHS.reduce((sentryState, keyString) => {\n const keyArray = keyString.split('.');\n if (has(state, keyArray)) {\n const value = get(state, keyArray);\n setNestedObjectValue(sentryState, keyArray, value);\n }\n\n return sentryState;\n }, {});\n\nexport const sentryReduxEnhancer = Sentry.createReduxEnhancer({\n actionTransformer,\n stateTransformer\n});\n","export const setNestedObjectValue = (object, keyPathArray, value) => {\n keyPathArray.reduce((acc, key, index, array) => {\n if (index + 1 < array.length) {\n acc[key] = acc[key] || {};\n } else {\n acc[key] = value;\n }\n return acc[key];\n }, object);\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport getInitialState from './initial-state';\n\nconst cartSlice = createSlice({\n name: 'cart',\n initialState: getInitialState(),\n reducers: {\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n },\n setCartData: (state, { payload }) => {\n state.isFetching = false;\n state.merchantPreOrders = payload.merchantPreOrders;\n state.errors = {};\n },\n setError: (state, { payload }) => {\n state.errors[payload.id] = payload.message;\n }\n }\n});\n\nexport const { setFetching, setCartData, setError } = cartSlice.actions;\n\nexport default cartSlice.reducer;\n","export default () => {\n return {\n isFetching: false,\n merchantPreOrders: [],\n errors: {}\n };\n};\n","export const MODAL_TYPES = {\n default: 'default',\n wishlistReminders: 'wishlistReminders',\n selling: 'selling'\n};\n\nexport const CHANNEL_TAG_GROUPS = {\n wishlistReminders: [\n 'wishlist_reminder_3_min_optin',\n 'wishlist_reminder_15_min_optin'\n ],\n buyingListingOutbid: ['member_outbid_optin'],\n buyingListingWon: ['member_won_optin'],\n sellingListingFirstBid: ['selling_first_bid_optin'],\n sellingListingAllBids: ['selling_new_bid_optin'],\n sellingListingSold: ['selling_sold_optin'],\n sellingPaymentReceived: ['selling_payment_received_optin']\n};\n","export const actionTypes = {\n PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING:\n 'PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING',\n PURCHASE_ORDER_SHIPPED: 'PURCHASE_ORDER_SHIPPED',\n PURCHASE_ORDER_LIST: 'PURCHASE_ORDER_LIST',\n PURCHASE_ORDER_PAID_BY_SELLER: 'PURCHASE_ORDER_PAID_BY_SELLER',\n PURCHASE_ORDER_PAID_BY_BUYER: 'PURCHASE_ORDER_PAID_BY_BUYER',\n PURCHASE_ORDER_RESET: 'PURCHASE_ORDER_RESET',\n PURCHASE_ORDER_DELETE_SHIPMENT: 'PURCHASE_ORDER_DELETE_SHIPMENT',\n PURCHASE_ORDER_HIDDEN: 'PURCHASE_ORDER_HIDDEN',\n PURCHASE_ORDERS_SHIPPING_BOOKED: 'PURCHASE_ORDERS_SHIPPING_BOOKED',\n PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER:\n 'PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER',\n PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER:\n 'PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER'\n};\n","export const selectShippingCheckout = state => state.views.shippingCheckout;\n\nexport const selectShipping = state => state.views.shippingCheckout.shipping;\n\nexport const selectItemWithoutShipment = state =>\n state.views.shippingCheckout.itemWithoutShipment;\n\nexport const selectShipment = (state, shipmentId) =>\n state.views.shippingCheckout?.shipments?.find(\n shipment => shipment.shipmentId === shipmentId\n );\n","import { createSlice } from '@reduxjs/toolkit';\nimport getInitialState from './initial-state';\nimport {\n deleteShipment,\n createShipmentCheckout,\n getShippingOptions,\n updateShipment,\n markAsBooked,\n markAsShipped,\n getItemWithoutShipment,\n createShipment\n} from './actions';\nimport { v4 as uuidv4 } from 'uuid';\n\nconst getUuid = () => uuidv4();\n\nconst shippingCheckoutSlice = createSlice({\n name: 'shippingCheckout',\n initialState: getInitialState(),\n reducers: {\n openNonIntegratedModal: (state, { payload }) => {\n state.nonIntegrated.providerId = payload;\n state.nonIntegrated.open = true;\n },\n closeNonIntegratedModal: state => {\n state.nonIntegrated.providerId = null;\n state.nonIntegrated.open = false;\n state.nonIntegrated.markedAsBooked = false;\n state.nonIntegrated.markedAsShipped = false;\n state.nonIntegrated.hasError = false;\n state.nonIntegrated.isUpdating = false;\n }\n },\n extraReducers: builder => {\n // create\n builder.addCase(\n createShipmentCheckout.fulfilled,\n (state, { payload }) => {\n state.shipments = payload.shipments;\n state.payment = {\n shipmentCheckoutId: payload.shipmentCheckoutId\n };\n\n state.isFetching = false;\n state.hasFetchError = false;\n }\n );\n builder.addCase(createShipmentCheckout.pending, state => {\n state.isFetching = true;\n state.hasFetchError = false;\n });\n builder.addCase(createShipmentCheckout.rejected, state => {\n state.isFetching = false;\n state.hasFetchError = true;\n });\n\n // delete\n builder.addCase(deleteShipment.fulfilled, (state, { payload }) => {\n state.shipments = state.shipments.filter(\n shipment => shipment.shipmentId !== payload.shipmentId\n );\n state.hasDeleteError = false;\n state.isDeleting = false;\n state.isChangingProvider = payload.isChangingProvider;\n });\n builder.addCase(deleteShipment.pending, state => {\n state.hasDeleteError = false;\n state.isDeleting = true;\n state.isChangingProvider = false;\n });\n builder.addCase(deleteShipment.rejected, state => {\n state.hasDeleteError = true;\n state.isDeleting = false;\n state.isChangingProvider = false;\n });\n\n // update\n builder.addCase(updateShipment.fulfilled, (state, { meta }) => {\n const { arg } = meta;\n const { streetName, ...cleanedBuyerAddress } = arg.buyerAddress;\n state.shipments = state.shipments.map(shipment =>\n shipment.shipmentId === arg.shipmentId\n ? {\n ...shipment,\n receiver: {\n ...shipment.receiver,\n ...cleanedBuyerAddress,\n street: arg.buyerAddress.streetName\n },\n mostPreciseErrorKey: null,\n isUpdatingShipment: false\n }\n : shipment\n );\n\n state.error = null;\n state.isUpdating = false;\n });\n builder.addCase(updateShipment.pending, (state, { meta }) => {\n const { arg } = meta;\n state.shipments = state.shipments.map(shipment =>\n shipment.shipmentId === arg.shipmentId\n ? {\n ...shipment,\n isUpdatingShipment: true,\n mostPreciseErrorKey: null\n }\n : shipment\n );\n\n state.isUpdating = true;\n });\n builder.addCase(updateShipment.rejected, (state, { meta, payload }) => {\n const { arg } = meta;\n state.shipments = state.shipments.map(shipment =>\n shipment.shipmentId === arg.shipmentId\n ? {\n ...shipment,\n isUpdatingShipment: false,\n mostPreciseErrorKey: payload.mostPreciseErrorKey\n }\n : shipment\n );\n\n state.error = {\n translationKey: payload.mostPreciseErrorKey\n };\n state.isUpdating = false;\n });\n\n // create shipment\n builder.addCase(createShipment.fulfilled, (state, { meta }) => {\n const { arg } = meta;\n\n const { item } = state.itemWithoutShipment;\n state.itemWithoutShipment = {\n ...state.itemWithoutShipment,\n item: {\n ...state.itemWithoutShipment.item,\n selectedShipping: {\n providerId:\n arg.providerId || item.selectedShipping.providerId,\n productId:\n arg.productId || item.selectedShipping.productId\n }\n }\n };\n\n state.error = null;\n state.isCreating = false;\n });\n\n builder.addCase(createShipment.pending, state => {\n state.isCreating = true;\n });\n\n builder.addCase(createShipment.rejected, (state, { meta, payload }) => {\n const { arg } = meta;\n\n const { item } = state.itemWithoutShipment;\n state.itemWithoutShipment = {\n ...state.itemWithoutShipment,\n item: {\n ...state.itemWithoutShipment.item,\n selectedShipping: {\n providerId:\n arg.providerId || item.selectedShipping.providerId,\n productId:\n arg.productId || item.selectedShipping.productId\n }\n }\n };\n\n state.error = {\n translationKey: payload?.mostPreciseErrorKey\n };\n state.isCreating = false;\n });\n\n // get shipping info\n builder.addCase(\n getItemWithoutShipment.fulfilled,\n (state, { payload }) => {\n state.itemWithoutShipment = {\n item: payload.item,\n buyerContactDetails: payload.buyerContactDetails,\n isFetching: false,\n error: null\n };\n }\n );\n builder.addCase(getItemWithoutShipment.pending, state => {\n state.itemWithoutShipment = {\n isFetching: true,\n error: null\n };\n });\n builder.addCase(\n getItemWithoutShipment.rejected,\n (state, { payload }) => {\n state.itemWithoutShipment = {\n isFetching: false,\n error: {\n errorCode: payload?.errorCode\n }\n };\n }\n );\n\n // get shipping options\n builder.addCase(getShippingOptions.fulfilled, (state, { payload }) => {\n const {\n data,\n bringEnabled,\n postnordEnabled,\n dhlEnabled,\n schenkerEnabled\n } = payload;\n //Decorate products with cost & uuid for shipping dialog:\n const productsDecorated = data.productsPerWeightSpan.map(\n weightClass => {\n const productsWithDecoration = weightClass.products.map(\n product => {\n let outage = false;\n switch (product.providerId) {\n case 'BringDenmark':\n outage = !bringEnabled;\n break;\n case 'PostNordParcel':\n outage = !postnordEnabled;\n break;\n case 'SchenkerPrivpak':\n outage = !schenkerEnabled;\n break;\n case 'DHL':\n outage = !dhlEnabled;\n break;\n default:\n outage = false;\n break;\n }\n\n return {\n ...product,\n productId: product.id,\n cost: product.price,\n uuid: getUuid(),\n outage: outage\n };\n }\n );\n\n const filteredProductsWithDecoration = productsWithDecoration.filter(\n shippingProvider =>\n shippingProvider.providerId !== 'BringDenmark' ||\n bringEnabled\n );\n return {\n ...weightClass,\n products: filteredProductsWithDecoration\n };\n }\n );\n state.shipping.shippingOptions = productsDecorated;\n\n state.shipping.isShippingFetching = false;\n state.shipping.hasShippingError = false;\n });\n builder.addCase(getShippingOptions.pending, state => {\n state.shipping.isShippingFetching = true;\n state.shipping.hasShippingError = false;\n });\n builder.addCase(getShippingOptions.rejected, state => {\n state.shipping.isShippingFetching = false;\n state.shipping.hasShippingError = true;\n });\n\n // mark as booked\n builder.addCase(markAsBooked.fulfilled, state => {\n state.nonIntegrated.markedAsBooked = true;\n state.nonIntegrated.hasError = false;\n state.nonIntegrated.isUpdating = false;\n });\n builder.addCase(markAsBooked.pending, state => {\n state.nonIntegrated.markedAsBooked = true;\n state.nonIntegrated.hasError = false;\n state.nonIntegrated.isUpdating = true;\n });\n builder.addCase(markAsBooked.rejected, state => {\n state.nonIntegrated.markedAsBooked = false;\n state.nonIntegrated.hasError = true;\n state.nonIntegrated.isUpdating = false;\n });\n\n // mark as shipped\n builder.addCase(markAsShipped.fulfilled, state => {\n state.nonIntegrated.markedAsShipped = true;\n state.nonIntegrated.hasError = false;\n state.nonIntegrated.isUpdating = false;\n });\n builder.addCase(markAsShipped.pending, state => {\n state.nonIntegrated.markedAsShipped = true;\n state.nonIntegrated.hasError = false;\n state.nonIntegrated.isUpdating = true;\n });\n builder.addCase(markAsShipped.rejected, state => {\n state.nonIntegrated.markedAsShipped = false;\n state.nonIntegrated.hasError = true;\n state.nonIntegrated.isUpdating = false;\n });\n }\n});\n\nexport const {\n openNonIntegratedModal,\n closeNonIntegratedModal\n} = shippingCheckoutSlice.actions;\n\nexport default shippingCheckoutSlice.reducer;\n","export default () => ({\n shipments: [],\n isFetching: false,\n payment: null,\n hasError: false,\n error: null,\n isDeleting: false,\n isUpdating: false,\n isCreating: false,\n itemWithoutShipment: {\n error: null,\n item: null,\n buyerContactDetails: null,\n isFetching: false\n },\n nonIntegrated: {\n open: false,\n provider: null,\n isUpdating: false,\n markedAsBooked: false,\n markedAsShipped: false,\n hasError: false\n },\n shipping: {\n shippingOptions: [],\n isShippingFetching: false,\n hasShippingError: false\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as Sentry from '@sentry/react';\nimport { isServer } from 'tradera-utils/nextjs';\nimport { getErrorMessage } from 'tradera-backend/utils/error';\n\nlet log;\n\n(async () => {\n if (isServer) {\n const { Logger } = await import(\n '@tradera-internal/infrastructure-logging'\n );\n log = new Logger('ApplicationErrorBoundary');\n }\n})();\n\nclass ApplicationErrorBoundary extends React.Component {\n componentDidCatch() {}\n\n onError(error) {\n const { capture = true } = this?.props || {};\n if (typeof capture === 'function') {\n capture(error);\n }\n if (isServer && log) {\n const errorMessage = getErrorMessage(error);\n log.error(\n errorMessage,\n {\n source: 'react ApplicationErrorBoundary'\n },\n error\n );\n }\n }\n\n render() {\n const { children, fallback, capture } = this.props;\n\n if (!capture) {\n return children;\n }\n\n return (\n this.onError(error)}>\n {children}\n \n );\n }\n}\n\nApplicationErrorBoundary.propTypes = {\n // Capture function, if false then errors are silently ignored\n capture: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).isRequired,\n fallback: PropTypes.node\n};\n\nApplicationErrorBoundary.defaultProps = {\n capture: true,\n fallback: null\n};\n\nexport default ApplicationErrorBoundary;\n","export const getErrorContext = (context = {}) => {\n const { locale, req = {}, resolvedUrl } = context;\n const { headers = {}, url } = req;\n const errorContext = {\n url: resolvedUrl || url,\n locale,\n ip: headers['x-real-ip'],\n userAgent: headers['user-agent']\n };\n return errorContext;\n};\n\nexport const getErrorMessage = error => {\n switch (typeof error) {\n case 'string':\n return error;\n case 'object':\n if (error?.name && error?.message) {\n return `${error.name}: ${error.message}`;\n } else if (error?.message) {\n return error.message;\n }\n return `unknown error object: ${error}`;\n default:\n return `unknown error type caught: ${error}`;\n }\n};\n","export const INTERNATIONAL_SHIPPING_MODAL_ID = 'internationalShippingModalId';\n","export default {\n RESET: 'BANK-ID/RESET',\n START_AUTH: 'BANK-ID/START_AUTH',\n IN_PROGRESS: 'BANK-ID/BANKID_IN_PROGRESS',\n COMPLETED: 'BANK-ID/BANKID_COMPLETED',\n SET_ERROR: 'BANK-ID/SET_ERROR',\n CLOSE: 'BANK-ID/CLOSE'\n};\n","import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\nimport LoadingPortal from 'tradera-components/portals/loading-portal';\n\nconst LoaderComponent = ({\n className,\n children,\n visibleClassName,\n ...otherProps\n}) => {\n const loaderRef = useRef(null);\n useEffect(() => {\n const timeout = setTimeout(() => {\n loaderRef?.current?.classList.add(visibleClassName);\n }, 0);\n return () => clearTimeout(timeout);\n }, [visibleClassName]);\n\n return (\n
\n {children}\n
\n );\n};\n\n// Global loading with overlay that covers the whole page, except top menu\nconst GlobalLoader = () => (\n \n \n \n);\n\n// Legacy global loader that uses portal\nconst PortalLoader = () => (\n \n \n \n);\n\n// Local loader that covers its closest positioned parent\n// Tip: use position-relative class for containing parent\nconst LocalLoader = ({ className = '', ...otherProps }) => (\n \n \n \n);\n\nconst Loader = ({ usePortal }) => {\n return usePortal ? : ;\n};\n\nLoader.propTypes = {\n usePortal: PropTypes.bool.isRequired\n};\n\nLoader.defaultProps = {\n usePortal: true\n};\n\nexport default Loader;\nexport { PortalLoader, GlobalLoader, LocalLoader };\n","import axios from 'axios';\nimport qs from 'qs';\nimport {\n utilizeCancelToken,\n checkResponseVersion,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\n\n/**\n *\n * @param {string} endpoint\n * @param {object} params\n * @param {string} baseURL\n * @param version\n * @returns {Promise<*>}\n */\nexport const getSearchResults = async (\n endpoint,\n params,\n baseURL = '',\n version\n) => {\n if (!params) {\n if (process && process.env && process.env.NODE_ENV !== 'production') {\n console.warn(\n 'getSearchResults must have queryParams as the first argument'\n );\n }\n return;\n }\n\n const { cancel, cancelToken } = utilizeCancelToken('fetchCategoryList');\n if (cancel) cancel();\n\n return axios\n .get(`${endpoint}.json`, {\n cancelToken,\n baseURL,\n params,\n paramsSerializer: function(params) {\n return qs.stringify(params, { arrayFormat: 'repeat' });\n }\n })\n .then(version ? checkResponseVersion(version) : response => response)\n .then(finalizeResponse())\n .catch(handleError());\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport { isDenmarkCountryCode } from 'tradera-utils/countrycode';\nimport initData from 'init-data';\n\nconst initialState = {\n shortDescription: null,\n validationError: null,\n descriptionLanguageCodeIso2: null,\n isDescriptionLanguageCodeIso2ChangeAvailable:\n initData &&\n initData.memberCountryCodeIso2 &&\n isDenmarkCountryCode(initData.memberCountryCodeIso2) &&\n initData.featureSwitches &&\n initData.featureSwitches['danish-description']\n};\n\nconst getValidationError = state => {\n if (!state.shortDescription || state.shortDescription.trim() === '') {\n return 'syi_validation_missing_title';\n }\n\n if (\n state.isDescriptionLanguageCodeIso2ChangeAvailable &&\n !state.descriptionLanguageCodeIso2\n ) {\n return 'syi_validation_missing_descriptionLanguageCodeIso2';\n }\n};\n\nconst validate = state => ({\n ...state,\n validationError: getValidationError(state)\n});\n\nconst shortDescriptionSlice = createSlice({\n name: 'shortDescription',\n initialState,\n reducers: {\n setShortDescription: (state, action) =>\n validate({ ...state, shortDescription: action.payload }),\n resetShortDescription: state =>\n validate({ ...state, shortDescription: null }),\n setDescriptionLanguageCodeIso2: (state, action) =>\n validate({\n ...state,\n descriptionLanguageCodeIso2: action.payload\n })\n }\n});\n\nexport const {\n setShortDescription,\n resetShortDescription,\n setDescriptionLanguageCodeIso2\n} = shortDescriptionSlice.actions;\n\nexport default shortDescriptionSlice.reducer;\n","export const ROLES = {\n BUYER: 'buyer',\n SELLER: 'seller'\n};\nexport const MAX_COMMENT_LENGTH = 80;\nexport const UNSET_RATING_VALUE = 0;\nexport const MIN_RATING_VALUE = 1;\nexport const MAX_RATING_VALUE = 5;\n\nexport const RATING_NAMES = {\n DESCRIPTION: 'ItemAsDescribed',\n COMMUNICATION: 'CommResponsiveness',\n SHIPPING_TIME: 'ShippingTime',\n SHIPPING_COST: 'ShippingHandlingCharges',\n PAYMENT_TIME: 'PaymentTime'\n};\n\nexport const RATING_NAMES_SELLER = [RATING_NAMES.PAYMENT_TIME];\n\nexport const RATING_NAMES_BUYER = [\n RATING_NAMES.DESCRIPTION,\n RATING_NAMES.COMMUNICATION,\n RATING_NAMES.SHIPPING_TIME,\n RATING_NAMES.SHIPPING_COST\n];\n\nexport const RATING_SETTINGS = {\n [RATING_NAMES.DESCRIPTION]: {\n name: RATING_NAMES.DESCRIPTION,\n titleKey: 'leaveFeedback_rateItemAsDecribedTitle',\n descriptionKeys: [\n 'leaveFeedback_rateItemAsDecribed_ratingOne',\n 'leaveFeedback_rateItemAsDecribed_ratingTwo',\n 'leaveFeedback_rateItemAsDecribed_ratingThree',\n 'leaveFeedback_rateItemAsDecribed_ratingFour',\n 'leaveFeedback_rateItemAsDecribed_ratingFive'\n ]\n },\n [RATING_NAMES.COMMUNICATION]: {\n name: RATING_NAMES.COMMUNICATION,\n titleKey: 'leaveFeedback_rateCommResponsivenessTitle',\n descriptionKeys: [\n 'leaveFeedback_rateCommResponsiveness_ratingOne',\n 'leaveFeedback_rateCommResponsiveness_ratingTwo',\n 'leaveFeedback_rateCommResponsiveness_ratingThree',\n 'leaveFeedback_rateCommResponsiveness_ratingFour',\n 'leaveFeedback_rateCommResponsiveness_ratingFive'\n ]\n },\n [RATING_NAMES.SHIPPING_TIME]: {\n name: RATING_NAMES.SHIPPING_TIME,\n titleKey: 'leaveFeedback_rateShippingTimeTitle',\n descriptionKeys: [\n 'leaveFeedback_rateShippingTime_ratingOne',\n 'leaveFeedback_rateShippingTime_ratingTwo',\n 'leaveFeedback_rateShippingTime_ratingThree',\n 'leaveFeedback_rateShippingTime_ratingFour',\n 'leaveFeedback_rateShippingTime_ratingFive'\n ]\n },\n [RATING_NAMES.SHIPPING_COST]: {\n name: RATING_NAMES.SHIPPING_COST,\n titleKey: 'leaveFeedback_rateShippingHandlingChargesTitle',\n descriptionKeys: [\n 'leaveFeedback_rateShippingHandlingCharges_ratingOne',\n 'leaveFeedback_rateShippingHandlingCharges_ratingTwo',\n 'leaveFeedback_rateShippingHandlingCharges_ratingThree',\n 'leaveFeedback_rateShippingHandlingCharges_ratingFour',\n 'leaveFeedback_rateShippingHandlingCharges_ratingFive'\n ]\n },\n [RATING_NAMES.PAYMENT_TIME]: {\n name: RATING_NAMES.PAYMENT_TIME,\n titleKey: 'leaveFeedback_ratePaymentTimeTitle',\n descriptionKeys: [\n 'leaveFeedback_ratePaymentTime_ratingOne',\n 'leaveFeedback_ratePaymentTime_ratingTwo',\n 'leaveFeedback_ratePaymentTime_ratingThree',\n 'leaveFeedback_ratePaymentTime_ratingFour',\n 'leaveFeedback_ratePaymentTime_ratingFive'\n ]\n }\n};\n","import qs from 'qs';\n\nexport const getInitialFilters = filters => {\n let newFilters = { ...filters };\n let defaultFilters = { ...filters };\n if (window.location.search) {\n const defaultSearchParams = qs.parse(\n window.location.search.replace('?', '')\n );\n newFilters.modifiers = {\n ...newFilters.modifiers,\n ...defaultSearchParams.filters\n };\n }\n return {\n newFilters,\n defaultFilters\n };\n};\n","import { openModal } from 'tradera-state/ui/actions';\nimport { types } from './item-actions-helper';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from '../components/leave-feedback/single-feedback-dialog';\nimport featureToggles from '../utils/feature-toggles';\nimport {\n openChangeShipping,\n openSetDiscount\n} from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\n\nconst isTakeaway = purchaseOrder => {\n return (\n (purchaseOrder.shipping.selectedShipping &&\n purchaseOrder.shipping.selectedShipping.isTakeaway) ||\n (purchaseOrder.shipping.shippingDiscount &&\n purchaseOrder.shipping.shippingDiscount.isTakeaway)\n );\n};\n\nconst getId = purchaseOrder => purchaseOrder.purchaseOrderId;\n\nexport const soldActions = (\n purchaseOrder,\n listViewType,\n memberMessagingParticipation\n) => {\n const actions = [\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Ange samfraktpris',\n getTranslatedLabel: t =>\n purchaseOrder.shipping.shippingDiscount\n ? t('myt_itemCard_actions_update_combinedshipping_change')\n : t('myt_itemCard_actions_update_combinedshipping'),\n dispatch: dispatch => {\n dispatch(openChangeShipping(purchaseOrder?.purchaseOrderId));\n },\n gaLabel: 'ChangeShippingPriceSold',\n isVisible: () =>\n purchaseOrder.combinedShippingInformation &&\n !purchaseOrder.state.isPaid,\n isPrimaryAction: () =>\n !purchaseOrder.shipping.shippingDiscount &&\n purchaseOrder.transactionIds.length > 1\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Orderinformation',\n getTranslatedLabel: t => t('myt_itemCard_actions_orderInformation'),\n url: `/my/sold/buyer-info?purchaseOrderId=${purchaseOrder.purchaseOrderId}`,\n gaLabel: 'BuyerInfo',\n isVisible: () => !!purchaseOrder.purchaseOrderId,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Markera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_markAsPaid'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderPaidBySeller(\n purchaseOrder.purchaseOrderId,\n listViewType,\n memberMessagingParticipation,\n true\n )\n ),\n gaLabel: 'MarkAsPaid',\n isVisible: () => {\n if (purchaseOrder.state.isPaidWithIntegratedPayment) {\n return false;\n }\n if (\n purchaseOrder.combinedShippingInformation &&\n purchaseOrder.combinedShippingInformation\n .hasBuyerRequestedCombinedShippingPrice &&\n !purchaseOrder.shipping.shippingDiscount\n ) {\n return false;\n }\n return !purchaseOrder.state.isPaid;\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Boka frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_bookShipping'),\n url: `/my/shipping?purchaseOrderId=${purchaseOrder.purchaseOrderId}&originUrl=%2fmy%2fsold`,\n gaLabel: 'BookShipping',\n isVisible: () => {\n if (\n purchaseOrder.state.isShippingBooked ||\n purchaseOrder.state.isShipped ||\n purchaseOrder.state.hasUnpaidShipping ||\n purchaseOrder.state.isArchived ||\n (purchaseOrder.combinedShippingInformation &&\n purchaseOrder.combinedShippingInformation\n .hasBuyerRequestedCombinedShippingPrice &&\n !purchaseOrder.shipping.shippingDiscount)\n ) {\n return false;\n }\n return true;\n },\n isPrimaryAction: () => {\n return (\n !purchaseOrder.state.hasUnpaidShipping &&\n !isTakeaway(purchaseOrder) &&\n !purchaseOrder.state.isArchived\n );\n }\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Betala frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_payShipping'),\n url:\n purchaseOrder.shipping?.unpaidShipping?.url ||\n `/my/shipping/checkout`,\n gaLabel: 'PayShipping',\n isVisible: () => purchaseOrder.state.hasUnpaidShipping,\n isPrimaryAction: () => purchaseOrder.state.hasUnpaidShipping\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Avbryt fraktbokning',\n getTranslatedLabel: t => t('myt_itemCard_actions_deleteShipping'),\n dispatch: dispatch => {\n dispatch(\n purchaseOrderActions.deleteShipment(\n purchaseOrder.shipping.unpaidShipping.id,\n purchaseOrder.purchaseOrderId,\n listViewType\n )\n );\n },\n gaLabel: 'DeleteShipping',\n isVisible: () => purchaseOrder.state.hasUnpaidShipping,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Avmarkera som bokad',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_unmarkAsShippingBooked'),\n dispatch: dispatch => {\n dispatch(\n purchaseOrderActions.updateShippingBooked(\n purchaseOrder.purchaseOrderId,\n listViewType,\n memberMessagingParticipation\n )\n );\n },\n gaLabel: 'UnmarkAsShippingBooked',\n isVisible: () => {\n return (\n !purchaseOrder.shipping.shipping?.url &&\n purchaseOrder.state.isShippingBooked &&\n !purchaseOrder.state.isShipped\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `/my/sold/buyer-info?purchaseOrderId=${purchaseOrder.purchaseOrderId}#shipping`,\n gaLabel: 'TrackShipment',\n isVisible: () => !!purchaseOrder.shipping.shipping?.url,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.EXTERNAL_LINK,\n label: 'Kvitto för frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_shippingReceipt'),\n url: `/my/shipping/receipt/${purchaseOrder.shipping.shipping?.shipmentCheckoutId}`,\n gaLabel: 'ShippingReceipt',\n isVisible: () =>\n purchaseOrder.shipping.shipping?.hasShipmentReceipt,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.EXTERNAL_LINK,\n label: 'Ladda ner fraktsedel',\n getTranslatedLabel: t => t('myt_itemCard_actions_shippingLabel'),\n url: `/my/shipping/label/${purchaseOrder.shipping.shipping?.shipmentId}`,\n gaLabel: 'ShippingLabel',\n isVisible: () => purchaseOrder.shipping.shipping?.hasShipmentLabel,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: isTakeaway(purchaseOrder)\n ? 'Avmarkera som hämtad'\n : 'Avmarkera som skickad',\n getTranslatedLabel: t =>\n isTakeaway(purchaseOrder)\n ? t('myt_itemCard_actions_unmarkAsCollected')\n : t('myt_itemCard_actions_unmarkAsSent'),\n dispatch: dispatch => {\n dispatch(\n purchaseOrderActions.updatePurchaseOrderShipped(\n purchaseOrder.purchaseOrderId,\n listViewType,\n purchaseOrder.transactionIds,\n false\n )\n );\n },\n gaLabel: 'UnmarkAsShipped',\n isVisible: () => purchaseOrder.state.isShipped,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: isTakeaway(purchaseOrder)\n ? 'Markera som hämtad'\n : 'Markera som skickad',\n getTranslatedLabel: t =>\n isTakeaway(purchaseOrder)\n ? t('myt_itemCard_actions_markAsCollected')\n : t('myt_itemCard_actions_markAsSent'),\n dispatch: dispatch => {\n dispatch(\n purchaseOrderActions.updatePurchaseOrderShipped(\n purchaseOrder.purchaseOrderId,\n listViewType,\n purchaseOrder.transactionIds,\n true\n )\n );\n },\n gaLabel: 'MarkAsShipped',\n isVisible: () => {\n return !purchaseOrder.state.isShipped;\n },\n isPrimaryAction: () => !purchaseOrder.state.hasUnpaidShipping\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Lämna omdöme',\n getTranslatedLabel: t => t('myt_itemCard_actions_leaveFeedback'),\n dispatch: dispatch => {\n dispatch(\n openModal({\n modalId: SINGLE_FEEDBACK_DIALOG_ID,\n data: {\n purchaseOrderId: purchaseOrder.purchaseOrderId,\n transactionIds: purchaseOrder.itemsToGiveFeedBackTo\n }\n })\n );\n },\n gaLabel: 'LeaveFeedbackOnBuyer',\n isVisible: () => !!purchaseOrder.itemsToGiveFeedBackTo.length,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Återbetala',\n getTranslatedLabel: t => t('myt_itemCard_actions_refund'),\n dispatch: dispatch =>\n dispatch(openSetDiscount(purchaseOrder.purchaseOrderId)),\n gaLabel: 'Refund',\n isVisible: () => purchaseOrder.state.isRefundAllowed,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Köparens omdömen',\n getTranslatedLabel: t => t('myt_itemCard_actions_buyerFeedback'),\n url: `/profile/feedback/${purchaseOrder.buyerMember.memberId}`,\n gaLabel: 'BuyerProfile',\n isVisible: () => true,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Avmarkera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_unmarkAsPaid'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderPaidBySeller(\n purchaseOrder.purchaseOrderId,\n listViewType,\n memberMessagingParticipation,\n false\n )\n ),\n gaLabel: 'UnmarkAsPaid',\n isVisible: () => {\n if (purchaseOrder.state.isPaidWithIntegratedPayment) {\n return false;\n }\n return !!purchaseOrder.state.isPaid;\n },\n isPrimaryAction: () => true\n }),\n () => ({\n // \"UPI\" = \"Unpaid Item\"\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Anmäl utebliven betalning',\n getTranslatedLabel: t => t('myt_itemCard_actions_reportUnpaidItem'),\n url: `/resolution/UPI2/${purchaseOrder.purchaseOrderId}`,\n gaLabel: 'ReportUnpaidItem',\n isVisible: () =>\n featureToggles.isUpiPurchaseOrderEnabled &&\n !purchaseOrder.state.isPaid &&\n !purchaseOrder.state.isUpiSubmitted,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Lämna rabatt',\n getTranslatedLabel: t => t('myt_itemCard_actions_giveDiscount'),\n dispatch: dispatch =>\n dispatch(openSetDiscount(purchaseOrder.purchaseOrderId)),\n gaLabel: 'Discount',\n isVisible: () => purchaseOrder.state.isDiscountAllowed,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderHiddenForSeller(\n purchaseOrder.purchaseOrderId,\n true,\n listViewType\n )\n ),\n gaLabel: 'HideSold',\n isVisible: () => !purchaseOrder.state.isHiddenForSeller,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Ångra dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_unhide'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderHiddenForSeller(\n purchaseOrder.purchaseOrderId,\n false,\n listViewType\n )\n ),\n gaLabel: 'UnhideSold',\n isVisible: () => purchaseOrder.state.isHiddenForSeller,\n isPrimaryAction: () => false\n })\n ];\n\n return actions;\n};\n","import { openModal } from 'tradera-state/ui/actions';\nimport { types } from './item-actions-helper';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from '../components/leave-feedback/single-feedback-dialog';\nimport featureToggles from '../utils/feature-toggles';\nimport { openModal as openMyTraderaModal } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\n\nconst getId = purchaseOrder => purchaseOrder.purchaseOrderId;\n\nconst showModal = translationKey => {\n return openMyTraderaModal({\n bulkAction: 'MytListInfo',\n modal: {\n cssClass: 'fixed',\n icon: 'check',\n isSingleButton: true,\n getTranslatedMessage: t => t(translationKey)\n }\n });\n};\n\nexport const boughtActions = (purchaseOrder, listViewType) => {\n const actions = [\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Begär samfraktpris',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_request_combinedshipping'),\n dispatch: dispatch => {\n dispatch(\n purchaseOrderActions.requestCombinedShippingPrice(\n purchaseOrder.purchaseOrderId,\n !purchaseOrder.combinedShippingInformation\n .hasBuyerRequestedCombinedShippingPrice\n )\n );\n },\n gaLabel: 'RequestCombinedShipping',\n isVisible: () =>\n purchaseOrder.combinedShippingInformation &&\n !purchaseOrder.combinedShippingInformation\n .hasBuyerRequestedCombinedShippingPrice &&\n !purchaseOrder.shipping.shippingDiscount &&\n !purchaseOrder.state.isPaid &&\n purchaseOrder.shipping.shippingOptions?.length < 1,\n isPrimaryAction: () => !purchaseOrder.shipping.shippingDiscount\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Betala',\n getTranslatedLabel: t => t('myt_itemCard_actions_pay'),\n dispatch: dispatch => {\n if (purchaseOrder.state.isPaymentExpired) {\n return dispatch(showModal('myt_orderinfo_paymentExpired'));\n }\n return (window.location.href = `/Shopping/Checkout/SelectPayment?purchaseOrderId=${purchaseOrder.purchaseOrderId}`);\n },\n gaLabel: 'Pay',\n buttonTheme: 'success',\n isVisible: () => {\n if (purchaseOrder.state.isPaid) {\n return false;\n }\n return (\n !purchaseOrder.state.isPaid &&\n !purchaseOrder.state.isMarkedAsPaidByBuyer\n );\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Markera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_markAsPaid'),\n dispatch: dispatch => {\n if (purchaseOrder.state.isPaymentExpired) {\n return dispatch(showModal('myt_orderinfo_paymentExpired'));\n }\n if (\n purchaseOrder.combinedShippingInformation &&\n !purchaseOrder.shipping.shippingDiscount &&\n !purchaseOrder.shipping.selectedShipping\n ) {\n return dispatch(showModal('myt_modal_mark_as_paid_info'));\n }\n dispatch(\n purchaseOrderActions.updatePurchaseOrderPaidByBuyer(\n purchaseOrder.purchaseOrderId,\n listViewType,\n true\n )\n );\n },\n gaLabel: 'MarkAsPaid',\n isVisible: () => {\n if (purchaseOrder.state.isPaid) {\n return false;\n }\n if (\n !purchaseOrder.combinedShippingInformation &&\n !purchaseOrder.shipping.selectedShipping &&\n !purchaseOrder.shipping.shippingDiscount\n ) {\n return false;\n }\n return (\n !purchaseOrder.state.isPaidWithIntegratedPayment &&\n !purchaseOrder.state.isMarkedAsPaidByBuyer\n );\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Avmarkera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_unmarkAsPaid'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderPaidByBuyer(\n purchaseOrder.purchaseOrderId,\n listViewType,\n false\n )\n ),\n gaLabel: 'UnmarkAsPaid',\n isVisible: () => {\n if (purchaseOrder.state.isPaid) {\n return false;\n }\n return (\n !purchaseOrder.state.isPaidWithIntegratedPayment &&\n purchaseOrder.state.isMarkedAsPaidByBuyer &&\n !purchaseOrder.state.isPaymentExpired\n );\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Lämna omdöme',\n getTranslatedLabel: t => t('myt_itemCard_actions_leaveFeedback'),\n dispatch: dispatch => {\n dispatch(\n openModal({\n modalId: SINGLE_FEEDBACK_DIALOG_ID,\n data: {\n purchaseOrderId: purchaseOrder.purchaseOrderId,\n transactionIds: purchaseOrder.itemsToGiveFeedBackTo\n }\n })\n );\n },\n gaLabel: 'LeaveFeedbackOnSeller',\n isVisible: () => !!purchaseOrder.itemsToGiveFeedBackTo.length,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Orderbekräftelse',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_orderConfirmation'),\n url: `/Shopping/OrderConfirmation?purchaseOrderId=${purchaseOrder.purchaseOrderId}`,\n gaLabel: 'OrderConfirmation',\n isVisible: () => !featureToggles.isBuyerOrderInformationEnabled,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Orderinformation',\n getTranslatedLabel: t => t('myt_itemCard_actions_orderInformation'),\n url: `/my/order/${purchaseOrder.purchaseOrderId}`,\n gaLabel: 'OrderInformation',\n isVisible: () => featureToggles.isBuyerOrderInformationEnabled,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.EXTERNAL_LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `${purchaseOrder.shipping.shipping?.url}`,\n gaLabel: 'BuyerTrackShipment',\n isVisible: () =>\n !featureToggles.isBuyerOrderInformationEnabled &&\n !!purchaseOrder.shipping.shipping?.url,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `/my/order/${purchaseOrder.purchaseOrderId}#shipping`,\n gaLabel: 'BuyerTrackShipment',\n isVisible: () =>\n featureToggles.isBuyerOrderInformationEnabled &&\n !!purchaseOrder.shipping.shipping?.url,\n isPrimaryAction: () => true\n }),\n () => ({\n // \"INR\" = \"Item Not Received\"\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Anmäl utebliven leverans',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_reportFailureToDeliver'),\n url: `/resolution/INR2/${purchaseOrder.purchaseOrderId}`,\n gaLabel: 'ReportItemNotReceived',\n isVisible: () =>\n !purchaseOrder.payment.hasBuyerProtection &&\n !purchaseOrder.state.isInrSubmitted &&\n featureToggles.isInrPurchaseOrderEnabled,\n isPrimaryAction: () => true\n }),\n // () => ({ TODO REWRITE TO REACT\n // id: getId(item),\n // type: types.LINK,\n // label: 'Anmäl utebliven vara',\n // getTranslatedLabel: t => t('myt_itemCard_actions_createDispute'),\n // url: `/resolution/disputes/${item.transaction.transactionId}`,\n // gaLabel: 'CreateDispute',\n // isVisible: () =>\n // featureToggles.isDisputesEntranceEnabled &&\n // item.transaction.hasBuyerProtection &&\n // !item.transaction.dispute,\n // isPrimaryAction: () => !item.haveMultipleRows\n // }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Säljarens annonser',\n getTranslatedLabel: t => t('myt_itemCard_actions_itemsFromSeller'),\n url: `/profile/items/${purchaseOrder.sellerMember.memberId}/${purchaseOrder.sellerMember.cleanedAlias}`,\n gaLabel: 'SellerOtherItems',\n isVisible: () => true,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderHiddenForBuyer(\n purchaseOrder.purchaseOrderId,\n purchaseOrder.transactionIds,\n true,\n listViewType\n )\n ),\n gaLabel: 'HideSold',\n isVisible: () => !purchaseOrder.state.isHiddenForBuyer,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Ångra dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_unhide'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderHiddenForBuyer(\n purchaseOrder.purchaseOrderId,\n purchaseOrder.transactionIds,\n false,\n listViewType\n )\n ),\n gaLabel: 'UnhideSold',\n isVisible: () => purchaseOrder.state.isHiddenForBuyer,\n isPrimaryAction: () => false\n })\n ];\n\n return actions;\n};\n","import { soldActions } from '../../helpers/purchase-order-actions-helper-seller';\nimport { boughtActions } from '../../helpers/purchase-order-actions-helper-buyer';\nimport logger from 'packages/logger';\nimport { PAGE_NAMES } from '../../constants/page';\n\nexport const getActionsForPurchaseOrder = (\n purchaseOrder,\n listViewType,\n memberMessagingParticipation,\n pageName\n) => {\n const secondaryActions = [];\n let primaryAction = null;\n\n const checkAndAdd = action => {\n try {\n if (!action.isVisible) {\n throw 'Action is not compatible: ' + action.label;\n }\n if (!action.isVisible()) {\n return;\n }\n if (primaryAction === null && action.isPrimaryAction()) {\n primaryAction = action;\n } else {\n secondaryActions.push(action);\n }\n } catch (error) {\n logger(error);\n }\n };\n\n const resolveActions = potentialActions => {\n potentialActions.forEach(actionCreator => {\n const action = actionCreator();\n checkAndAdd(action);\n });\n return {\n primaryAction,\n secondaryActions\n };\n };\n\n let actionsForItem = [];\n\n switch (pageName) {\n case PAGE_NAMES.SellerSold:\n actionsForItem = resolveActions(\n soldActions(\n purchaseOrder,\n listViewType,\n memberMessagingParticipation\n )\n );\n break;\n case PAGE_NAMES.BuyerPurchases:\n actionsForItem = resolveActions(\n boughtActions(purchaseOrder, listViewType)\n );\n break;\n }\n return actionsForItem;\n};\n","import { selectMyTraderaItemsState } from '../reducers/my-tradera-items';\nimport { selectCookiesState } from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectRouterState } from 'tradera-apps/my-tradera/app/state/selectors/router';\nimport { getActionsForPurchaseOrder } from '../selectors/purchase-actions';\n\nexport const selectPurchaseOrderState = state => {\n const listViewType = selectCookiesState(state).LIST_VIEW_TYPE;\n const memberMessagingParticipation = selectMyTraderaState(state)\n .memberMessagingParticipation;\n const pageName =\n selectMyTraderaState(state).page &&\n selectMyTraderaState(state).page[\n selectRouterState(state).location.pathname\n ]?.pageName;\n\n const purchaseOrders = state.views.myTradera.purchaseOrder.purchaseOrders.map(\n purchaseOrder => {\n const rows = selectMyTraderaItemsState(state).itemsOrderedByID.map(\n id => {\n return state.views.myTradera.myTraderaItems.itemsByID[id];\n }\n );\n return {\n ...purchaseOrder,\n actions: getActionsForPurchaseOrder(\n purchaseOrder,\n listViewType,\n memberMessagingParticipation,\n pageName\n ),\n rows: rows.filter(\n row =>\n row.transaction.purchaseOrderId ===\n purchaseOrder.purchaseOrderId\n )\n };\n }\n );\n return {\n ...state.views.myTradera.purchaseOrder,\n purchaseOrders\n };\n};\n","import qs from 'qs';\n\nexport const waitForBackend = () => {\n let waitForBackend = false;\n if (window.location.search) {\n const searchParams = qs.parse(window.location.search.replace('?', ''));\n waitForBackend = !!searchParams.updateditems;\n }\n return waitForBackend;\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport myTraderaItemActions from '../../state/actions/my-tradera-items';\nimport purchaseOrderActions from '../../state/actions/purchase-order';\nimport { getInitialFilters } from '../../helpers/payloads/initial-payload';\nimport { setFiltersForSelectedPage } from '../../state/actions/filters';\nimport { LIST_VIEW_TYPES, PAGE_LIST_TYPES } from '../../constants/list-types';\nimport featureToggles, {\n errors as featureToggleErrors\n} from '../../utils/feature-toggles';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { useDayJs } from 'tradera-hooks/use-day-js';\nimport {\n openChangeShipping,\n error,\n selectMyTraderaState\n} from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectMyTraderaItemsState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera-items';\nimport {\n selectCookiesState,\n setCookie\n} from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport { selectFiltersState } from 'tradera-apps/my-tradera/app/state/selectors/filters';\nimport { selectPurchaseOrderState } from 'tradera-apps/my-tradera/app/state/selectors/purchase-order';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { waitForBackend } from '../../helpers/payloads/wait-for-backend';\nimport {\n removeHashFromUrl,\n shouldMarkAsPaid,\n shouldOpenChangeCombinedShippingModal,\n shouldShowRequestedCombinedShippingToast,\n URL_HASHES\n} from 'tradera-apps/tradera/components/vip/helpers/navigation-helper';\nimport { showSuccessToast } from 'tradera-services/toasts';\n\nconst modifyHistory = (match, history) => {\n return !(history.action === 'POP' && match.params.length > 0); // When using back button from a list to another (ie from \"sold\" to \"not sold\"), we should not modify the history object\n};\n\nconst defaultPayload = () => {\n return {\n filters: {\n modifiers: {\n query: {},\n paging: {}\n },\n filterBar: null,\n shownFilters: null\n }\n };\n};\n\n// eslint-disable-next-line react/display-name\nconst withPageInit = (Component, initialPayload = defaultPayload) => props => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n const dayjs = useDayJs();\n\n const state = {\n filters: useSelector(selectFiltersState),\n myTradera: useSelector(selectMyTraderaState),\n\n myTraderaItems: useSelector(selectMyTraderaItemsState),\n breakpoint: useSelector(selectMyTraderaState).breakpoint || {},\n page:\n useSelector(selectMyTraderaState).page[props.location.pathname] ||\n false,\n purchaseOrder: useSelector(selectPurchaseOrderState),\n sellerEmail: useSelector(state => state.member.memberEmail)\n };\n\n const stateCookies = useSelector(selectCookiesState);\n const { isCombinedShippingEnabled } = state.myTradera;\n const [pageListType, setPageListType] = useState();\n const { match } = props;\n const { LIST_VIEW_TYPE } = stateCookies;\n\n const listViewTypeWithFallBack =\n stateCookies['LIST_VIEW_TYPE_' + state.page.listType] || LIST_VIEW_TYPE;\n const listViewType = stateCookies['LIST_VIEW_TYPE_' + state.page.listType];\n\n useEffect(() => {\n let initialState = initialPayload ? initialPayload(t) : null;\n\n if (!featureToggles.isMyTraderaElasticEnabled) {\n dispatch(error(featureToggleErrors.ELASTIC_MYTRADERA));\n }\n\n if (initialState) {\n dispatch(\n setFiltersForSelectedPage(\n getInitialFilters(initialState.filters)\n )\n );\n }\n }, [dispatch, t]);\n\n useEffect(() => {\n const getPurchaseOrderIdFromHash = hash =>\n document.location.hash.split(hash)[1];\n\n const removeHashAndSetNormalList = () => {\n removeHashFromUrl();\n dispatch(\n setCookie({\n name: `LIST_VIEW_TYPE_${state.page.listType}`,\n value: LIST_VIEW_TYPES.NORMAL\n })\n );\n };\n\n const changeShippingPurchaseOrderId = getPurchaseOrderIdFromHash(\n URL_HASHES.openChangeCombinedShippingModal\n );\n if (\n shouldOpenChangeCombinedShippingModal() &&\n changeShippingPurchaseOrderId\n ) {\n dispatch(openChangeShipping(changeShippingPurchaseOrderId));\n removeHashAndSetNormalList();\n }\n\n const markAsPaidPurchaseOrderId = getPurchaseOrderIdFromHash(\n URL_HASHES.markAsPaid\n );\n if (shouldMarkAsPaid() && markAsPaidPurchaseOrderId) {\n dispatch(\n purchaseOrderActions.updatePurchaseOrderPaidBySeller(\n markAsPaidPurchaseOrderId,\n state.page.listType,\n false,\n true\n )\n );\n removeHashAndSetNormalList();\n }\n\n if (shouldShowRequestedCombinedShippingToast()) {\n showSuccessToast(\n 'checkout_shipping_requestCombinedShippingPriceInfo',\n 'checkout_shipping_combinedShippingPriceRequested'\n );\n removeHashAndSetNormalList();\n }\n }, [dispatch, state.page.listType]);\n\n const setDefaultListViewType = useCallback(() => {\n if (window.location.search.length !== 0) {\n return null;\n }\n if (\n state.page.listType === PAGE_LIST_TYPES.BUYER_PURCHASES &&\n !listViewType\n ) {\n return dispatch(\n setCookie({\n name: `LIST_VIEW_TYPE_${state.page.listType}`,\n value: LIST_VIEW_TYPES.NORMAL\n })\n );\n }\n if (\n isCombinedShippingEnabled &&\n (state.page.listType === PAGE_LIST_TYPES.SELLER_SOLD ||\n state.page.listType === PAGE_LIST_TYPES.BUYER_PURCHASES) &&\n !listViewType\n ) {\n return dispatch(\n setCookie({\n name: `LIST_VIEW_TYPE_${state.page.listType}`,\n value: LIST_VIEW_TYPES.NORMAL\n })\n );\n }\n if (\n state.page.listType !== PAGE_LIST_TYPES.SELLER_SOLD &&\n state.page.listType !== PAGE_LIST_TYPES.BUYER_PURCHASES &&\n !listViewType\n ) {\n return dispatch(\n setCookie({\n name: 'LIST_VIEW_TYPE',\n value: LIST_VIEW_TYPES.BASIC\n })\n );\n }\n }, [\n dispatch,\n state.page.listType,\n isCombinedShippingEnabled,\n listViewType\n ]);\n\n useEffect(() => {\n setDefaultListViewType();\n }, [setDefaultListViewType]);\n\n useEffect(() => {\n setPageListType(state.page.listType);\n }, [state.page.listType]);\n\n const getData = useCallback(() => {\n const shouldWaitForBackend = waitForBackend();\n if (!pageListType) {\n return null;\n }\n if (listViewTypeWithFallBack === LIST_VIEW_TYPES.NORMAL) {\n return dispatch(\n purchaseOrderActions.runPurchaseOrders({\n page: state.page,\n shouldScrollToInitialScroll: false,\n listViewType: listViewTypeWithFallBack,\n waitForBackend: shouldWaitForBackend,\n dontModifyHistory: !modifyHistory(match, history),\n dayjs\n })\n );\n }\n return dispatch(\n myTraderaItemActions.runSearch(\n state.page,\n false,\n listViewTypeWithFallBack,\n shouldWaitForBackend,\n !modifyHistory(match, history)\n )\n );\n }, [\n dispatch,\n state.page,\n pageListType,\n listViewTypeWithFallBack,\n match,\n dayjs\n ]);\n\n useEffect(() => {\n getData();\n }, [pageListType, getData]);\n\n const cookies = {\n ...stateCookies,\n LIST_VIEW_TYPE: listViewTypeWithFallBack\n };\n\n return (\n \n );\n};\n\nexport default withPageInit;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { BREAKPOINT_SIZES } from 'tradera-constants/breakpoints';\nimport {\n selectMyTraderaState,\n setBreakPoint\n} from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\n\nconst MakeResponsive = ComposedComponent => {\n class Responsive extends React.Component {\n constructor(props) {\n super(props);\n this.removeMediaQueries = [];\n }\n\n componentDidMount() {\n if (window.matchMedia) {\n this.addMediaQueries();\n }\n }\n\n componentWillUnmount() {\n if (window.matchMedia && this.removeMediaQueries) {\n this.removeMediaQueries.forEach(removeMediaQuery =>\n removeMediaQuery()\n );\n }\n }\n\n setBreakPoint = breakpoint => {\n this.props.dispatch(setBreakPoint(breakpoint));\n };\n\n addMediaQueries = () => {\n for (let breakpoint of Object.values(BREAKPOINT_SIZES)) {\n const matchMedia = window.matchMedia(\n `screen and (min-width: ${breakpoint.min}px) and (max-width: ${breakpoint.max}px)`\n );\n if (matchMedia.matches) {\n this.setBreakPoint(breakpoint);\n }\n const handleMediaChange = val => {\n if (val.matches) {\n this.setBreakPoint(breakpoint);\n }\n };\n // addListener is an alias for addEventListener https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/addListener\n matchMedia.addListener(handleMediaChange);\n this.removeMediaQueries.push(() => {\n matchMedia.removeListener(handleMediaChange);\n });\n }\n };\n\n render() {\n return ;\n }\n }\n\n const mapStateToProps = state => ({\n breakpoint: selectMyTraderaState(state).breakpoint\n });\n\n return connect(mapStateToProps)(Responsive);\n};\n\nexport default MakeResponsive;\n","//@ts-check --jsx\nimport React from 'react';\nimport throttle from 'underscore/modules/throttle';\n\nconst MakeSticky = ComposedComponent =>\n class Sticky extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n sticky: false,\n height: null\n };\n this.onScroll = this.onScroll.bind(this);\n this.onScrollThrottled = throttle(this.onScroll, props.wait || 0);\n }\n\n componentDidMount() {\n window.addEventListener('scroll', this.onScrollThrottled, false);\n }\n\n componentWillUnmount() {\n this.doc = null;\n window.removeEventListener('scroll', this.onScrollThrottled, false);\n }\n\n onScroll() {\n this.doc = document.documentElement;\n if (!this.el) {\n return;\n }\n const position = this.el.getBoundingClientRect();\n if (!this.state.height && position.height) {\n this.setState({\n height: position.height\n });\n }\n // const top = (window.pageYOffset || this.doc.scrollTop) - (this.doc.clientTop || 0);\n if (position && position.top <= 0) {\n if (!this.state.sticky) {\n this.setState({\n sticky: true\n });\n }\n } else {\n if (this.state.sticky) {\n this.setState({\n sticky: false\n });\n }\n }\n }\n\n render() {\n let { position, zIndex } = this.props;\n\n //return before doing anything, we don't know how to make the element sticky.\n if (!position) {\n return null;\n }\n\n const positions = {\n top: 'sticky-top',\n bottom: 'sticky-bottom'\n };\n\n const getStickyClasses = () =>\n this.state.sticky ? `myt-sticky ${positions[position]}` : '';\n const wrapperStyles = {\n height: this.state.height ? this.state.height : 'auto'\n };\n const stickyStyles = {\n zIndex: zIndex ? zIndex : 10\n };\n\n return (\n <>\n (this.el = el)}\n style={wrapperStyles}>\n \n \n \n \n \n );\n }\n };\n\nexport default MakeSticky;\n","import { isSwedenCountryNameOrUndefined } from 'tradera-utils/countrycode';\n\nexport const selectViewItem = state => state.views.viewItem;\n\nexport const selectTranslatedDescription = state =>\n state.views.viewItem.translatedDescription || null;\n\nexport const selectItemDetails = state => selectViewItem(state).itemDetails;\n\nexport const selectBreadcrumbs = state => selectViewItem(state).breadCrumbs;\n\nexport const selectItemId = state => selectItemDetails(state)?.itemId;\n\nexport const selectBidInfo = state => selectViewItem(state).bidInfo;\n\nexport const selectAllowedBuyerRegionOutsideSweden = state =>\n selectItemDetails(state)?.allowedBuyerRegion &&\n !isSwedenCountryNameOrUndefined(\n selectItemDetails(state).allowedBuyerRegion\n );\n\nexport const selectTranslatedDescriptionState = state =>\n selectViewItem(state).translatedDescriptionState;\n","export const formatPrice = price => {\n const format = formatMe =>\n formatMe.toLocaleString('sv', {\n symbol: ' kr',\n symbolPosition: 'end',\n decimal: ',',\n comma: '.'\n });\n return typeof price !== 'number'\n ? `${format(parseInt(price))} kr`\n : `${format(price)} kr`;\n};\n\nexport const formatShippingPrice = (price, t) => {\n if (price === 0) {\n return t('myt_itemCard_free_Shipping');\n } else {\n return formatPrice(price);\n }\n};\n","import React from 'react';\nimport RatingPositiveIcon from '@tradera/blueprint/theme/icons2/rating-positive.svg?jsx';\nimport RatingNegativeIcon from '@tradera/blueprint/theme/icons2/rating-negative.svg?jsx';\n\nconst nonActiveButtonClasses = 'btn btn-light btn-lg btn-round border';\nconst activeButtonClasses = 'btn btn-lg btn-round';\n\nconst _Happy = ({ active, className = '', onClick }) => (\n \n \n \n);\n\nconst _Sad = ({ active, className = '', onClick }) => (\n \n \n \n);\n\nexport const Happy = React.memo(_Happy);\nexport const Sad = React.memo(_Sad);\n","// extracted by mini-css-extract-plugin\nexport default {\"figure\":\"figure--3epop\",\"red\":\"red----iUA\",\"green\":\"green--31wnP\",\"grey-soft\":\"grey-soft--3B9wq\",\"greySoft\":\"grey-soft--3B9wq\",\"grey-hard\":\"grey-hard--3KnOi\",\"greyHard\":\"grey-hard--3KnOi\",\"blue\":\"blue--1s_-z\"};","import React from 'react';\nimport styles from './figure.module.scss';\n\nconst Caption = ({ color, className = '', text }) => {\n return (\n \n {text}\n \n );\n};\n\nexport const Figure = ({\n className = '',\n imageUrl,\n title,\n captionText,\n captionColor\n}) => {\n return (\n \n {title}\n \n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"rating-button\":\"rating-button--3AWTI\",\"ratingButton\":\"rating-button--3AWTI\",\"rating-color1\":\"rating-color1--2vIUS\",\"ratingColor1\":\"rating-color1--2vIUS\",\"rating-color2\":\"rating-color2--2sNAQ\",\"ratingColor2\":\"rating-color2--2sNAQ\",\"rating-color3\":\"rating-color3--T0NBU\",\"ratingColor3\":\"rating-color3--T0NBU\",\"rating-color4\":\"rating-color4--Qbqs7\",\"ratingColor4\":\"rating-color4--Qbqs7\",\"rating-color5\":\"rating-color5--2Ovw4\",\"ratingColor5\":\"rating-color5--2Ovw4\"};","import React from 'react';\nimport styles from './rating.module.scss';\n\nconst _Rating = ({ selectedRating = 0, onRatingClicked }) => {\n return (\n
    \n {[...Array(5)]\n .map((e, i) => i + 1)\n .map(number => (\n onRatingClicked(number)}\n className={`btn border ${styles.ratingButton}\n ${\n selectedRating === number\n ? styles['ratingColor' + number]\n : 'bg-white'\n }`}>\n {number}\n \n ))}\n
\n );\n};\nexport const Rating = React.memo(_Rating);\n","// extracted by mini-css-extract-plugin\nexport default {\"detailedRating\":\"detailedRating--EQ0ij\"};","import React from 'react';\nimport { Rating } from './rating';\nimport styles from './detailed-rating.module.scss';\n\nconst _DetailedRating = ({\n children,\n className = '',\n onRatingClicked,\n ratingDescriptions = [],\n selectedRating = 0,\n title\n}) => {\n const ratingDescriptionExist =\n ratingDescriptions.length > 0 &&\n ratingDescriptions.length >= selectedRating;\n const ratingDescription = ratingDescriptionExist\n ? ratingDescriptions[selectedRating - 1]\n : null;\n\n return (\n
\n
{title}
\n \n {ratingDescription && (\n

\n {ratingDescription}\n

\n )}\n {children}\n
\n );\n};\nexport const DetailedRating = React.memo(_DetailedRating);\n","const namespace = 'FEEDBACKS';\nexport const ACTION_TYPES = {\n SET_FEEDBACKS: `${namespace}/SET_FEEDBACKS`,\n TOGGLE_IS_POSITIVE: `${namespace}/TOGGLE_IS_POSITIVE`,\n SET_IS_POSITIVE: `${namespace}/SET_IS_POSITIVE`,\n SET_IS_ITEM_NOT_RECEIVED: `${namespace}/SET_IS_ITEM_NOT_RECEIVED`,\n SET_COMMENT: `${namespace}/SET_COMMENT`,\n SET_RATING: `${namespace}/SET_RATING`\n};\n\nexport const setFeedbacks = payload => ({\n type: ACTION_TYPES.SET_FEEDBACKS,\n payload\n});\n\n/**\n * If previously null, isPositive value becomes the given value.\n * If previously true, isPositive becomes null if given true or false if given false.\n * If previously false, isPositive becomes null if given false or true if given true.\n * @param {*} transactionId\n * @param {*} isPositive\n * @returns\n */\nexport const toggleIsPositive = (transactionId, isPositive) => ({\n type: ACTION_TYPES.TOGGLE_IS_POSITIVE,\n payload: { transactionId, isPositive }\n});\n\nexport const setComment = (transactionId, comment) => ({\n type: ACTION_TYPES.SET_COMMENT,\n payload: { transactionId, comment }\n});\n\nexport const setRating = (transactionId, ratingName, rating) => ({\n type: ACTION_TYPES.SET_RATING,\n payload: { transactionId, rating, ratingName }\n});\n\nexport const setItemNotReceived = (transactionId, isItemNotReceived) => ({\n type: ACTION_TYPES.SET_IS_ITEM_NOT_RECEIVED,\n payload: { transactionId, isItemNotReceived }\n});\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport AlertIcon from '@tradera/blueprint/theme/icons2/alert.svg?jsx';\nimport { setItemNotReceived } from './feedbacks-actions';\n\nconst _ItemNotReceived = ({ dispatch, isItemNotReceived, transactionId }) => {\n const { t } = useTranslator();\n const checkboxId = `inr-checkbox-${transactionId}`;\n return (\n
\n
\n \n
{t('leaveFeedback_inrHeading')}
\n
\n\n

{t('leaveFeedback_inrText')}

\n
\n \n dispatch(\n setItemNotReceived(\n transactionId,\n !isItemNotReceived\n )\n )\n }\n checked={isItemNotReceived}\n />\n \n
\n
\n );\n};\nexport const ItemNotReceived = React.memo(_ItemNotReceived);\n","import React from 'react';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport AlertIcon from '@tradera/blueprint/theme/icons2/alert.svg?jsx';\n\nconst _UnpaidItem = ({ unpaidItemUrl }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
\n
\n \n
{t('leaveFeedback_upiHeading')}
\n
\n\n

\n \n {t('leaveFeedback_upiLink')}\n \n

\n
\n );\n};\nexport const UnpaidItem = React.memo(_UnpaidItem);\n","// extracted by mini-css-extract-plugin\nexport default {\"commentInput\":\"commentInput--2nFgi\"};","import React, { useRef, useState, useEffect } from 'react';\n\nexport const AutoHeightTextArea = props => {\n const textAreaRef = useRef(null);\n const [text, setText] = useState('');\n const [textAreaHeight, setTextAreaHeight] = useState('auto');\n const [parentHeight, setParentHeight] = useState('auto');\n\n useEffect(() => {\n setParentHeight(`${textAreaRef.current.scrollHeight}px`);\n setTextAreaHeight(`${textAreaRef.current.scrollHeight}px`);\n }, [text, textAreaRef]);\n\n const onChangeHandler = event => {\n setTextAreaHeight('auto');\n setParentHeight(`${textAreaRef.current.scrollHeight}px`);\n setText(event.target.value);\n\n if (props.onChange) {\n props.onChange(event);\n }\n };\n\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport { setComment } from './feedbacks-actions';\nimport styles from './comment-input.module.scss';\nimport { AutoHeightTextArea } from 'tradera-components/form-controls/auto-height-text-area';\n\nexport const CommentInput = ({\n className = '',\n dispatch,\n value,\n transactionId\n}) => {\n return (\n {\n if (evt.key === 'Enter') {\n evt.preventDefault();\n }\n }}\n onChange={evt => {\n dispatch(setComment(transactionId, evt.target.value));\n }}\n />\n );\n};\n","import {\n MAX_COMMENT_LENGTH,\n MAX_RATING_VALUE,\n MIN_RATING_VALUE,\n RATING_SETTINGS,\n RATING_NAMES_BUYER,\n RATING_NAMES_SELLER,\n UNSET_RATING_VALUE\n} from './constants';\n\nexport const togglePositive = (previous, isPositive) => {\n let result;\n if (previous === null) {\n result = isPositive;\n } else {\n result = previous === isPositive ? null : isPositive;\n }\n return result;\n};\n\nexport const createFeedbackPayload = (\n itemId,\n memberId,\n transactionId,\n ratingNames\n) => {\n const ratings = {};\n ratingNames.forEach(name => {\n ratings[name] = MAX_RATING_VALUE;\n });\n return {\n comment: '',\n ratings,\n inr: false,\n transactionId: transactionId,\n isPositive: null,\n itemId: itemId,\n memberId: memberId\n };\n};\n\nexport const createFeedbackPayloadsMap = (groups, isBuyer) => {\n const ratingNames = isBuyer ? RATING_NAMES_BUYER : RATING_NAMES_SELLER;\n const feedbacks = {};\n groups.map(group => {\n group.items.map(item => {\n const feedback = createFeedbackPayload(\n item.itemId,\n item.memberId,\n item.transactionId,\n ratingNames\n );\n feedbacks[item.transactionId] = feedback;\n });\n });\n return feedbacks;\n};\n\nexport const getRatingSettings = isBuyer => {\n const ratingNames = isBuyer ? RATING_NAMES_BUYER : RATING_NAMES_SELLER;\n return ratingNames.map(ratingName => RATING_SETTINGS[ratingName]);\n};\n\nexport const isCommentTooLong = comment =>\n comment.trim().length > MAX_COMMENT_LENGTH;\nexport const isCommentWithLinebreaks = comment => !!comment.match(/\\r|\\n/);\nexport const isPositiveOrNegative = feedback => feedback.isPositive !== null;\nexport const isAllRatingsValid = feedback =>\n Object.values(feedback.ratings).every(\n value => value === UNSET_RATING_VALUE || value >= MIN_RATING_VALUE\n );\n\nexport const isValidFeedback = feedback =>\n isAllRatingsValid(feedback) &&\n !isCommentTooLong(feedback.comment) &&\n !isCommentWithLinebreaks(feedback.comment) &&\n isPositiveOrNegative(feedback);\n\nexport const getValidationErrorTranslationKeys = feedback => {\n const result = [];\n if (isCommentWithLinebreaks(feedback.comment)) {\n result.push('leaveFeedback_noLineBreaks');\n }\n return result;\n};\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\nimport { DetailedRating } from './detailed-rating';\nimport { ItemNotReceived } from './item-not-received';\nimport { UnpaidItem } from './unpaid-item';\nimport { setRating } from './feedbacks-actions';\nimport { CommentInput } from './comment-input';\nimport {\n MAX_COMMENT_LENGTH,\n MIN_RATING_VALUE,\n RATING_NAMES\n} from './constants';\nimport {\n isCommentTooLong,\n isCommentWithLinebreaks\n} from './leave-feedback-helper';\n\nexport const Form = ({\n comment,\n dispatch,\n errorMessageTranslationKeys,\n isItemNotReceived,\n transactionId,\n ratingSettings,\n ratingValues,\n unpaidItemUrl\n}) => {\n const { t } = useTranslator();\n const isMobile = useIsMobile();\n const isCommentInvalid =\n isCommentTooLong(comment) || isCommentWithLinebreaks(comment);\n\n const indexOfShippingTime = ratingSettings.findIndex(\n ratingSetting => ratingSetting.name === RATING_NAMES.SHIPPING_TIME\n );\n const showItemNotReceived =\n indexOfShippingTime > -1 &&\n ratingValues[indexOfShippingTime] === MIN_RATING_VALUE;\n\n const indexOfPaymentTime = ratingSettings.findIndex(\n ratingSetting => ratingSetting.name === RATING_NAMES.PAYMENT_TIME\n );\n const showUnpaidItem =\n indexOfPaymentTime > -1 &&\n ratingValues[indexOfPaymentTime] === MIN_RATING_VALUE;\n\n return (\n <>\n
\n
\n
{t('leaveFeedback_leaveComment')}
\n \n {t('leaveFeedback_charsLeft_v2', {\n charsCount: comment.length,\n max: MAX_COMMENT_LENGTH\n })}\n \n
\n {errorMessageTranslationKeys.map(translationKey => (\n

\n {t(translationKey)}\n

\n ))}\n \n
\n
\n {ratingSettings.map((ratingSetting, index) => {\n return (\n t(key)\n )}\n selectedRating={ratingValues[index]}\n onRatingClicked={value =>\n dispatch(\n setRating(\n transactionId,\n ratingSetting.name,\n value\n )\n )\n }>\n {showItemNotReceived &&\n isMobile &&\n indexOfShippingTime === index && (\n \n )}\n {showUnpaidItem &&\n isMobile &&\n indexOfPaymentTime === index && (\n \n )}\n \n );\n })}\n
\n {showItemNotReceived && !isMobile && (\n \n )}\n {showUnpaidItem && !isMobile && (\n \n )}\n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"title--6bE9A\",\"price\":\"price--2QiBg\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ALink from 'tradera-components/alink';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\nimport styles from './details-and-price.module.scss';\n\nexport const DetailsAndPrice = ({\n url,\n title,\n transactionDate,\n memberUrl,\n alias,\n price,\n shippingPrice\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
\n
\n

\n \n {title}\n \n

\n
\n

\n {transactionDate} |{' '}\n \n {alias}\n \n

\n
\n
\n
\n
{price}
\n \n {shippingPrice}\n
\n
\n \n );\n};\n\nDetailsAndPrice.propTypes = {\n url: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n transactionDate: PropTypes.string.isRequired,\n memberUrl: PropTypes.string.isRequired,\n alias: PropTypes.string.isRequired,\n price: PropTypes.string.isRequired,\n shippingPrice: PropTypes.string.isRequired\n};\n","import React from 'react';\nimport { Happy, Sad } from './smiley';\nimport { Figure } from './figure';\nimport { Form } from './form';\nimport { toggleIsPositive } from './feedbacks-actions';\nimport { DetailsAndPrice } from './details-and-price';\n\nexport const _LeaveFeedbackItem = ({\n alias,\n className = '',\n comment = '',\n dispatch,\n errorMessageTranslationKeys,\n imageUrl,\n isItemNotReceived,\n memberUrl,\n price,\n title,\n shippingPrice,\n transactionDate,\n transactionId,\n url,\n isPositive,\n isNegative,\n ratingSettings,\n ratingValues,\n state,\n unpaidItemUrl\n}) => {\n const Image = ({ className = '' }) => (\n \n );\n\n const showForm = isNegative || isPositive;\n\n return (\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n dispatch(toggleIsPositive(transactionId, true))\n }\n />\n \n dispatch(toggleIsPositive(transactionId, false))\n }\n className=\"ml-3\"\n />\n
\n {showForm && (\n \n )}\n
\n
\n );\n};\n\nexport const LeaveFeedbackItem = React.memo(_LeaveFeedbackItem);\n","// extracted by mini-css-extract-plugin\nexport default {\"thinDivider\":\"thinDivider--35UZk\",\"thickDivider\":\"thickDivider--CR6ys\"};","import React from 'react';\nimport styles from './divider.module.scss';\n\nexport const ThinDivider = ({ className = '' }) => (\n
\n);\n\nexport const ThickDivider = ({ className = '' }) => (\n
\n);\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport CheckmarkIcon from '@tradera/blueprint/theme/icons2/check-circle.svg?jsx';\nimport AlertIcon from '@tradera/blueprint/theme/icons2/alert.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\n\nexport const Dialog = ({\n title,\n text,\n icon,\n dismissActionText,\n onDismiss,\n confirmActionText,\n onConfirm\n}) => {\n return (\n \n
\n \n \n
\n

{title}

\n
{icon}
\n

{text}

\n {onConfirm ? (\n
\n \n {confirmActionText}\n \n \n {dismissActionText}\n \n
\n ) : (\n
\n \n {dismissActionText}\n \n
\n )}\n
\n \n );\n};\n\nexport const SubmittedDialog = ({ submittedFeedbackCount, onDismiss }) => {\n const { t } = useTranslator();\n return (\n }\n dismissActionText={t('leaveFeedback_submittedClose')}\n onDismiss={onDismiss}\n />\n );\n};\n\nexport const SubmitErrorDialog = ({ onDismiss }) => {\n const { t } = useTranslator();\n return (\n }\n dismissActionText={t('leaveFeedback_submittedClose')}\n onDismiss={onDismiss}\n />\n );\n};\n\nexport const AlreadySubmittedErrorDialog = ({ onDismiss }) => {\n const { t } = useTranslator();\n return (\n }\n dismissActionText={t('leaveFeedback_errorClose')}\n onDismiss={onDismiss}\n />\n );\n};\n\nexport const ConfirmSubmitDialog = ({\n negativeCount,\n isInMultipleFeedbacksContext = false,\n onConfirm,\n onDismiss\n}) => {\n const { t } = useTranslator();\n return (\n 0\n ? 'leaveFeedback_negativeWarningTextWithCount'\n : 'leaveFeedback_negativeWarningText',\n {\n count: negativeCount\n }\n )}\n text={t('leaveFeedback_negativeDisclaimer')}\n icon={}\n dismissActionText={t('leaveFeedback_negativeWarningAbort')}\n onDismiss={onDismiss}\n confirmActionText={t('leaveFeedback_negativeWarningConfirm')}\n onConfirm={onConfirm}\n />\n );\n};\n","import { ACTION_TYPES } from './feedbacks-actions';\nimport {\n getValidationErrorTranslationKeys,\n isValidFeedback,\n togglePositive\n} from './leave-feedback-helper';\nimport {\n MAX_RATING_VALUE,\n MIN_RATING_VALUE,\n RATING_NAMES,\n UNSET_RATING_VALUE\n} from './constants';\n\nexport const initialState = {\n feedbacks: {},\n submittables: []\n};\n\nconst updateValidationError = state => {\n Object.values(state.feedbacks).forEach(feedback => {\n feedback.errorMessageTranslationKeys = getValidationErrorTranslationKeys(\n feedback\n );\n });\n};\n\nconst updateSubmittables = state => {\n state.submittables = Object.values(state.feedbacks)\n .filter(feedback => isValidFeedback(feedback))\n .map(validFeedback => {\n const feedback = { ...validFeedback };\n delete feedback.errorMessageTranslationKeys;\n return feedback;\n });\n};\n\nconst isAllRatings = (feedback, rating) =>\n Object.values(feedback.ratings).every(value => value === rating);\n\nconst setAllRatings = (feedback, rating) =>\n Object.keys(feedback.ratings).forEach(\n key => (feedback.ratings[key] = rating)\n );\n\nconst resetItemNotReceivedIfNeeded = feedback => {\n if (feedback.ratings[RATING_NAMES.SHIPPING_TIME] !== MIN_RATING_VALUE) {\n feedback.inr = false;\n }\n};\n\nexport const feedbacksReducer = (state, action) => {\n switch (action.type) {\n case ACTION_TYPES.SET_FEEDBACKS: {\n const newState = { ...state, feedbacks: { ...action.payload } };\n updateSubmittables(newState);\n updateValidationError(newState);\n return newState;\n }\n case ACTION_TYPES.TOGGLE_IS_POSITIVE: {\n const { transactionId, isPositive } = action.payload;\n const oldFeedback = state.feedbacks[transactionId];\n const newFeedback = {\n ...oldFeedback,\n isPositive: togglePositive(oldFeedback.isPositive, isPositive)\n };\n\n const shouldSetAllRatings =\n oldFeedback.isPositive === null ||\n isAllRatings(newFeedback, UNSET_RATING_VALUE) ||\n isAllRatings(newFeedback, MAX_RATING_VALUE);\n if (shouldSetAllRatings) {\n setAllRatings(\n newFeedback,\n newFeedback.isPositive\n ? MAX_RATING_VALUE\n : UNSET_RATING_VALUE\n );\n }\n\n const newState = { ...state };\n resetItemNotReceivedIfNeeded(newFeedback);\n newState.feedbacks[transactionId] = newFeedback;\n updateSubmittables(newState);\n updateValidationError(newState);\n return newState;\n }\n case ACTION_TYPES.SET_RATING: {\n const { transactionId, ratingName, rating } = action.payload;\n const oldFeedback = state.feedbacks[transactionId];\n const newRatings = {\n ...oldFeedback.ratings,\n [ratingName]: rating\n };\n const newFeedback = {\n ...oldFeedback,\n ratings: newRatings\n };\n const newState = { ...state };\n resetItemNotReceivedIfNeeded(newFeedback);\n newState.feedbacks[transactionId] = newFeedback;\n updateSubmittables(newState);\n updateValidationError(newState);\n return newState;\n }\n case ACTION_TYPES.SET_COMMENT: {\n const { transactionId, comment } = action.payload;\n const newFeedback = {\n ...state.feedbacks[transactionId],\n comment\n };\n const newState = { ...state };\n resetItemNotReceivedIfNeeded(newFeedback);\n newState.feedbacks[transactionId] = newFeedback;\n updateSubmittables(newState);\n updateValidationError(newState);\n return newState;\n }\n case ACTION_TYPES.SET_IS_ITEM_NOT_RECEIVED: {\n const { transactionId, isItemNotReceived } = action.payload;\n const newFeedback = {\n ...state.feedbacks[transactionId],\n inr: isItemNotReceived\n };\n const newState = { ...state };\n newState.feedbacks[transactionId] = newFeedback;\n updateSubmittables(newState);\n updateValidationError(newState);\n return newState;\n }\n default: {\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const PageHeader = ({ title, actionComponent }) => {\n const hasSecondColumn = !!actionComponent;\n return (\n
\n \n \n {title}\n \n
\n {actionComponent && (\n
\n {actionComponent}\n
\n )}\n
\n );\n};\n\nPageHeader.propTypes = {\n title: PropTypes.node.isRequired,\n actionComponent: PropTypes.node\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslator } from 'tradera-lang/translate';\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\n\nexport const SubmitButton = ({\n isInMultipleFeedbacksContext,\n isSubmitting,\n onClick,\n submittableCount,\n className = ''\n}) => {\n const { t } = useTranslator();\n const submitButtonText = isInMultipleFeedbacksContext\n ? t(\n submittableCount > 0\n ? 'leaveFeedback_submitButton'\n : 'leaveFeedback_submitButton_noSelected',\n {\n count: submittableCount\n }\n )\n : t('leaveFeedback_confirmButton');\n return (\n \n {isSubmitting ? (\n \n ) : (\n \n )}\n\n {submitButtonText}\n \n );\n};\n\nSubmitButton.propTypes = {\n isInMultipleFeedbacksContext: PropTypes.bool.isRequired,\n isSubmitting: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n submittableCount: PropTypes.number.isRequired,\n className: PropTypes.string\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"stickyContainer\":\"stickyContainer--3PMEr\"};","import React from 'react';\nimport { makeSticky } from 'tradera-apps/my-tradera/app/components/hoc';\nimport styles from './sticky-container.module.scss';\n\nconst Container = ({ children, className = '' }) => {\n return (\n
\n {children}\n
\n );\n};\nexport const StickyContainer = makeSticky(Container);\n","// extracted by mini-css-extract-plugin\nexport default {\"leaveFeedbackLayout\":\"leaveFeedbackLayout--3RkUl\",\"loaderContainer\":\"loaderContainer--7G8pB\"};","import React, {\n useCallback,\n useEffect,\n useReducer,\n useState,\n Fragment\n} from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { LocalLoader } from 'tradera-components/loader';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport leaveFeedbackService from 'tradera-apps/my-tradera/app/data/leave-feedback-service';\nimport { LeaveFeedbackItem } from './leave-feedback-item';\nimport { ThinDivider, ThickDivider } from './divider';\nimport {\n AlreadySubmittedErrorDialog,\n SubmittedDialog,\n ConfirmSubmitDialog,\n SubmitErrorDialog\n} from './dialog';\nimport { keepUnique } from 'tradera-utils/array';\nimport {\n createFeedbackPayloadsMap,\n getRatingSettings\n} from './leave-feedback-helper';\nimport { feedbacksReducer, initialState } from './feedbacks-reducer';\nimport { setFeedbacks } from './feedbacks-actions';\nimport { ROLES } from './constants';\nimport {\n Breakpoint,\n BREAKPOINTS\n} from 'tradera-components/breakpoint/breakpoint';\nimport { PageHeader } from './page-header';\nimport { SubmitButton } from './submit-button';\nimport { StickyContainer } from './sticky-container';\nimport styles from './leave-feedback.module.scss';\n\nconst PAGE_SIZE = 10;\n\nconst Layout = ({ renderHeader, children, className = '' }) => (\n
\n
\n {renderHeader && renderHeader()}\n {children}\n
\n
\n);\n\nexport const LeaveFeedback = ({\n isInMultipleFeedbacksContext,\n onDismiss = () => {},\n onDone,\n role,\n transactionIds: givenTransactionIds\n}) => {\n const [transactionIds] = useState(givenTransactionIds);\n const [loadedCount, setLoadedCount] = useState(0);\n const [itemsLeft, setItemsLeft] = useState(0);\n const [groups, setGroups] = useState([]);\n const [isFetching, setIsFetching] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [negativeCount, setNegativeCount] = useState(0);\n const [showSubmitNegativeWarning, setShowSubmitNegativeWarning] = useState(\n false\n );\n const [showSubmittedDialog, setShowSubmittedDialog] = useState(false);\n const [showSubmitErrorDialog, setShowSubmitErrorDialog] = useState(false);\n const [\n showAlreadySubmittedErrorDialog,\n setShowAlreadySubmittedErrorDialog\n ] = useState(false);\n const [{ feedbacks, submittables }, dispatch] = useReducer(\n feedbacksReducer,\n initialState\n );\n const [ratingSettings] = useState(getRatingSettings(role === ROLES.BUYER));\n const nextCount = itemsLeft > PAGE_SIZE ? PAGE_SIZE : itemsLeft;\n const { t } = useTranslator();\n\n useEffect(() => {\n let loadedCount = groups.reduce((acc, group) => {\n return acc + group.items.length;\n }, 0);\n setLoadedCount(loadedCount);\n const feedbacks = createFeedbackPayloadsMap(\n groups,\n role === ROLES.BUYER\n );\n dispatch(setFeedbacks(feedbacks));\n }, [groups, role]);\n\n useEffect(() => {\n const negatives = Object.values(submittables).filter(\n submittable => submittable.isPositive === false\n );\n setNegativeCount(negatives.length);\n }, [submittables]);\n\n const submitOrConfirm = useCallback(() => {\n if (negativeCount > 0) {\n setShowSubmitNegativeWarning(true);\n } else {\n submit(submittables);\n }\n }, [negativeCount, submit, submittables]);\n\n const submit = useCallback(submittables => {\n setIsSubmitting(true);\n const onSuccess = () => {\n setIsSubmitting(false);\n setShowSubmittedDialog(true);\n };\n const onError = () => {\n setIsSubmitting(false);\n setShowSubmitErrorDialog(true);\n };\n leaveFeedbackService.submitData(submittables, onSuccess, onError);\n }, []);\n\n const onFetchAllSuccess = useCallback(data => {\n setGroups(oldGroups => {\n const newGroups = [...oldGroups];\n data.groups.forEach(incomingGroup => {\n const existingGroup = newGroups.find(\n g => g.label === incomingGroup.label\n );\n if (existingGroup) {\n const mayHaveDuplicates = existingGroup.items.concat(\n incomingGroup.items\n );\n existingGroup.items = keepUnique(\n mayHaveDuplicates,\n item => `${item.itemId}${item.transactionId}`,\n false\n );\n } else {\n newGroups.push(incomingGroup);\n }\n });\n return newGroups;\n });\n setItemsLeft(() => data.itemsLeft);\n setIsFetching(false);\n }, []);\n\n const onFetchError = useCallback(data => {\n setIsFetching(false);\n if (\n data.responseJSON.errorCode === 'BuyerFeedbackAlreadyLeft' ||\n data.responseJSON.errorCode === 'SellerFeedbackAlreadyLeft'\n ) {\n setShowAlreadySubmittedErrorDialog(true);\n }\n }, []);\n\n const fetchNext = useCallback(() => {\n leaveFeedbackService.getAllFeedbackItems(\n loadedCount,\n PAGE_SIZE,\n onFetchAllSuccess,\n onFetchError\n );\n }, [loadedCount, onFetchError, onFetchAllSuccess]);\n\n const fetchAll = useCallback(() => {\n setIsFetching(true);\n leaveFeedbackService.getAllFeedbackItems(\n 0,\n PAGE_SIZE,\n onFetchAllSuccess,\n onFetchError\n );\n }, [onFetchAllSuccess, onFetchError]);\n\n const fetchByTransactionIds = useCallback(\n transactionIds => {\n setIsFetching(true);\n leaveFeedbackService.getFeedbackItems(\n transactionIds,\n data => {\n const group = {\n items: data.items\n };\n setGroups(() => {\n return [group];\n });\n setIsFetching(false);\n },\n onFetchError\n );\n },\n [onFetchError]\n );\n\n useEffect(() => {\n setIsFetching(true);\n leaveFeedbackService.setRootUrl(`/my/leave-feedback/${role}/`);\n if (transactionIds.length > 0) {\n fetchByTransactionIds(transactionIds);\n } else {\n fetchAll();\n }\n }, [fetchAll, fetchByTransactionIds, role, transactionIds]);\n\n if (isFetching) {\n return (\n \n \n \n );\n }\n\n const isInDialog = !isInMultipleFeedbacksContext;\n const isSubDialogOpen =\n showAlreadySubmittedErrorDialog ||\n showSubmitNegativeWarning ||\n showSubmittedDialog ||\n showSubmitErrorDialog;\n const showItems = !(isInDialog && isSubDialogOpen);\n const itemsExist = loadedCount > 0;\n return (\n <>\n {showSubmitNegativeWarning && (\n {\n setShowSubmitNegativeWarning(false);\n submit(submittables);\n }}\n onDismiss={() => setShowSubmitNegativeWarning(false)}\n />\n )}\n {showSubmittedDialog && (\n onDone(submittables)}\n />\n )}\n {showSubmitErrorDialog && (\n {\n setShowSubmitErrorDialog(false);\n onDismiss();\n }}\n />\n )}\n {showAlreadySubmittedErrorDialog && (\n {\n setShowAlreadySubmittedErrorDialog(false);\n onDismiss();\n }}\n />\n )}\n {showItems && (\n \n isInMultipleFeedbacksContext && (\n \n \n }\n />\n \n )\n }>\n {isInMultipleFeedbacksContext && (\n \n \n \n \n \n )}\n {!itemsExist &&
{t('leaveFeedback_no_items')}
}\n {itemsExist && (\n \n {groups.map((group, index) => (\n
\n {index > 0 && (\n \n )}\n {group.label && (\n

\n {group.label}\n

\n )}\n {group.items.map((item, index) => {\n const payload =\n feedbacks[item.transactionId];\n if (!payload) {\n return null;\n }\n return (\n \n {index > 0 && (\n \n )}\n \n \n );\n })}\n
\n ))}\n {nextCount > 0 && (\n
\n \n {t('leaveFeedback_showMore', {\n count: nextCount\n })}\n \n
\n )}\n {isInMultipleFeedbacksContext ? (\n \n
\n \n
\n
\n ) : (\n
\n \n onDismiss && onDismiss()\n }>\n \n {t('leaveFeedback_abort')}\n \n \n
\n )}\n \n )}\n \n )}\n \n );\n};\n","/**\n * Returns an array with unique values based on keys provided by the given function.\n */\nexport const keepUnique = (arr, getKey, keepFirst) => {\n if (keepFirst) {\n let seen = new Set();\n return arr.filter(item => {\n let key = getKey(item);\n return seen.has(key) ? false : seen.add(key);\n });\n }\n return [...new Map(arr.map(x => [getKey(x), x])).values()];\n};\n","import $ from 'jquery';\nexport default $.ajax;\n","import qs from 'qs';\n\nexport const URL_HASHES = {\n openBiddingModal: 'bidding',\n saveInWishlist: 'wishlist=1',\n openBinModal: 'bin=1',\n openChangeCombinedShippingModal: 'open_change_combined_shipping=',\n markAsPaid: 'mark_as_paid=',\n hasRequestedCombinedShipping: 'has_requested_combined_shipping='\n};\n\n/**\n * Remove hash and forceRedirect param from url\n */\nexport const removeHashFromUrl = nextRouter => {\n const { forceRedirect, ...otherQueryParams } = qs.parse(location.search, {\n ignoreQueryPrefix: true\n });\n if (document.location.hash.length === 0 && !forceRedirect) {\n return;\n }\n const url =\n location.pathname +\n qs.stringify(otherQueryParams, { addQueryPrefix: true });\n if (nextRouter) {\n nextRouter.replace(url, undefined, { shallow: true });\n } else {\n history.replaceState({}, window.title, url);\n }\n};\n\nexport const shouldOpenBiddingModal = () => {\n if (document.location.hash.includes(URL_HASHES.openBiddingModal)) {\n const { bidding } = qs.parse(document.location.hash.substr(1));\n return bidding ? parseInt(bidding, 10) : 0;\n } else {\n return 0;\n }\n};\n\nexport const shouldSaveInWishlist = () =>\n document.location.hash.includes(URL_HASHES.saveInWishlist);\n\nexport const shouldOpenBinModal = () =>\n document.location.hash.includes(URL_HASHES.openBinModal);\n\nexport const shouldOpenChangeCombinedShippingModal = () =>\n document.location.hash.includes(URL_HASHES.openChangeCombinedShippingModal);\n\nexport const shouldMarkAsPaid = () =>\n document.location.hash.includes(URL_HASHES.markAsPaid);\n\nexport const shouldShowRequestedCombinedShippingToast = () =>\n document.location.hash.includes(URL_HASHES.hasRequestedCombinedShipping);\n\nconst getBaseRedirectUrl = () => {\n // Add random query parameter to force reload when redirecting to this url\n // and only the hash differs\n const queryParams = {\n ...qs.parse(location.search, { ignoreQueryPrefix: true }),\n forceRedirect: Math.round(Math.random() * 100000)\n };\n return (\n location.protocol +\n '//' +\n location.host +\n location.pathname +\n qs.stringify(queryParams, { addQueryPrefix: true })\n );\n};\n\nexport const getBiddingRedirectUrl = amount => {\n const url = getBaseRedirectUrl() + '#' + URL_HASHES.openBiddingModal;\n if (!amount) return url;\n return `${url}=${amount}`;\n};\n\nexport const getWishlistRedirectUrl = () =>\n getBaseRedirectUrl() + '#' + URL_HASHES.saveInWishlist;\n\nexport const getBinRedirectUrl = () =>\n getBaseRedirectUrl() + '#' + URL_HASHES.openBinModal;\n","import { PAGE_LIST_TYPES, PAGE_BULK_ACTIONS } from '../constants/list-types';\n\n/**\n * @param {string} listType\n * @param {object} item\n * @returns {object} 'Bulk Actions' available for the specific list\n */\n\nexport const listActions = (\n listType,\n memberId,\n selectedFilterBar,\n count = 0,\n t\n) => {\n const actions = {\n [PAGE_LIST_TYPES.SELLER_ACTIVE]: () => {\n switch (selectedFilterBar) {\n default:\n return {\n isCheckboxActive: item =>\n item && item.bidInformation.bidCount === 0,\n bulkCssClass: 'danger',\n label: t('myt_action_cancelListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.ACTIVE_CANCEL,\n modal: {\n icon: 'warning',\n heading: t(\n 'myt_action_cancelListingsModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_cancelListingsModalMessage',\n { count: count }\n ),\n confirmButtonText: t(\n 'myt_action_cancelListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_cancelListingsModalCancelButtonText'\n ),\n dismissable: true\n },\n idType: 'itemId'\n };\n }\n },\n\n [PAGE_LIST_TYPES.SELLER_NOT_SOLD]: () => {\n switch (selectedFilterBar) {\n default:\n return {\n isCheckboxActive: item => {\n if (!item) {\n return false;\n }\n if (item.listing.restart.hasRestartedChild) {\n return false;\n }\n return !item.isArchived;\n },\n /*\n * @todo: confirm this\n */\n bulkCssClass: 'primary',\n label: t('myt_action_restartListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.UNSOLD_RESTART,\n modal: {\n heading: t(\n 'myt_action_restartListingsModalHeading',\n { count: count, itemCount: count }\n ),\n dismissable: true,\n wide: true,\n confirmButtonText: t(\n 'myt_action_restartListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_restartListingsModalCancelButtonText'\n ),\n headingCSS: 'messaging-modal-title-with-line',\n messageAlignment: 'left',\n cssClass: false\n },\n idType: 'itemId'\n };\n }\n },\n\n [PAGE_LIST_TYPES.BUYER_ACTIVE_ITEMS]: () => {\n switch (selectedFilterBar) {\n case 'BuyerHidden':\n return {\n isCheckboxActive: item => {\n return (\n (item &&\n item.caller.leadingBidRemoved === true) ||\n (item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id !==\n memberId)\n );\n },\n bulkCssClass: 'primary',\n label: t(\n 'myt_action_showBuyerHiddenActiveListingsLabel'\n ),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_SHOW_ACTIVE,\n modal: {\n heading: t(\n 'myt_action_showBuyerHiddenActiveListingsModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_showBuyerHiddenActiveListingsModalMessage',\n { count: count }\n ),\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n case 'BuyerNotHidden':\n return {\n isCheckboxActive: item => {\n return (\n (item &&\n item.caller?.leadingBidRemoved === true) ||\n (item.bidInformation.leadingBidder &&\n (item.bidInformation.leadingBidder.id !==\n memberId ||\n item.reservePriceReached === false))\n );\n },\n bulkCssClass: 'primary',\n label: t('myt_action_hideListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_HIDE_ACTIVE,\n modal: {\n heading: t('myt_action_hideListingsModalHeading', {\n count: count,\n itemCount: count\n }),\n dismissable: true,\n wide: false,\n icon: 'warning',\n confirmButtonText: t(\n 'myt_action_hideListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_hideListingsModalCancelButtonText'\n ),\n message: t('myt_action_hideListingsModalMessage', {\n count: count\n }),\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n default:\n return undefined;\n }\n },\n\n [PAGE_LIST_TYPES.BUYER_PURCHASES]: () => {\n switch (selectedFilterBar) {\n case 'AllPurchases':\n case 'BuyerNotPaid':\n return {\n isCheckboxActive: item =>\n item &&\n item.transaction &&\n item.transaction.buyerState &&\n item.transaction.buyerState.paid !== true,\n bulkCssClass: 'primary',\n label: t('myt_action_markListingsAsPaidLabel'),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_MARK_PAID,\n modal: {\n heading: t(\n 'myt_action_markListingsAsPaidModalHeading',\n { count: count, itemCount: count }\n ),\n message: '',\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_markListingsAsPaidModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_markListingsAsPaidModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n case 'BuyerHidden':\n return {\n isCheckboxActive: () => {\n return true;\n // return item && (item.caller.leadingBidRemoved === true) || (item.bidInformation.leadingBidder && item.bidInformation.leadingBidder.id !== memberId) ? true : false;\n },\n bulkCssClass: 'primary',\n label: t('myt_action_showBuyerHiddenPurchasesLabel'),\n bulkAction: PAGE_BULK_ACTIONS.PURCHASES_SHOW,\n modal: {\n heading: t(\n 'myt_action_showBuyerHiddenPurchasesModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_showBuyerHiddenPurchasesModalMessage',\n { count: count }\n ),\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_showBuyerHiddenPurchasesModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_showBuyerHiddenPurchasesModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n default:\n return undefined;\n }\n },\n\n [PAGE_LIST_TYPES.BUYER_ITEMS_LOST]: () => {\n switch (selectedFilterBar) {\n case 'ItemsLostNotHidden':\n return {\n isCheckboxActive: () => true,\n bulkCssClass: 'primary',\n label: t('myt_action_hideListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_HIDE_ACTIVE,\n modal: {\n heading: t('myt_action_hideListingsModalHeading', {\n count: count,\n itemCount: count\n }),\n dismissable: true,\n wide: false,\n icon: 'warning',\n confirmButtonText: 'Ja',\n cancelButtonText: 'Nej',\n message: t('myt_action_hideListingsModalMessage', {\n count: count\n }),\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n case 'ItemsLostHidden':\n return {\n isCheckboxActive: () => true,\n bulkCssClass: 'primary',\n label: t(\n 'myt_action_showBuyerHiddenActiveListingsLabel'\n ),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_SHOW_ACTIVE,\n modal: {\n heading: t(\n 'myt_action_showBuyerHiddenActiveListingsModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_showBuyerHiddenActiveListingsModalMessage',\n { count: count }\n ),\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n default:\n return undefined;\n }\n },\n\n default: () => ({})\n };\n\n return actions[listType] ? actions[listType]() : actions['default']();\n};\n","import React, { useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport { localizedDayjs } from 'tradera-utils/date';\n\nexport const useDayJs = () => {\n const preferredLanguageCodeIso2 = useSelector(\n state => state.language.preferred.languageCodeIso2\n );\n const localizedDayjsCallback = useCallback(\n (...args) => localizedDayjs(preferredLanguageCodeIso2)(...args),\n [preferredLanguageCodeIso2]\n );\n return localizedDayjsCallback;\n};\n\nexport const withDayJs = WrappedComponent => {\n const WithDayJs = props => {\n const localizedDayjs = useDayJs();\n return ;\n };\n\n WithDayJs.displayName = `withDayJs(${WrappedComponent.displayName ||\n WrappedComponent.name}`;\n\n return WithDayJs;\n};\n","import { CHANNEL_TAG_GROUPS } from 'tradera-state/push-notifications/constants';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\nimport logger from 'packages/logger';\n\n/**\n * get the urban airship sdk.\n * @returns obj if null then no sdk object available\n */\nexport const getUrbanSdk = () => {\n return new Promise(resolve => {\n // script from urban airship not loaded\n if (!window.UA) {\n return resolve(null);\n }\n\n // is already loaded?\n if (window.UACache) {\n return resolve(window.UACache);\n }\n\n UA.then(async sdk => {\n if (sdk !== null && !sdk.isSupported) {\n sdk = null;\n }\n window.UACache = sdk;\n return resolve(window.UACache);\n }).catch(() => {\n // browser is most likely not supported, return null\n window.UACache = null;\n return resolve(null);\n });\n });\n};\n\nexport const getTagGroupsFromUrbanAirship = async () => {\n try {\n const sdk = await getUrbanSdk();\n if (sdk.channel === null) {\n return null;\n }\n\n // check what tag groups are active\n let tagGroups = {};\n for (const [group, groupTags] of Object.entries(CHANNEL_TAG_GROUPS)) {\n for (const tag of groupTags) {\n tagGroups[group] = sdk.channel.tags.has(tag) === true;\n if (tagGroups[group] === true) {\n break;\n }\n }\n }\n return tagGroups;\n } catch (error) {\n logger(error);\n }\n};\n\nexport const isPushEnabled = getState => {\n const {\n member,\n environment: { featureSwitches }\n } = getState();\n\n // something blocking notifications modal from being shown?\n if (\n !GdprSettings.isFunctionalEnabled() ||\n !member.isLoggedIn ||\n featureSwitches['web-push-notifications'] !== true\n ) {\n return false;\n }\n return true;\n};\n","/**\n * HOW IT WORKS\n *\n * urban airship has something called channels. A tradera member subscribes to a channel to get push notifications.\n * each channel has tags that indicate what kind of push notifications the member wants to receive. In the case of the wish list\n * reminder that particular setting subscribes the user to 2 different notifications: reminder 15 minutes before auction ends\n * and reminder 3 minutes before the auction ends. In order to be able to have 1 push notification setting that subscribes\n * to multiple push notifications at tradera we call these tag groups.\n *\n *\n * Urban airship docs:\n * https://docs.airship.com/reference/libraries/web-notify-sdk/latest/index.html\n *\n * web_version_2:\n * Version 1 of push notifications was just targetted at wish list reminders, 3 min and 15 min. When this release was done\n * the code did subscribe the user to all notifications even though the user only wanted to signup for wish list reminders.\n * Since the app push notifier only sent wishlist reminders for web push it was not a problem that the user was subscribed to all\n * kinds of notifications. In the next release when tradera wanted to offer all sorts of push notifications but wanted the users\n * to on their own sign up then we had to update all the current subscriptions. Since this is not possible via the urban airship\n * to update channels via the REST API and then see the updated reflected in the Web SDK we had to introduce the tag web_version_2\n * that indicates if the user has updated their push notification settings.\n *\n * opt-in dialog sample usage:\n * import uiActions from 'tradera-state/ui/actions';\n * import { MODAL_TYPES } from 'tradera-constants/push-notifications';\n *\n * uiActions.openNotificationOptinModal(\n * MODAL_TYPES.wishlistReminders\n * )\n *\n */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport logger from 'packages/logger';\nimport {\n CHANNEL_TAG_GROUPS,\n MODAL_TYPES\n} from 'tradera-state/push-notifications/constants';\nimport { localStore } from 'utils/storage';\nimport { STORAGE_KEYS } from 'tradera-constants/storage';\nimport {\n getUrbanSdk,\n getTagGroupsFromUrbanAirship,\n isPushEnabled\n} from './helpers';\n\nconst pushNotificationsSlice = createSlice({\n name: 'pushNotifications',\n initialState: {\n enabled: false,\n initDone: false,\n pushSupported: false,\n optedIn: false,\n tagGroups: {\n wishlistReminders: false,\n buyingListingOutbid: false,\n buyingListingWon: false,\n sellingListingFirstBid: false,\n sellingListingAllBids: false,\n sellingListingSold: false,\n sellingPaymentReceived: false\n },\n shownModals: {\n [MODAL_TYPES.wishlistReminders]: false,\n [MODAL_TYPES.default]: false,\n [MODAL_TYPES.selling]: false\n }\n },\n reducers: {\n setInitDone(state) {\n state.initDone = true;\n },\n setPushSupported(state, actions) {\n state.pushSupported = actions.payload;\n if (!state.pushSupported) {\n state.optedIn = false;\n }\n },\n setOptedInValue(state, action) {\n state.optedIn = action.payload;\n },\n setTagGroupsValue(state, action) {\n const tagGroups = action.payload;\n state.tagGroups = { ...state.tagGroups, ...tagGroups };\n },\n setShownModalTrue(state, action) {\n const modalType = action.payload;\n state.shownModals[modalType] = true;\n localStore.setItem(\n STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS,\n state.shownModals\n );\n },\n setAllShownModals(state, action) {\n const shownModals = action.payload;\n state.shownModals = shownModals;\n localStore.setItem(\n STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS,\n state.shownModals\n );\n },\n setEnabled(state, action) {\n const enabled = action.payload;\n state.enabled = enabled;\n }\n }\n});\n\nconst actions = pushNotificationsSlice.actions;\nexport const { setShownModalTrue } = actions;\nexport default pushNotificationsSlice.reducer;\n\n/**\n * this should be called as soon as the store is mounted\n */\nexport const init = () => async (dispatch, getState) => {\n let sdk = null;\n try {\n sdk = await getUrbanSdk();\n } catch (error) {\n // not able to init sdk\n }\n dispatch(\n actions.setPushSupported(\n sdk !== null && sdk.canRegister && sdk.isSupported\n )\n );\n\n if (sdk !== null && sdk.channel !== null) {\n dispatch(actions.setOptedInValue(sdk.channel.optedIn));\n\n // has this user been upgraded to version 2?\n if (!sdk.channel.tags.has('web_version_2')) {\n await sdk.channel.tags.set([\n 'wishlist_reminder_3_min_optin',\n 'wishlist_reminder_15_min_optin',\n 'web_version_2'\n ]);\n }\n const tagGroups = await getTagGroupsFromUrbanAirship();\n dispatch(actions.setTagGroupsValue(tagGroups));\n }\n dispatch(actions.setEnabled(sdk !== null && isPushEnabled(getState)));\n\n // load modal shown settings from local store\n const shownModals = localStore.getItem(STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS);\n if (shownModals !== null) {\n dispatch(actions.setAllShownModals(shownModals));\n }\n dispatch(actions.setInitDone());\n};\n\nexport const optIn = () => async (dispatch, getState) => {\n try {\n dispatch(actions.setOptedInValue(true));\n const memberId = getState().member.memberId;\n const sdk = await getUrbanSdk();\n const channel = await sdk.register();\n await channel.namedUser.set(memberId.toString());\n return channel;\n } catch (error) {\n dispatch(actions.setOptedInValue(false));\n return null;\n }\n};\n\nexport const optOut = () => async dispatch => {\n try {\n dispatch(actions.setOptedInValue(false));\n const sdk = await getUrbanSdk();\n if (sdk !== null && sdk.channel !== null) {\n await sdk.channel.optOut();\n }\n } catch (error) {\n dispatch(actions.setOptedInValue(true));\n return null;\n }\n};\n\nconst saveTagsToUrbanAirshipAndUpdateState = async (\n channel,\n tagGroups,\n tagGroupValue,\n dispatch,\n getState\n) => {\n // check what tag groups to set and not set\n const tagGroupsToSet = { ...getState().pushNotifications.tagGroups };\n for (let t of tagGroups) {\n tagGroupsToSet[t] = tagGroupValue;\n }\n\n // get the actual tags that we want to get push notifications for and\n // register these tags in urban airship\n let channelTags = ['web_version_2'];\n for (const [group, enabled] of Object.entries(tagGroupsToSet)) {\n if (enabled) {\n channelTags = [...channelTags, ...CHANNEL_TAG_GROUPS[group]];\n }\n }\n\n dispatch(actions.setTagGroupsValue(tagGroupsToSet));\n await channel.tags.set(channelTags);\n};\n\nexport const addTagGroups = tagGroupsToAdd => async (dispatch, getState) => {\n try {\n // no sdk? then do nothing\n const sdk = await getUrbanSdk();\n if (sdk === null) {\n return;\n }\n\n let channel = sdk.channel;\n if (channel === null) {\n channel = await dispatch(optIn());\n if (channel === null) {\n dispatch(actions.setPushSupported(false));\n // seems user clicked on block notifications in the browser, abort\n return;\n }\n }\n\n saveTagsToUrbanAirshipAndUpdateState(\n channel,\n tagGroupsToAdd,\n true,\n dispatch,\n getState\n );\n } catch (error) {\n logger(error);\n }\n};\n\nexport const removeTagGroups = tagGroupsToRemove => async (\n dispatch,\n getState\n) => {\n try {\n // no sdk and no subscription? then do nothing\n const sdk = await getUrbanSdk();\n if (sdk === null || sdk.channel === null) {\n return;\n }\n saveTagsToUrbanAirshipAndUpdateState(\n sdk.channel,\n tagGroupsToRemove,\n false,\n dispatch,\n getState\n );\n } catch (error) {\n logger(error);\n }\n};\n","export default {\n INITIALIZE: 'ADS/INITIALIZE',\n SET_TCF_LOADED: 'ADS/SET_TCF_LOADED',\n SET_ADS: 'ADS/SET_ADS'\n};\n","import {\n formatQueryParams,\n stripItmFromQueryParameters,\n toQueryParameters\n} from 'tradera-utils/url';\nimport cookieUtil from 'tradera-utils/cookie';\n\nimport adsActions from './ads/actions';\nimport uiActions from './ui/actions';\nimport * as pushNotificationActions from './push-notifications/push-notifications-slice';\nimport { initializeFromInitData as initShippingRegion } from './shipping-region/actions';\nimport discoverActions from './discover/actions';\nimport { initEnvironment } from './environment/actions';\nimport { initialize as initLanguage } from './language/reducer';\nimport { initialize as initMember } from './member/actions';\nimport { initialize as initInitData } from './init-data/actions';\nimport { initialize as initMultiCurrency } from './multi-currency/reducer';\nimport itemsActions from './items/actions';\nimport pageActions from './page/actions';\n\n// Views\nimport * as viewItemActions from './views/view-item/reducer';\nimport { handleReportItemModel } from './views/report-item/actions';\nimport { initialize as initStartPage } from './views/start-page/reducer';\nimport { initialize as initTraderaShop } from './views/tradera-shop/actions';\nimport { initializeFromInitData as initializeUiFromInitData } from './ui/initial-state';\n\nexport const initializeState = initData => dispatch => {\n const { isLoggedIn, featureSwitches, currencies, currencyCode } = initData;\n if (initData?.itemNext) {\n // temporary compatibility fix during migration\n // from touchweb backend to nextjs/webapi\n initData.item = initData.itemNext;\n }\n\n const preferredCurrency = isLoggedIn\n ? currencyCode\n : cookieUtil.readCookie('preferred_currency');\n /**\n * handle tcf + gdpr loading\n */\n if (featureSwitches?.['quantcast-consent']) {\n window.addEventListener('tcfLoaded', function() {\n dispatch(adsActions.setTcfLoaded());\n });\n } else {\n dispatch(adsActions.setTcfLoaded());\n }\n dispatch(initializeUiFromInitData(initData));\n dispatch(pushNotificationActions.init());\n dispatch(adsActions.initialize(initData));\n dispatch(initShippingRegion(initData));\n dispatch(initEnvironment(initData));\n dispatch(initLanguage(initData));\n dispatch(initMember(initData));\n dispatch(initInitData(initData));\n dispatch(\n initMultiCurrency({\n currencies,\n enabled: featureSwitches?.['multi-currency'],\n preferredCurrency\n })\n );\n dispatch(itemsActions.initialize(initData));\n dispatch(pageActions.initialize(initData));\n dispatch(initStartPage(initData));\n dispatch(initTraderaShop(initData));\n dispatch(uiActions.fetchSystemMessages());\n dispatch(discoverActions.initialize());\n\n /**\n * We hydrate the store with discover results from initData\n * this will be dispatched before any rendering to reduce the time from first byte to first render.\n */\n if (initData?.discoverResponse) {\n dispatch(\n discoverActions.receiveSearchResults({\n endpoint: window.location.pathname,\n queryParams: stripItmFromQueryParameters(\n formatQueryParams(toQueryParameters(window.location.search))\n ),\n result: initData.discoverResponse\n })\n );\n } else if (initData?.item) {\n dispatch(\n viewItemActions.handleItemModel(initData.item, initData.memberId)\n );\n } else if (initData?.reportItem) {\n dispatch(handleReportItemModel(initData.reportItem));\n } else if (initData?.traderaShopProduct) {\n dispatch(\n adsActions.setAds(\n initData.traderaShopProduct.item.reduxContainer.ads\n )\n );\n }\n};\n","import actionTypes from './action-types';\n\nexport const initialize = initData => ({\n type: actionTypes.INITIALIZE,\n payload: initData\n});\n\nexport const defaultAction = data => ({\n type: actionTypes.DEFAULT_ACTION,\n payload: data\n});\n","/**\n * Count the number of system messages that should cause alerts and badges\n *\n * @param {object} systemMessages\n * @returns {number}\n */\nconst getSystemMessageAlertCount = (systemMessages = {}) => {\n return (\n (systemMessages.InvoiceOverdue ? 1 : 0) +\n (systemMessages.PayoutFailed ? 1 : 0) +\n (systemMessages.PayoutReadyBankAccountMissing ? 1 : 0) +\n (systemMessages.SwishNumberMissing ? 1 : 0) +\n (systemMessages.HyperwalletPayeeVerificationRequired ? 1 : 0)\n );\n};\n\nexport { getSystemMessageAlertCount };\n","import CONSTANTS from 'tradera-constants/state';\nimport { cache, CACHE_KEYS } from 'tradera-utils/cache';\nimport actionTypes from './action-types';\nimport { getInitialBadges, getInitialState } from './initial-state';\nimport { getSystemMessageAlertCount } from './helpers';\n\nconst MESSAGING_NOTIFICATIONS_CACHE_TTL = 30 * 1000;\n\nexport default (state = getInitialState({}), action) => {\n const toggleHeaderSearch = () => ({\n ...state,\n showHeaderSearch:\n action.payload === undefined\n ? !state.showHeaderSearch\n : !!action.payload\n });\n\n const openGdprModal = () => ({\n ...state,\n gdpr: {\n ...state.gdpr,\n modalOpen: true\n }\n });\n\n const closeGdprModal = () => ({\n ...state,\n gdpr: {\n ...state.gdpr,\n modalOpen: false\n }\n });\n\n const openGdprSettings = () => ({\n ...state,\n gdpr: {\n ...state.gdpr,\n settingsOpen: true\n }\n });\n\n const closeGdprSettings = () => ({\n ...state,\n gdpr: {\n ...state.gdpr,\n settingsOpen: false\n }\n });\n\n const openQuickView = () => {\n const {\n itemIds = state.quickView.itemIds,\n itemId = state.quickView.itemId\n } = action.payload;\n return {\n ...state,\n quickView: {\n ...state.quickView,\n open: CONSTANTS.MODAL.OPEN,\n itemIds: itemIds,\n currentItem: itemId\n }\n };\n };\n\n const closeQuickView = () => {\n return {\n ...state,\n quickView: {\n ...state.quickView,\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const loadingQuickView = () => {\n return {\n ...state,\n quickView: {\n ...state.quickView,\n loading: action.payload\n }\n };\n };\n\n const openVideoModal = () => {\n const {\n videoUrl,\n title,\n pageType,\n buttonLink,\n buttonText\n } = action.payload;\n return {\n ...state,\n videoModal: {\n ...state.videoModal,\n open: CONSTANTS.MODAL.OPEN,\n videoUrl,\n title,\n pageType,\n buttonLink,\n buttonText\n }\n };\n };\n\n const closeVideoModal = () => {\n return {\n ...state,\n videoModal: {\n ...state.videoModal,\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const openYoutubeVideoModal = () => {\n const { videoId, title, pageType } = action.payload;\n return {\n ...state,\n youtubeVideoModal: {\n ...state.youtubeVideoModal,\n open: CONSTANTS.MODAL.OPEN,\n videoId: videoId,\n title: title,\n pageType: pageType\n }\n };\n };\n\n const closeYoutubeVideoModal = () => {\n return {\n ...state,\n youtubeVideoModal: {\n ...state.youtubeVideoModal,\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n /*\n Changes made to messaging modal will affect My Tradera as well!\n TODO - test this!\n */\n const openMessagingModal = () => {\n const {\n title = state.messagingModal.title,\n src = state.messagingModal.src,\n participating = state.messagingModal.participating,\n recipientId = state.messagingModal.recipientId,\n item = state.messagingModal.item\n } = action.payload;\n return {\n ...state,\n messagingModal: {\n open: CONSTANTS.MODAL.OPEN,\n title: title,\n src: src,\n participating: participating,\n recipientId: recipientId,\n item: item\n }\n };\n };\n\n const closeMessagingModal = () => {\n return {\n ...state,\n messagingModal: {\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const openNotificationOptinModal = () => {\n const {\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n } = action.payload;\n return {\n ...state,\n notificationOptinModal: {\n open: CONSTANTS.MODAL.OPEN,\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n }\n };\n };\n\n const closeNotificationOptinModal = () => {\n return {\n ...state,\n notificationOptinModal: {\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const openModal = () => {\n const { modalId, data } = action.payload;\n return {\n ...state,\n modals: {\n currentModal: modalId,\n currentModalData: data\n }\n };\n };\n\n const closeModal = () => {\n return {\n ...state,\n modals: {\n currentModal: null,\n currentModalData: null\n }\n };\n };\n\n const itemLayout = () => {\n if (state.itemLayout === action.payload) {\n return state;\n } else {\n return {\n ...state,\n itemLayout: action.payload\n };\n }\n };\n\n const siteLayout = () => {\n if (state.siteLayout === action.payload) {\n return state;\n } else {\n return {\n ...state,\n siteLayout: action.payload\n };\n }\n };\n\n const updateSystemMessages = () => {\n return {\n ...state,\n systemMessages: {\n ...state.systemMessages,\n ...action.payload\n },\n badges: {\n ...state.badges,\n system: getSystemMessageAlertCount(action.payload)\n }\n };\n };\n\n const updateMessagingNotifications = () => {\n cache.write(\n CACHE_KEYS.MESSAGING_BADGES,\n action.payload,\n MESSAGING_NOTIFICATIONS_CACHE_TTL\n );\n return {\n ...state,\n badges: {\n ...state.badges,\n messaging: action.payload\n }\n };\n };\n\n const openProfileMenu = () => {\n const { payload } = action;\n return {\n ...state,\n profileMenu: {\n open: CONSTANTS.MODAL.OPEN,\n redirectUrl: payload || false\n }\n };\n };\n\n const closeProfileMenu = () => {\n return {\n ...state,\n profileMenu: {\n ...state.profileMenu,\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const openCategoryDropdownMenu = () => {\n return {\n ...state,\n categoryDropdownMenu: {\n open: CONSTANTS.MODAL.OPEN\n }\n };\n };\n\n const closeCategoryDropdownMenu = () => {\n return {\n ...state,\n categoryDropdownMenu: {\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const openSearchForm = () => {\n return {\n ...state,\n showSearchForm: true\n };\n };\n\n const closeSearchForm = () => {\n return {\n ...state,\n showSearchForm: false\n };\n };\n\n const logOut = () => {\n return {\n ...state,\n badges: getInitialBadges()\n };\n };\n\n const openItemSettings = () => {\n const { payload } = action;\n return {\n ...state,\n itemSettings: {\n open: CONSTANTS.MODAL.OPEN,\n ...payload\n }\n };\n };\n\n const closeItemSettings = () => {\n return {\n ...state,\n itemSettings: {\n open: CONSTANTS.MODAL.CLOSED,\n item: {}\n }\n };\n };\n\n const openShareModal = () => ({\n ...state,\n shareModal: {\n isOpen: true,\n settings: action.payload\n }\n });\n\n const initialize = () => {\n const { payload } = action;\n return {\n ...payload\n };\n };\n\n const closeShareModal = () => ({\n ...state,\n shareModal: {\n isOpen: false,\n settings: null\n }\n });\n\n const openHelpSection = () => ({\n ...state,\n helpSection: {\n isOpen: true,\n settings: action.payload\n }\n });\n\n const closeHelpSection = () => ({\n ...state,\n helpSection: {\n isOpen: false,\n settings: null\n }\n });\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.INITIALIZE]: initialize,\n [actionTypes.TOGGLE_HEADER_SEARCH]: toggleHeaderSearch,\n [actionTypes.OPEN_GDPR_MODAL]: openGdprModal,\n [actionTypes.CLOSE_GDPR_MODAL]: closeGdprModal,\n [actionTypes.OPEN_GDPR_SETTINGS]: openGdprSettings,\n [actionTypes.CLOSE_GDPR_SETTINGS]: closeGdprSettings,\n [actionTypes.OPEN_QUICK_VIEW]: openQuickView,\n [actionTypes.CLOSE_QUICK_VIEW]: closeQuickView,\n [actionTypes.LOADING_QUICK_VIEW]: loadingQuickView,\n [actionTypes.OPEN_VIDEO_MODAL]: openVideoModal,\n [actionTypes.CLOSE_VIDEO_MODAL]: closeVideoModal,\n [actionTypes.OPEN_YOUTUBE_VIDEO_MODAL]: openYoutubeVideoModal,\n [actionTypes.CLOSE_YOUTUBE_VIDEO_MODAL]: closeYoutubeVideoModal,\n [actionTypes.OPEN_MESSAGING_MODAL]: openMessagingModal,\n [actionTypes.CLOSE_MESSAGING_MODAL]: closeMessagingModal,\n [actionTypes.OPEN_NOTIFICATION_OPTIN_MODAL]: openNotificationOptinModal,\n [actionTypes.CLOSE_NOTIFICATION_OPTIN_MODAL]: closeNotificationOptinModal,\n [actionTypes.ITEM_LAYOUT]: itemLayout,\n [actionTypes.UPDATE_SYSTEM_MESSAGES]: updateSystemMessages,\n [actionTypes.UPDATE_MESSAGING_NOTIFICATIONS]: updateMessagingNotifications,\n [actionTypes.OPEN_PROFILE_MENU]: openProfileMenu,\n [actionTypes.CLOSE_PROFILE_MENU]: closeProfileMenu,\n [actionTypes.OPEN_CATEGORY_DROPDOWN_MENU]: openCategoryDropdownMenu,\n [actionTypes.CLOSE_CATEGORY_DROPDOWN_MENU]: closeCategoryDropdownMenu,\n [actionTypes.OPEN_SEARCH_FORM]: openSearchForm,\n [actionTypes.CLOSE_SEARCH_FORM]: closeSearchForm,\n [actionTypes.OPEN_ITEM_SETTINGS]: openItemSettings,\n [actionTypes.CLOSE_ITEM_SETTINGS]: closeItemSettings,\n [actionTypes.SITE_LAYOUT]: siteLayout,\n [actionTypes.LOG_OUT]: logOut,\n [actionTypes.OPEN_MODAL]: openModal,\n [actionTypes.CLOSE_MODAL]: closeModal,\n [actionTypes.OPEN_SHARE_MODAL]: openShareModal,\n [actionTypes.CLOSE_SHARE_MODAL]: closeShareModal,\n [actionTypes.OPEN_HELP_SECTION]: openHelpSection,\n [actionTypes.CLOSE_HELP_SECTION]: closeHelpSection\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","import PropTypes from 'prop-types';\nimport { useMediaQuery } from 'react-responsive';\n\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\n\n/**\n * Conditionally render children depending on matching breakpoint\n *\n * \"is\" prop has precedence over \"upTo\" and \"downTo\", which can be used together to define a range\n *\n * @param {boolean} props.desktop - LG and above\n * @param {boolean} props.tablet - MD\n * @param {boolean} props.mobile - SM and below\n * @param {string} props.is - Exact breakpoint match\n * @param {string} props.upTo - Up to (inclusive) breakpoint match\n * @param {string} props.downTo - Down to (inclusive) breakpoint match\n * @param props.children\n * @returns {children|null}\n */\nconst Breakpoint = props => {\n const { desktop, tablet, mobile, children } = props;\n let { is, upTo, downTo } = props;\n let mediaQuery = {};\n if (desktop || tablet || mobile) {\n if (desktop) downTo = BREAKPOINTS.LG;\n else if (tablet) is = BREAKPOINTS.MD;\n else if (mobile) upTo = BREAKPOINTS.SM;\n }\n if (is) {\n mediaQuery.minWidth = BREAKPOINT_SIZES[is].min;\n mediaQuery.maxWidth = BREAKPOINT_SIZES[is].max;\n } else {\n if (upTo) {\n mediaQuery.maxWidth = BREAKPOINT_SIZES[upTo].max;\n } else if (downTo) {\n mediaQuery.minWidth = BREAKPOINT_SIZES[downTo].min;\n }\n }\n const isActive = useMediaQuery(mediaQuery);\n return isActive ? children : null;\n};\nBreakpoint.propTypes = {\n desktop: PropTypes.bool,\n tablet: PropTypes.bool,\n mobile: PropTypes.bool,\n is: PropTypes.oneOf(Object.keys(BREAKPOINTS)),\n upTo: PropTypes.oneOf(Object.keys(BREAKPOINTS)),\n downTo: PropTypes.oneOf(Object.keys(BREAKPOINTS))\n};\n\nexport { Breakpoint as default, Breakpoint, BREAKPOINTS };\n","export default {\n INITIALIZE: 'CATEGORIES/INITIALIZE',\n REQUEST_CATEGORY_LIST: 'CATEGORIES/REQUEST_CATEGORY_LIST',\n RECEIVE_CATEGORY_LIST: 'CATEGORIES/RECEIVE_CATEGORY_LIST',\n HANDLE_CATEGORY_LIST_ERROR: 'CATEGORIES/HANDLE_CATEGORY_LIST_ERROR'\n};\n","export default {\n AUCTION: 'Auction',\n CART: 'Cart',\n BIN: 'Bin'\n};\n","export default {\n ERRORS: {\n GENERIC:\n 'Något har gått fel på Tradera. Vi jobbar på att fixa det. Försök igen om en stund.'\n },\n SHIPPING_LABELS: {\n NO_SELECTED_SHIPPING: 'Inget fraktsätt valt',\n FREE_SHIPPING: 'Fri frakt',\n TAKEAWAY: 'Avhämtning'\n }\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport {\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\nimport { toLocalizedUrl } from 'tradera-utils/url';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { openModal } from 'tradera-state/ui/actions';\nimport { INTERNATIONAL_SHIPPING_MODAL_ID } from 'tradera-components/international-shipping-modal/constants';\nimport {\n selectIsLoggedIn,\n selectMemberId\n} from 'tradera-state/member/selectors';\nimport { selectPreferredLanguageCode } from 'tradera-state/language/selectors';\n\nconst internationalShippingSlice = createSlice({\n name: 'internationalShipping',\n initialState: {\n allowedBuyerRegion: null,\n fromCountryCodeIso2: null,\n imageUrl: null,\n messagingLink: null,\n ownItem: null,\n providers: [],\n rows: [],\n title: null\n },\n reducers: {\n setInternationalShipping: (state, action) => {\n state.messagingLink = action.payload.messagingLink;\n state.ownItem = action.payload.ownItem;\n const {\n imageUrl,\n title,\n shippingOptions,\n allowedBuyerRegion\n } = action.payload.data;\n state.allowedBuyerRegion = allowedBuyerRegion;\n state.imageUrl = imageUrl;\n state.title = title;\n state.fromCountryCodeIso2 =\n shippingOptions[0]?.fromCountryCodeIso2 || null;\n const { providers, rows } = shippingOptions\n .sort((a, b) =>\n a.toCountryCodeIso2 > b.toCountryCodeIso2 ? 1 : -1\n )\n .reduce(\n ({ providers, rows }, shippingOption) => {\n if (\n !providers.includes(shippingOption.shippingProvider)\n ) {\n providers = [\n ...providers,\n shippingOption.shippingProvider\n ];\n }\n if (\n rows.length === 0 ||\n rows[rows.length - 1].toCountryCodeIso2 !==\n shippingOption.toCountryCodeIso2\n ) {\n rows = [\n ...rows,\n {\n toCountryCodeIso2:\n shippingOption.toCountryCodeIso2\n }\n ];\n }\n rows[rows.length - 1] = {\n ...rows[rows.length - 1],\n [shippingOption.shippingProvider]: shippingOption\n };\n return { providers, rows };\n },\n { providers: [], rows: [] }\n );\n\n state.providers = providers;\n state.rows = rows;\n }\n }\n});\n\nexport const fetchInternationalShipping = ({ itemId, sellerId }) => async (\n dispatch,\n getState\n) => {\n const preferredLanguageCode = selectPreferredLanguageCode(getState());\n const url = toLocalizedUrl(\n `${ENDPOINTS.WEB_API}/browse/item/${itemId}/shipping`,\n preferredLanguageCode\n );\n const response = await axiosWithTokenRefresh()\n .get(url)\n .then(finalizeResponse())\n .catch(handleError());\n const data = response.data;\n\n data.shippingOptions = data.shippingOptions.filter(\n ({ shippingProvider }) =>\n shippingProvider !== 'Takeaway' &&\n shippingProvider !== 'TakeawayOnly'\n );\n\n const isLoggedIn = selectIsLoggedIn(getState());\n const buyerId = selectMemberId(getState());\n const ownItem = buyerId === sellerId;\n const messagingLink = {\n isLoggedIn,\n buyerId: buyerId?.toString(),\n memberId: buyerId?.toString(),\n sellerId: sellerId?.toString(),\n itemId: itemId?.toString(),\n source: 'contact_seller'\n };\n\n dispatch(\n setInternationalShipping({\n data,\n messagingLink,\n ownItem\n })\n );\n dispatch(\n openModal({\n modalId: INTERNATIONAL_SHIPPING_MODAL_ID,\n data: { itemId }\n })\n );\n};\n\nexport const { setInternationalShipping } = internationalShippingSlice.actions;\nexport default internationalShippingSlice.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\nimport { setEnum } from 'tradera-apps/my-tradera/app/helpers/enums';\n\nconst initialState = {\n modifiers: {\n query: {},\n paging: {}\n },\n filterBar: null,\n shownFilters: null\n};\n\nconst resetPageIndex = state => ({\n page: 1,\n size: state.modifiers.paging.size\n});\n\nconst slice = createSlice({\n name: 'filters',\n initialState,\n reducers: {\n updatePageSize: (state, { payload }) => {\n state.modifiers.paging.page = 1;\n state.modifiers.paging.size = payload.size;\n },\n selectSortChange: (state, { payload }) => {\n state.modifiers.sort = {\n sorting: payload.sort,\n order: payload.sortOrder\n };\n state.modifiers.paging = resetPageIndex(state);\n },\n changeSortOrder: state => {\n state.modifiers.sort = {\n sorting: state.modifiers.sort.sorting,\n order:\n state.modifiers.sort.order === 'Descending'\n ? 'Ascending'\n : 'Descending'\n };\n state.modifiers.paging = resetPageIndex(state);\n },\n selectTypeChange: (state, { payload }) => {\n state.modifiers.itemType = payload.itemType;\n state.modifiers.paging = resetPageIndex(state);\n },\n setDateFrom: (state, { payload }) => {\n state.modifiers.dateRange.from = payload.from;\n state.modifiers.paging = resetPageIndex(state);\n },\n setSingleFilterValue: (state, { payload }) => {\n state.modifiers.sellerFilters[payload.filter] = payload.value;\n },\n setDateTo: (state, { payload }) => {\n state.modifiers.dateRange.to = payload.to;\n state.modifiers.paging = resetPageIndex(state);\n },\n filterByState: (state, { payload }) => {\n let showSelectFiltersDropDown = false;\n if (payload.selected === 'Valj') {\n showSelectFiltersDropDown = !state.filterBar\n .showSelectFiltersDropDown;\n }\n setSellerFilterBarModifiers(state, payload.selected);\n state.defaults = {\n ...state.defaults\n };\n state.modifiers.selectedFilterBar = payload.selected;\n state.modifiers.paging = resetPageIndex(state);\n state.filterBar.showSelectFiltersDropDown = showSelectFiltersDropDown;\n },\n changePage: (state, { payload }) => {\n state.modifiers.paging.page = payload.page;\n },\n resetDateRangeTo: state => {\n state.modifiers.dateRange.to =\n state.defaults.modifiers.dateRange.to;\n },\n resetDateRangeFrom: state => {\n state.modifiers.dateRange.from =\n state.defaults.modifiers.dateRange.from;\n },\n resetFilters: state => {\n state.modifiers = { ...state.defaults.modifiers };\n state.filterBar = {\n ...state.filterBar,\n ...state.defaults.filterBar\n };\n },\n changeSearchQuery: (state, { payload }) => {\n state.modifiers.query.searchQuery = payload.searchQuery;\n state.modifiers.sort = {\n sorting: 'BestMatch',\n order: 'Ascending'\n };\n state.modifiers.paging = resetPageIndex(state);\n },\n selectReservationPriceChange: (state, { payload }) => {\n state.modifiers.reservePriceReached = payload.reservePriceReached;\n state.modifiers.paging = resetPageIndex(state);\n },\n updateFiltersForSelectedPage: (state, { payload }) => {\n if (!payload.newFilters.modifiers) {\n return;\n }\n Object.keys(payload.newFilters).forEach(\n key => (state[key] = payload.newFilters[key])\n );\n state.defaults = {\n ...payload.defaultFilters\n };\n },\n setFiltersFromRouter: (state, { payload }) => {\n state.modifiers = payload.filters;\n }\n }\n});\n\nexport default slice.reducer;\n\nexport const {\n updatePageSize,\n selectTypeChange,\n selectSortChange,\n changeSortOrder,\n setDateFrom,\n setDateTo,\n changePage,\n changeSearchQuery,\n selectReservationPriceChange,\n setFiltersFromRouter,\n updateFiltersForSelectedPage,\n filterByState,\n setSingleFilterValue,\n resetFilters,\n resetDateRangeTo,\n resetDateRangeFrom\n} = slice.actions;\n\n/**\n * setSellerFilterBarModifiers\n * @param {object} state\n * @param {string} selected\n * @returns {object} state of 'filters' based on UI tab selection. Note: WebApi expects values as Capitalcase Enum;\n */\nconst setSellerFilterBarModifiers = (state, selected) => {\n if (selected === 'Valj') {\n return;\n }\n\n if (state.modifiers.sellerFilters) {\n Object.keys(state.modifiers.sellerFilters).forEach(key => {\n state.modifiers.sellerFilters[key] = setEnum('All');\n });\n }\n\n if (state.modifiers.buyerFilters) {\n Object.keys(state.modifiers.buyerFilters).forEach(key => {\n state.modifiers.buyerFilters[key] = setEnum('All');\n });\n }\n\n switch (selected) {\n case 'SellerNoFeedback':\n state.modifiers.sellerFilters.paid = setEnum(true);\n state.modifiers.sellerFilters.shipped = setEnum(true);\n state.modifiers.sellerFilters.feedbackLeft = setEnum(false);\n state.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'BuyerNoFeedback':\n state.modifiers.buyerFilters.feedbackLeft = setEnum(false);\n state.modifiers.buyerFilters.paid = setEnum(true);\n state.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'SellerNotPaid':\n state.modifiers.sellerFilters.paid = setEnum(false);\n state.modifiers.sellerFilters.shipped = setEnum(false);\n state.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'BuyerNotPaid':\n state.modifiers.buyerFilters.paid = setEnum(false);\n state.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'NotSent':\n state.modifiers.sellerFilters.paid = setEnum(true);\n state.modifiers.sellerFilters.shipped = setEnum(false);\n state.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'AllSold':\n case 'AllUnsold':\n state.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'SellerHidden':\n state.modifiers.sellerFilters.hidden = setEnum(true);\n break;\n case 'BuyerHidden':\n state.modifiers.buyerFilters.hidden = setEnum(true);\n break;\n case 'BuyerNotHidden':\n state.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'AllPurchases':\n state.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'AllBids':\n state.modifiers.hasBids = setEnum('All');\n break;\n case 'HasBids':\n state.modifiers.hasBids = setEnum(true);\n break;\n case 'NoBids':\n state.modifiers.hasBids = setEnum(false);\n break;\n case 'ItemsLostNotHidden':\n state.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'ItemsLostHidden':\n state.modifiers.buyerFilters.hidden = setEnum(true);\n break;\n default:\n break;\n }\n};\n","export default {\n MODAL: {\n OPEN: 'open',\n CLOSED: 'closed'\n },\n MENU: {\n OPEN: 'open',\n CLOSED: 'closed'\n },\n ITEM_LAYOUT: {\n GRID: 'layout-grid',\n LIST: 'layout-list'\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction TimeLeft(props) {\n const {\n className = '',\n isTimeLeftBelowWarningLimit,\n timeLeftText,\n icon,\n ...otherProps\n } = props;\n\n if (!timeLeftText) {\n return null;\n }\n\n return (\n \n {icon}\n {timeLeftText}\n \n );\n}\n\nTimeLeft.propTypes = {\n timeLeftText: PropTypes.string.isRequired,\n isTimeLeftBelowWarningLimit: PropTypes.bool.isRequired\n};\n\nexport default TimeLeft;\n","import { touchWebClient, webApiClient } from 'tradera-utils/http';\n\nconst createShipmentCheckout = async () =>\n webApiClient.post('/mytradera/shipmentcheckout/createshipmentcheckout');\n\nconst deleteShipment = async shipmentId =>\n touchWebClient.post('/my/shipping/checkout/delete', { shipmentId });\n\nconst getShippingOptions = (fromCountry, toCountry) =>\n webApiClient.get(\n `/selling/shipmentcheckout/shipping-products-for-country-by-weight-span?fromCountryCode=${fromCountry}&toCountryCode=${toCountry}`\n );\n\nconst setShipmentDetails = async payload =>\n webApiClient.post('/mytradera/shipmentcheckout/shipment', {\n shippingDetails: payload\n });\n\nconst setShippingAsBooked = async purchaseOrderId =>\n webApiClient.post('/member/selling/item-shipping-booked', {\n purchaseOrderId: purchaseOrderId,\n booked: true\n });\n\nconst setShippingAsShipped = async purchaseOrderId =>\n webApiClient.post('/member/selling/item-shipped', {\n purchaseOrderId: purchaseOrderId,\n shipped: true\n });\n\nconst getMemberSoldItemShippingInfo = purchaseOrderId =>\n webApiClient.get(\n `/member/selling/sold-item/shipping-info-v2/${purchaseOrderId}`\n );\n\nexport default {\n createShipmentCheckout,\n deleteShipment,\n getShippingOptions,\n setShipmentDetails,\n setShippingAsBooked,\n setShippingAsShipped,\n getMemberSoldItemShippingInfo\n};\n","export const resolveMostPreciseTranslationKey = errorKeys => {\n const errorTranslationKeys = errorKeys.map(key =>\n getOrDefault(key.message)\n );\n\n const errorPrio = [DefaultReceiverAddressError, DefaultError];\n const prioritizedKeys = errorTranslationKeys.sort((a, b) => {\n const aPrio = errorPrio.indexOf(a);\n const bPrio = errorPrio.indexOf(b);\n\n return aPrio - bPrio;\n });\n\n return prioritizedKeys[0];\n};\nexport const getDefaultErrorKey = () => DefaultError;\n\nconst getOrDefault = errorCode => {\n const error = errorMap[errorCode];\n if (!error) return DefaultError;\n\n return error;\n};\n\nconst Unknown = 'Unknown';\nconst ReceiverAddress = 'ReceiverAddress';\nconst Shipment = 'Shipment';\nconst SenderAddress = 'SenderAddress';\n\nconst ValidatedProperty = {\n Unknown: 'Unknown',\n Street: 'Street',\n ZipCode: 'ZipCode',\n City: 'City',\n CountryCode: 'CountryCode',\n Email: 'Email',\n Phone: 'Phone',\n Length: 'Length',\n Width: 'Width',\n Height: 'Height',\n Weight: 'Weight'\n};\n\nconst ValidationErrorType = {\n Unknown: 'Unknown',\n Missing: 'Missing',\n WrongFormat: 'WrongFormat',\n NotReal: 'NotReal',\n ZipcodeRouting: 'ZipcodeRouting',\n NotSupported: 'NotSupported'\n};\n\nvar DefaultReceiverAddressError = 'shipping_validation_defaultReceiverAddress';\nvar DefaultSenderAddressError = 'shipping_validation_defaultSenderAddress';\nvar DefaultError = 'shipping_validation_default';\n\nconst errorMap = {\n [`${ReceiverAddress}:${ValidatedProperty.City}:${ValidationErrorType.Missing}`]: DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.City}:${ValidationErrorType.WrongFormat}`]: DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.CountryCode}:${ValidationErrorType.Missing}`]: DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.CountryCode}:${ValidationErrorType.NotSupported}`]: 'shipping_validation_invalidCountryCode',\n [`${ReceiverAddress}:${ValidatedProperty.CountryCode}:${ValidationErrorType.WrongFormat}`]: DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.Email}:${ValidationErrorType.Missing}`]: 'shipping_validation_checkReceiverEmail',\n [`${ReceiverAddress}:${ValidatedProperty.Email}:${ValidationErrorType.WrongFormat}`]: 'shipping_validation_checkReceiverEmail',\n [`${ReceiverAddress}:${ValidatedProperty.Name}:${ValidationErrorType.Missing}`]: DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.Name}:${ValidationErrorType.WrongFormat}`]: DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.Phone}:${ValidationErrorType.Missing}`]: 'shipping_validation_checkReceiverPhone',\n [`${ReceiverAddress}:${ValidatedProperty.Phone}:${ValidationErrorType.WrongFormat}`]: 'shipping_validation_checkReceiverPhone',\n [`${ReceiverAddress}:${ValidatedProperty.Street}:${ValidationErrorType.Missing}`]: DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.Street}:${ValidationErrorType.WrongFormat}`]: DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.Unknown}:${ValidationErrorType.Missing}`]: DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.Missing}`]: DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.NotReal}`]: DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.NotSupported}`]: 'shipping_validation_checkReceiverZipCode',\n [`${ReceiverAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.WrongFormat}`]: 'shipping_validation_checkReceiverZipCode',\n\n [`${Shipment}:${ValidatedProperty.Agent}:${ValidationErrorType.Missing}`]: DefaultError,\n [`${Shipment}:${ValidatedProperty.City}:${ValidationErrorType.Missing}`]: DefaultError,\n [`${Shipment}:${ValidatedProperty.Height}:${ValidationErrorType.Missing}`]: DefaultError,\n [`${Shipment}:${ValidatedProperty.Length}:${ValidationErrorType.Missing}`]: DefaultError,\n [`${Shipment}:${ValidatedProperty.Street}:${ValidationErrorType.Missing}`]: DefaultError,\n [`${Shipment}:${ValidatedProperty.Unknown}:${ValidationErrorType.Unknown}`]: DefaultError,\n [`${Shipment}:${ValidatedProperty.Unknown}:${ValidationErrorType.ZipcodeRouting}`]: 'shipping_validation_checkAddresses',\n [`${Shipment}:${ValidatedProperty.Weight}:${ValidationErrorType.Missing}`]: DefaultError,\n [`${Shipment}:${ValidatedProperty.Width}:${ValidationErrorType.Missing}`]: DefaultError,\n [`${Shipment}:${ValidatedProperty.ZipCode}:${ValidationErrorType.NotReal}`]: 'shipping_validation_badZipCode',\n [`${Shipment}:${ValidatedProperty.ZipCode}:${ValidationErrorType.WrongFormat}`]: DefaultError,\n\n [`${SenderAddress}:${ValidatedProperty.City}:${ValidationErrorType.Missing}`]: DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.City}:${ValidationErrorType.WrongFormat}`]: DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.CountryCode}:${ValidationErrorType.Missing}`]: DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.CountryCode}:${ValidationErrorType.WrongFormat}`]: DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.Email}:${ValidationErrorType.Missing}`]: 'shipping_validation_checkSenderEmail',\n [`${SenderAddress}:${ValidatedProperty.Email}:${ValidationErrorType.WrongFormat}`]: 'shipping_validation_checkSenderEmail',\n [`${SenderAddress}:${ValidatedProperty.Name}:${ValidationErrorType.Missing}`]: DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.Name}:${ValidationErrorType.WrongFormat}`]: DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.Phone}:${ValidationErrorType.Missing}`]: 'shipping_validation_checkSenderPhone',\n [`${SenderAddress}:${ValidatedProperty.Phone}:${ValidationErrorType.WrongFormat}`]: 'shipping_validation_checkSenderPhone',\n [`${SenderAddress}:${ValidatedProperty.Street}:${ValidationErrorType.Missing}`]: DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.Street}:${ValidationErrorType.WrongFormat}`]: DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.Unknown}:${ValidationErrorType.Missing}`]: DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.Missing}`]: DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.NotReal}`]: DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.NotSupported}`]: 'shipping_validation_checkSenderZipCode',\n [`${SenderAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.WrongFormat}`]: 'shipping_validation_checkSenderZipCode',\n\n [`${Unknown}:${ValidatedProperty.Unknown}:${ValidationErrorType.Unknown}`]: DefaultError\n};\n","import api from './api';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { logger } from 'packages';\nimport { selectShipment, selectItemWithoutShipment } from './selector';\nimport {\n resolveMostPreciseTranslationKey,\n getDefaultErrorKey\n} from 'tradera-helpers/shipping-validation-errors';\n\nexport const deleteShipment = createAsyncThunk(\n 'shippingCheckout/deleteShipment',\n async ({ shipmentId, isChangingProvider }, thunkAPI) => {\n try {\n await api.deleteShipment(shipmentId);\n return { shipmentId, isChangingProvider };\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nexport const createShipmentCheckout = createAsyncThunk(\n 'shippingCheckout/createShipmentCheckout',\n async (_, thunkAPI) => {\n try {\n const result = await api.createShipmentCheckout();\n return result.data;\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nexport const getShippingOptions = createAsyncThunk(\n 'shippingCheckout/getShippingOptions',\n async (\n {\n fromCountry,\n toCountry,\n bringEnabled,\n postnordEnabled,\n dhlEnabled,\n schenkerEnabled\n },\n thunkAPI\n ) => {\n try {\n const result = await api.getShippingOptions(fromCountry, toCountry);\n\n return {\n data: result.data,\n bringEnabled: bringEnabled,\n postnordEnabled: postnordEnabled,\n dhlEnabled: dhlEnabled,\n schenkerEnabled: schenkerEnabled\n };\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nexport const updateShipment = createAsyncThunk(\n 'shippingCheckout/updateShipment',\n async (shipmentDetails, thunkAPI) => {\n try {\n const { data } = await api.setShipmentDetails(shipmentDetails);\n const { errors } = data.responseStatus;\n if (errors) {\n const mostPreciseTranslationKeys = resolveMostPreciseTranslationKey(\n errors\n );\n return thunkAPI.rejectWithValue({\n mostPreciseErrorKey: mostPreciseTranslationKeys\n });\n }\n thunkAPI.dispatch(createShipmentCheckout());\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue({\n mostPreciseErrorKey: getDefaultErrorKey()\n });\n }\n }\n);\n\nexport const updateShippingProvider = (id, payload) => (dispatch, getState) => {\n const shipment = selectShipment(getState(), id);\n\n const { providerId, id: productId } = payload;\n const { purchaseOrderId, shipmentId, receiver } = shipment;\n\n const shippingPayload = buildShippingPayload(\n shipmentId,\n providerId,\n productId,\n purchaseOrderId,\n receiver\n );\n\n dispatch(updateShipment(shippingPayload));\n};\n\nexport const updateShippingAddress = (id, payload) => (dispatch, getState) => {\n const shipment = selectShipment(getState(), id);\n\n const {\n purchaseOrderId,\n shippingProvider,\n shipmentId,\n product,\n receiver\n } = shipment;\n\n const address = {\n name: payload.name || receiver.name,\n city: payload.city || receiver.city,\n zipCode: payload.zipCode || receiver.zipCode,\n street: payload.streetName || receiver.street\n };\n\n const shippingPayload = buildShippingPayload(\n shipmentId,\n shippingProvider,\n product.id,\n purchaseOrderId,\n address\n );\n dispatch(updateShipment(shippingPayload));\n};\n\nexport const createShipment = createAsyncThunk(\n 'shippingCheckout/createShipment',\n async (payload, thunkAPI) => {\n const {\n item: { selectedShipping },\n buyerContactDetails\n } = selectItemWithoutShipment(thunkAPI.getState());\n\n const { address } = payload;\n const shippingPayload = buildShippingPayload(\n null,\n payload.providerId || selectedShipping.providerId,\n payload.productId || selectedShipping.productId,\n payload.purchaseOrderId,\n {\n name: address?.name || buyerContactDetails.fullName,\n city: address?.city || buyerContactDetails.town,\n zipCode: address?.zipCode || buyerContactDetails.zipCode,\n street: address?.street || buyerContactDetails.streetName\n }\n );\n\n try {\n const { data } = await api.setShipmentDetails(shippingPayload);\n const { errors } = data.responseStatus;\n if (errors) {\n const mostPreciseTranslationKey = resolveMostPreciseTranslationKey(\n errors\n );\n\n return thunkAPI.rejectWithValue({\n mostPreciseErrorKey: mostPreciseTranslationKey\n });\n }\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue({\n mostPreciseErrorKey: getDefaultErrorKey()\n });\n }\n }\n);\n\nexport const markAsBooked = createAsyncThunk(\n 'shippingCheckout/markAsBooked',\n async (purchaseOrderId, thunkAPI) => {\n try {\n return await api.setShippingAsBooked(purchaseOrderId);\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nexport const markAsShipped = createAsyncThunk(\n 'shippingCheckout/markAsShipped',\n async (purchaseOrderId, thunkAPI) => {\n try {\n return await api.setShippingAsShipped(purchaseOrderId);\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nexport const getItemWithoutShipment = createAsyncThunk(\n 'selectShipment/getItemWithoutShipment',\n async (purchaseOrderId, thunkAPI) => {\n try {\n const { data } = await api.getMemberSoldItemShippingInfo(\n purchaseOrderId\n );\n const { responseStatus } = data;\n if (responseStatus?.errorCode) {\n return thunkAPI.rejectWithValue({\n errorCode: responseStatus?.errorCode\n });\n }\n\n return data;\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nconst buildShippingPayload = (\n shipmentId,\n shippingProvider,\n shippingProductId,\n purchaseOrderId,\n receiver\n) => ({\n shipmentId, // nullable if `null` -> new shipment is created\n shippingProvider,\n buyerAddress: {\n name: receiver.name,\n city: receiver.city,\n zipCode: receiver.zipCode,\n streetName: receiver.street\n },\n shippingProductId,\n purchaseOrderId\n});\n","export { default, GlobalLoader, LocalLoader, PortalLoader } from './loader';\n","/**\n * This is a helper class for sending google analytics events for the search experience\n * This is a wrapper for the GtmService. Do not call GTM or GA directly but use the GtmService.\n * Events tracked by this file set all GA categories to \"Search\" to namespace events\n */\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\n\nconst GA_EVENT_SEARCH_CATEGORY = 'Search';\n\nconst filterNameMappings = {\n itemCondition: 'Condition',\n itemType: 'Ad Format',\n sellerType: 'Seller Type',\n county: 'Geo - Selected',\n countyBox: 'Geo',\n itemStatus: 'Item Status',\n shoeTypes: 'Type',\n subDepartments: 'Department',\n shoeSizes: 'Size',\n brandTags: 'Brand',\n sortBy: 'Sorting',\n price: 'Price',\n Layout: 'Layout'\n};\n\n/**\n * Generic action tracker for things that happen in the Search.\n * @param {string} action\n * @param {string} label\n */\nexport const trackAction = (action, label) => {\n GtmService.trackAction(GA_EVENT_SEARCH_CATEGORY, action, label);\n};\n\nconst getFilterLabel = key => {\n if (key in filterNameMappings) {\n return filterNameMappings[key];\n } else {\n return key;\n }\n};\n\n/**\n * translates the tech names of the filters to ga friendly names. to see the techie names a filter has\n * see the URL paramters on a search or a browse page.\n * @param {string} filter the name of the filter\n * @param {string} value the value the filter gets\n */\nexport const trackFilter = (filter, value) => {\n let action = getFilterLabel(filter);\n trackAction(`Filter ${action}`, value);\n};\n\nexport const trackButton = label => {\n trackAction('Button', label);\n};\n\nexport const trackLink = (action, label) => {\n trackAction(`Link - ${action}`, label);\n};\n\nexport const trackPriceFilter = (fromPrice, toPrice) => {\n if (fromPrice === '1') {\n fromPrice = undefined;\n }\n\n // get a label that represents the current selected value\n let lbl = [];\n if (typeof fromPrice !== 'undefined') {\n lbl.push('Min set');\n }\n if (typeof toPrice !== 'undefined') {\n lbl.push('Max set');\n }\n if (lbl.length === 0) {\n lbl.push('All');\n }\n trackAction(`Filter Price`, lbl.join(' and '));\n};\n\n/**\n * Tracks to google tag manager that a new search was made\n * @param {object} searchResults data returned fromm ajax when doing a search or browsing.\n * Note: needs to be the normalized version.\n */\nexport const trackNewSearch = (categoryPath, itemIds, metaTitle) => {\n if (typeof categoryPath === 'undefined' || categoryPath.length == 0) {\n return;\n }\n\n let reverseCategoryPath = categoryPath\n .filter(c => c.id > 0)\n .map(c => c.name)\n .reverse();\n\n GtmService.trackGtmEvent('viewCategory', {\n category: reverseCategoryPath.join(' > ')\n });\n\n GtmService.push({\n 'page.content-group-2': reverseCategoryPath.slice(0, 3).join(' > '),\n categoryId: categoryPath.length > 0 ? categoryPath[0].id : null\n });\n\n if (itemIds && itemIds.length >= 3) {\n GtmService.trackGtmEvent('viewItems', {\n itemIds: itemIds.slice(0, 3),\n keywords: categoryPath[0].name\n });\n }\n\n GtmService.push({\n ga_page_title: metaTitle\n });\n};\n","export const getTranslatedImageLabel = (t, labelKey) => {\n switch (labelKey) {\n case buyerActiveItemsLabelKeys.RESERVE_PRICE_NOT_REACHED:\n case activeLabelKeys.RESERVE_PRICE_NOT_REACHED:\n case unsoldLabelKeys.RESERVE_PRICE_NOT_REACHED:\n return t('myt_itemCard_imgLabel_reservePriceNotReached');\n case soldLabelKeys.NOT_PAID:\n case purchasesLabelKeys.NOT_PAID:\n return t('myt_itemCard_imgLabel_notPaid');\n case unsoldLabelKeys.NOT_PAID:\n return t('myt_itemCard_imgLabel_unsoldNotPaid');\n case soldLabelKeys.PAID:\n case purchasesLabelKeys.PAID:\n return t('myt_itemCard_imgLabel_paid');\n case soldLabelKeys.DONE:\n case purchasesLabelKeys.DONE:\n return t('myt_itemCard_imgLabel_done');\n case buyerActiveItemsLabelKeys.LEADING:\n return t('myt_itemCard_imgLabel_leading');\n case buyerActiveItemsLabelKeys.OVERBIDDEN:\n return t('myt_itemCard_imgLabel_overbidden');\n case buyerActiveItemsLabelKeys.BID_REMOVED:\n return t('myt_itemCard_imgLabel_bidRemoved');\n case activeLabelKeys.NOT_STARTED:\n return t('myt_itemCard_imgLabel_notStarted');\n case activeLabelKeys.HAS_BIDS:\n return t('myt_itemCard_imgLabel_hasBids');\n case activeLabelKeys.ACTIVE:\n return t('myt_itemCard_imgLabel_active');\n case activeLabelKeys.SOLD:\n return t('myt_itemCard_imgLabel_sold');\n case activeLabelKeys.NOT_SOLD:\n return t('myt_itemCard_imgLabel_notSold');\n case soldLabelKeys.SHIPPING_BOOKED:\n return t('myt_itemCard_imgLabel_shippingBooked');\n case soldLabelKeys.SHIPPED:\n return t('myt_itemCard_imgLabel_shipped');\n case unsoldLabelKeys.FORICBLY_CLOSED:\n return t('myt_itemCard_imgLabel_forciblyClosed');\n case unsoldLabelKeys.RESTARTED:\n return t('myt_itemCard_imgLabel_restarted');\n case itemLostLabelKeys.REMOVED:\n return t('myt_itemCard_imgLabel_removed');\n case itemLostLabelKeys.LOST:\n return t('myt_itemCard_imgLabel_lost');\n default:\n return '';\n }\n};\n\nconst buyerActiveItemsLabelKeys = {\n RESERVE_PRICE_NOT_REACHED: 'BUYER_RESERVE_PRICE_NOT_REACHED',\n LEADING: 'LEADING',\n OVERBIDDEN: 'OVERBIDDEN',\n BID_REMOVED: 'BID_REMOVED'\n};\n\nconst activeLabelKeys = {\n NOT_STARTED: 'NOT_STARTED',\n RESERVE_PRICE_NOT_REACHED: 'ACTIVE_RESERVE_PRICE_NOT_REACHED',\n HAS_BIDS: 'HAS_BIDS',\n ACTIVE: 'ACTIVE',\n SOLD: 'SOLD',\n NOT_SOLD: 'NOT_SOLD'\n};\n\nconst soldLabelKeys = {\n NOT_PAID: 'SOLD_NOT_PAID',\n PAID: 'SOLD_PAID',\n SHIPPING_BOOKED: 'SHIPPING_BOOKED',\n SHIPPED: 'SHIPPED',\n DONE: 'SOLD_DONE'\n};\n\nconst unsoldLabelKeys = {\n NOT_PAID: 'UNSOLD_NOT_PAID',\n RESERVE_PRICE_NOT_REACHED: 'UNSOLD_RESERVE_PRICE_NOT_REACHED',\n FORICBLY_CLOSED: 'FORCIBLY_CLOSED',\n RESTARTED: 'RESTARTED'\n};\n\nconst purchasesLabelKeys = {\n NOT_PAID: 'PURHCASED_NOT_PAID',\n PAID: 'PURCHASED_PAID',\n DONE: 'PURCHASED_DONE'\n};\n\nconst itemLostLabelKeys = {\n LOST: 'LOST',\n REMOVED: 'ITEMLOST_REMOVED '\n};\n\nconst buyerActiveItemsLabels = {\n reservePriceNotReached: {\n key: buyerActiveItemsLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n leading: {\n key: buyerActiveItemsLabelKeys.LEADING,\n color: 'green'\n },\n overbidden: {\n key: buyerActiveItemsLabelKeys.OVERBIDDEN,\n color: 'red'\n },\n bidRemoved: {\n key: buyerActiveItemsLabelKeys.BID_REMOVED,\n color: 'grey-hard'\n }\n};\n\nconst activeLabels = {\n notStarted: {\n key: activeLabelKeys.NOT_STARTED,\n color: 'grey-soft'\n },\n reservePriceNotReached: {\n key: activeLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n hasBids: { key: activeLabelKeys.HAS_BIDS, color: 'green' },\n active: { key: activeLabelKeys.ACTIVE, color: 'blue' },\n sold: { key: activeLabelKeys.SOLD, color: 'green' },\n notSold: {\n key: activeLabelKeys.NOT_SOLD,\n color: 'grey-soft'\n }\n};\n\nconst soldLabels = {\n notPaid: { key: soldLabelKeys.NOT_PAID, color: 'red' },\n paid: { key: soldLabelKeys.PAID, color: 'green' },\n shippingBooked: {\n key: soldLabelKeys.SHIPPING_BOOKED,\n color: 'green'\n },\n shipped: { key: soldLabelKeys.SHIPPED, color: 'blue' },\n done: { key: soldLabelKeys.DONE, color: 'grey-hard' }\n};\n\nconst unsoldLabels = {\n notPaid: {\n key: unsoldLabelKeys.NOT_PAID,\n color: 'grey-hard'\n },\n reservePriceNotReached: {\n key: unsoldLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n forciblyClosed: {\n key: unsoldLabelKeys.FORICBLY_CLOSED,\n color: 'red'\n },\n restarted: {\n key: unsoldLabelKeys.RESTARTED,\n color: 'blue'\n }\n};\n\nconst purchasesLabels = {\n notPaid: {\n key: purchasesLabelKeys.NOT_PAID,\n color: 'red'\n },\n paid: { key: purchasesLabelKeys.PAID, color: 'green' },\n done: { key: purchasesLabelKeys.DONE, color: 'grey-hard' }\n};\n\nconst itemLostLabels = {\n lost: {\n key: itemLostLabelKeys.LOST,\n color: 'grey-hard'\n },\n removed: {\n key: itemLostLabelKeys.REMOVED,\n color: 'grey-hard'\n }\n};\n\nexport const itemHasBids = item => item.bidInformation.bidCount > 0;\nexport const itemHasBidsButReservePriceNotReached = item =>\n item.transaction\n ? false\n : itemHasBids(item) &&\n !item.reservePriceReached &&\n item.listing.pricing.reservePrice !== -1;\n\nconst getActiveActiveLabel = item => {\n if (itemHasBidsButReservePriceNotReached(item)) {\n return activeLabels.reservePriceNotReached;\n }\n return itemHasBids(item) ? activeLabels.hasBids : activeLabels.active;\n};\n\nexport const getActiveLabel = item => {\n switch (item.activityType) {\n case 'NotPublished':\n return activeLabels.notStarted;\n case 'Active':\n return getActiveActiveLabel(item);\n case 'Sold':\n return activeLabels.sold;\n case 'Unsold':\n return activeLabels.unSold;\n }\n};\n\nexport const getUnsoldLabel = item => {\n if (item && item.listing.restart.hasRestartedChild) {\n return unsoldLabels.restarted;\n }\n if (item && item.forciblyClosed && item.forciblyClosed.closed) {\n return unsoldLabels.forciblyClosed;\n }\n if (itemHasBidsButReservePriceNotReached(item)) {\n return unsoldLabels.reservePriceNotReached;\n }\n return unsoldLabels.notPaid;\n};\n\nconst getStates = sellerState => ({\n paid: sellerState.paid ? 'done' : '',\n shipped: sellerState.shipped\n ? 'done'\n : sellerState.shippingBooked\n ? 'partial'\n : '',\n feedbackLeft: sellerState.feedbackLeft ? 'done' : ''\n});\n\nexport const getBuyerActiveItemsLabel = (item, memberId) => {\n if (item.caller.leadingBidRemoved === true) {\n return buyerActiveItemsLabels.bidRemoved;\n }\n\n if (\n item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id === memberId\n ) {\n if (!item.reservePriceReached) {\n return buyerActiveItemsLabels.reservePriceNotReached;\n }\n return buyerActiveItemsLabels.leading;\n } else {\n return buyerActiveItemsLabels.overbidden;\n }\n};\n\nexport const getSoldLabel = item => {\n const sellerState = item.transaction.sellerState;\n const states = getStates(sellerState);\n if (sellerState.shipped && sellerState.paid && sellerState.feedbackLeft) {\n return {\n ...soldLabels.done,\n states: states\n };\n }\n\n if (sellerState.shipped || (sellerState.shipped && sellerState.paid)) {\n return {\n ...soldLabels.shipped,\n states: states\n };\n }\n\n if (sellerState.shippingBooked && sellerState.paid) {\n return {\n ...soldLabels.shippingBooked,\n states: states\n };\n }\n\n if (sellerState.paid) {\n return {\n ...soldLabels.paid,\n states: states\n };\n }\n\n return {\n ...soldLabels.notPaid,\n states: states\n };\n};\n\nexport const getPurchasesLabel = item => {\n const buyerState = item.transaction.buyerState;\n const states = getStates(buyerState);\n\n if (buyerState.paid && buyerState.feedbackLeft) {\n return {\n ...purchasesLabels.done,\n states: states\n };\n }\n\n if (buyerState.paid) {\n return {\n ...purchasesLabels.paid,\n states: states\n };\n }\n\n return {\n ...purchasesLabels.notPaid,\n states: states\n };\n};\n\nexport const getBuyerItemsLostLabel = item => {\n if (item && item.forciblyClosed && item.forciblyClosed.closed) {\n return {\n ...itemLostLabels.removed\n };\n }\n\n return {\n ...itemLostLabels.lost\n };\n};\n\nexport default {\n getActiveLabel,\n getBuyerItemsLostLabel,\n getSoldLabel,\n getUnsoldLabel\n};\n","/**\n * @returns {object} - list of available columns in MyTradera.\n */\nexport const columns = {\n CurrentPrice: 'CurrentPrice',\n TransactionDate: 'TransactionDate',\n EndDate: 'EndDate',\n ShippingCost: 'ShippingCost',\n Bids: 'Bids',\n ItemId: 'ItemId',\n OpeningBid: 'OpeningBid',\n ReservePrice: 'ReservePrice',\n BuyItNow: 'BuyItNow',\n OwnReference: 'OwnReference',\n Discount: 'Discount',\n MaxBid: 'MaxBid',\n TimeLeft: 'TimeLeft'\n};\n\nexport const buyerActiveItemsColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.MaxBid,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.TimeLeft,\n columns.ItemId\n ]\n};\n\nexport const buyerItemsLostColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.MaxBid,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.ItemId\n ]\n};\n\nexport const sellerActiveColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.EndDate,\n columns.ItemId,\n columns.ReservePrice,\n columns.OwnReference\n ],\n Compact: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.ItemId,\n columns.ReservePrice,\n columns.BuyItNow,\n columns.OwnReference\n ]\n};\nexport const sellerSoldColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.TransactionDate,\n columns.ItemId,\n columns.ReservePrice,\n columns.BuyItNow,\n columns.OwnReference\n ],\n Compact: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.TransactionDate,\n columns.ItemId,\n columns.OpeningBid,\n columns.BuyItNow,\n columns.ReservePrice,\n columns.OwnReference\n ],\n Normal: [\n columns.Bids,\n columns.TransactionDate,\n columns.ItemId,\n columns.OwnReference,\n columns.ReservePrice,\n columns.BuyItNow,\n columns.CurrentPrice\n ]\n};\n\nexport const sellerUnsoldColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.ItemId,\n columns.OwnReference\n ],\n Compact: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.ItemId,\n columns.ReservePrice,\n columns.BuyItNow,\n columns.OwnReference\n ]\n};\n\nexport const buyerPurchasesColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.TransactionDate,\n columns.ItemId\n ],\n Normal: [\n columns.Bids,\n columns.TransactionDate,\n columns.ItemId,\n columns.CurrentPrice\n ]\n};\n\nexport const payments2Columns = {\n Basic: []\n};\n","import userData from './user-data';\nimport { defaultClient as httpClient } from 'tradera-utils/http';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport featureToggles from 'tradera-apps/my-tradera/app/utils/feature-toggles';\nimport { isServer } from 'tradera-utils/nextjs';\n\nvar initData = (!isServer && window.sellingGlobalData) || {};\nvar defaultDrafts = initData.defaultDrafts;\n\nconst resetUnwantedProperties = draft => {\n draft.itemId = 0;\n};\n\nconst isNullOrUndefined = val => val === null || val === undefined;\n\nconst getType = draft => {\n var hasOpeningPrice = !isNullOrUndefined(draft.openingBid);\n var hasFixedPrice = !isNullOrUndefined(draft.fixedPrice);\n if (hasOpeningPrice && !hasFixedPrice) {\n return 'Auction';\n }\n\n if (hasOpeningPrice && hasFixedPrice) {\n return 'AuctionBin';\n }\n\n if (!hasOpeningPrice && hasFixedPrice) {\n return 'PureBin';\n }\n\n return 'Unknown';\n};\n\nconst ensureApplicationId = draft => {\n if (!draft.metadata) {\n draft.metadata = {};\n }\n draft.metadata.applicationId = 'SYI-Riot';\n};\n\nconst ensureBraintree = draft => {\n if (\n userData.braintree.isBraintreeOnly &&\n draft.paymentOptions.length == 0\n ) {\n draft.paymentOptions.push('Braintree');\n }\n};\n\nconst isPureBin = draft => draft && getType(draft) === 'PureBin';\n\nconst isAuctionBin = draft => draft && getType(draft) === 'AuctionBin';\n\nconst getDefaultTemplateValue = propertyName =>\n defaultDrafts.newTemplate[propertyName];\n\nconst loadDraft = async draftId => {\n if (!draftId) {\n throw 'missing draftId';\n }\n\n const response = await httpClient.get(ENDPOINTS.SELLING_DRAFT(draftId));\n return response.data.draft;\n};\n\nconst loadDrafts = async () => {\n const response = await httpClient.get(ENDPOINTS.SELLING_DRAFTS);\n return response.data.items;\n};\n\nconst loadDefaultDraft = () => ({\n ...defaultDrafts.newItem,\n allowedBuyerRegion: undefined\n});\n\nconst loadDefaultTemplateDraft = () => ({\n ...defaultDrafts.newTemplate,\n allowedBuyerRegion: undefined\n});\n\nconst loadDraftFromTemplate = async templateId => {\n try {\n const response = await httpClient.post(\n ENDPOINTS.SELLING_DRAFT_LOAD_FROM_TEMPLATE,\n {\n templateId\n }\n );\n let draft = response.data.draft;\n resetUnwantedProperties(draft);\n draft.draftReason = 'Template';\n return draft;\n } catch {\n throw 'Could not load the draft from the template';\n }\n};\n\nconst saveDraft = async draft => {\n if (draft.draftReason === 'Template') {\n // Drafts for Templates cannot be saved\n throw 'Cannot save Template draft';\n }\n\n ensureApplicationId(draft);\n ensureBraintree(draft);\n\n const response = await httpClient.post(ENDPOINTS.SELLING_DRAFT_SAVE, draft);\n\n if (response.data.errorCode || !response.data.draftId) {\n throw response.data;\n }\n\n return response.data;\n};\n\nconst resolveImages = syiSlice => {\n var slots = syiSlice.images.slots;\n var images = [];\n for (var i = 0; i < slots.length; i++) {\n var slot = slots[i];\n if (slot.imageId == null) {\n continue;\n }\n if (slot.isListingImage) {\n images.push({\n draftImage: null,\n listingImage: {\n imageId: slot.imageId,\n rotationDegrees: slot.rotationDegrees,\n filename: slot.filename,\n imageGroupId: slot.imageGroupId\n },\n imageUrl: slot.imageUrl\n });\n } else {\n images.push({\n draftImage: {\n imageId: slot.imageId,\n rotationDegrees: slot.rotationDegrees\n },\n listingImage: null,\n imageUrl: slot.imageUrl\n });\n }\n }\n return images;\n};\n\nconst getCustomEndTime = itemDuration => {\n if (\n typeof itemDuration.customEndTimeHour !== 'string' ||\n typeof itemDuration.customEndTimeMinute !== 'string'\n ) {\n return null;\n }\n\n return (\n itemDuration.customEndTimeHour + ':' + itemDuration.customEndTimeMinute\n );\n};\n\nconst buildDraftFromState = syiSlice => {\n var draft = {};\n draft.draftId = syiSlice.draft.draftId;\n draft.draftReason = syiSlice.draft.draftReason;\n draft.MemberId = syiSlice.draft.memberId;\n draft.itemId = syiSlice.draft.itemId;\n draft.restart = syiSlice.draft.restart;\n draft.publishedPromoted = syiSlice.draft.publishedPromoted;\n draft.publishedHighlighted = syiSlice.draft.publishedHighlighted;\n draft.createdDate = syiSlice.draft.createdDate;\n draft.lastModifiedDate = syiSlice.draft.lastModifiedDate;\n draft.publishedDate = syiSlice.draft.publishedDate;\n draft.publishedAsItemType = syiSlice.draft.publishedAsItemType;\n draft.reference = syiSlice.draft.reference;\n draft.additionalDescriptions = syiSlice.draft.additionalDescriptions; //TODO\n draft.metadata = syiSlice.draft.metadata;\n if (syiSlice.draft.templateId) {\n draft.templateId = syiSlice.draft.templateId;\n }\n if (syiSlice.draft.templateName) {\n draft.templateName = syiSlice.draft.templateName;\n }\n\n draft.shortDescription = syiSlice.shortDescription.shortDescription;\n draft.longDescription = syiSlice.longDescription.longDescription;\n draft.descriptionLanguageCodeIso2 =\n syiSlice.shortDescription.descriptionLanguageCodeIso2;\n draft.currency = syiSlice.draft.currency;\n draft.categoryId = syiSlice.category.draftCategoryId;\n // categoryPath is needed on frontend for when cancelling edit of property.\n draft.categoryPath = syiSlice.category.draftCategoryPath;\n draft.images = resolveImages(syiSlice);\n draft.openingBid = syiSlice.price.openingBid;\n draft.reservePrice = syiSlice.price.reservePrice;\n draft.fixedPrice = syiSlice.price.isPureBinSelected\n ? syiSlice.price.fixedPrice\n : syiSlice.price.auctionBinPrice;\n draft.vat = syiSlice.price.vat;\n\n draft.durationDays = syiSlice.itemDuration.durationDays;\n draft.customEndTime = getCustomEndTime(syiSlice.itemDuration);\n draft.shippingOptions = syiSlice.shipping.selectedShippingOptions;\n draft.fromCountry = syiSlice.shipping.fromCountry;\n draft.paymentOptions = syiSlice.payment.selectedPaymentOptions;\n\n draft.itemCondition = syiSlice.itemCondition.itemCondition;\n draft.allowedBuyerRegion = syiSlice.buyerRegion.selectedBuyerRegion;\n\n draft.campaignCode = syiSlice.campaignCode.campaignCode;\n draft.campaignCodeId = syiSlice.campaignCode.campaignCodeId;\n\n draft.displayPromoted = syiSlice.extraFeatures.displayPromoted;\n draft.displayHighlighted = syiSlice.extraFeatures.displayHighlighted;\n\n draft.charityId = syiSlice.charityCampaign.charityId;\n if (\n featureToggles.isPennybridgeCharitiesEnabled &&\n syiSlice.charity?.charityId\n ) {\n draft.charity = syiSlice.charity;\n }\n draft.allowZeroDayAuctions = syiSlice.charityCampaign.allowZeroDayAuctions;\n draft.version = syiSlice.draft.version;\n\n draft.attributeValues = {\n termAttributeValues: syiSlice.attributes.categoryAttributes.map(\n attribute => {\n const values = attribute.options.reduce((acc, option) => {\n if (option.isActive) {\n acc.push(option.value);\n }\n return acc;\n }, []);\n return {\n id: attribute.id,\n backingField: attribute.backingField,\n userGenerated: true,\n values\n };\n }\n )\n };\n\n return draft;\n};\n\nconst deleteDraft = draftId => {\n return deleteDrafts([draftId]);\n};\n\nconst deleteDrafts = async draftIds => {\n try {\n await httpClient.post(ENDPOINTS.SELLING_DRAFTS_DELETE, {\n draftIds: draftIds\n });\n } catch {\n throw 'Could not delete the draft';\n }\n};\n\nexport default {\n isPureBin,\n isAuctionBin,\n getDefaultTemplateValue,\n loadDraft,\n loadDrafts,\n loadDefaultDraft,\n loadDefaultTemplateDraft,\n loadDraftFromTemplate,\n saveDraft,\n buildDraftFromState,\n deleteDraft,\n deleteDrafts,\n getCustomEndTime\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport { Analytics } from 'packages';\nimport getInitialState from './initial-state';\n\nconst profileSlice = createSlice({\n name: 'profile',\n initialState: getInitialState(),\n reducers: {\n setTranslatedReviews: (state, { payload }) => {\n state.translatedReviews = [\n ...state.translatedReviews,\n ...payload.items\n ];\n state.isTranslationOnDemandDisabled = false;\n state.translatedReviewsLoading = false;\n state.translatedReviewsLoadingError = false;\n state.translatedReviewsProviderName = payload.providerName;\n },\n resetTranslatedReview: (state, { payload }) => {\n state.translatedReviews = state.translatedReviews.filter(\n review => review.gradeId !== payload.gradeId\n );\n },\n setTranslationOnDemandIsDisabled: state => {\n state.translatedReviews = [];\n state.isTranslationOnDemandDisabled = true;\n state.translatedReviewsLoading = false;\n state.translatedReviewsLoadingError = false;\n },\n showTranslatedReviews: {\n reducer: (state, { payload }) => {\n state.showTranslatedReviews = payload.show;\n state.translatedReviews = state.showTranslatedReviews\n ? state.translatedReviews\n : [];\n },\n prepare: payload => {\n Analytics.trackEvent({\n category: 'Profile',\n action: 'Translation',\n label: payload.show ? `Show - ${payload.language}` : 'Hide'\n });\n return { payload };\n }\n },\n beginLoadingTranslatedReviews: state => {\n state.translatedReviewsLoading = true;\n state.translatedReviewsLoadingError = false;\n },\n failedLoadingTranslatedReviews: state => {\n state.translatedReviewsLoading = false;\n state.translatedReviewsLoadingError = true;\n },\n beginLoadingModel: state => {\n state.loadingModel = true;\n },\n setModel: (state, { payload }) => {\n state.model = payload.model;\n state.showTranslatedReviews =\n state.showTranslatedReviews &&\n state.translatedReviews.some(\n ({ gradeId }) =>\n payload.model.feedbackItems.filter(\n feedbackItem => gradeId === feedbackItem.gradeId\n ).length\n );\n state.loadingModel = false;\n },\n setFeedbackComment: (state, { payload }) => {\n const { feedbackId, comment } = payload;\n const newFeedbackItems = state.model.feedbackItems.map(item =>\n item.gradeId === feedbackId\n ? {\n ...item,\n hasReply: true,\n isReplyAllowed: false,\n reply: comment\n }\n : { ...item }\n );\n state.model.feedbackItems = newFeedbackItems;\n }\n }\n});\n\nexport const {\n setTranslatedReviews,\n showTranslatedReviews,\n beginLoadingModel,\n beginLoadingTranslatedReviews,\n failedLoadingTranslatedReviews,\n setModel,\n setTranslationOnDemandIsDisabled,\n setFeedbackComment,\n resetTranslatedReview\n} = profileSlice.actions;\n\nexport default profileSlice.reducer;\n","export default () => {\n return {\n isTranslationOnDemandDisabled: false,\n loadingModel: false,\n model: null,\n showTranslatedReviews: false,\n translatedReviews: [],\n translatedReviewsLoading: false,\n translatedReviewsLoadingError: false\n };\n};\n","export default initData => {\n return {\n isTcfLoaded: false,\n gpt: 'gptData' in initData ? initData.gptData : null,\n adSenseQuery: '',\n adSenseShoppingPublisherId: ''\n };\n};\n","import actionTypes from './action-types';\nimport initialState from './initial-state';\n\nconst initialize = initData => ({\n type: actionTypes.INITIALIZE,\n payload: initialState(initData)\n});\n\n// TCF = https://iabeurope.eu/transparency-consent-framework/\nconst setTcfLoaded = () => {\n return {\n type: actionTypes.SET_TCF_LOADED\n };\n};\n\nconst setAds = ads => {\n return {\n type: actionTypes.SET_ADS,\n payload: ads\n };\n};\n\nexport default {\n initialize,\n setAds,\n setTcfLoaded\n};\n","import { compose, createStore, applyMiddleware } from 'redux';\nimport { Provider } from 'react-redux';\nimport React from 'react';\nimport ReduxThunk from 'redux-thunk';\nimport rootReducer from './root-reducer';\nimport { routerMiddleware } from 'connected-react-router';\nimport { getHistory } from 'tradera-utils/history';\nimport { sentryReduxEnhancer } from 'tradera-utils/sentry/redux';\nimport { initializeState } from './state-initializer';\nimport initData from 'packages/init-data';\n\n// Ensure only 1 redux store;\nlet reduxStore;\n\n// Apply middlewares via redux compose;\nconst getComposer = history => {\n const middlewares = [ReduxThunk];\n if (history) {\n middlewares.push(routerMiddleware(history));\n }\n let composeEnhancers;\n // If url contains ?debug-redux devtools will be enabled in production;\n if (\n (process && process.env && process.env.NODE_ENV !== 'production') ||\n window.location.search.includes('debug-redux')\n ) {\n composeEnhancers =\n window['__REDUX_DEVTOOLS_EXTENSION_COMPOSE__'] || compose;\n } else {\n composeEnhancers = compose;\n }\n return composeEnhancers(\n applyMiddleware(...middlewares),\n sentryReduxEnhancer\n );\n};\n\n// Hot reloading\nconst enableWebPackHotModuleReplacementForReducers = (module, store) => {\n if (!module.hot) {\n return;\n }\n module.hot.accept('./root-reducer', () => {\n const nextRootReducer = require('./root-reducer');\n store.replaceReducer(nextRootReducer);\n });\n};\n\nconst configureStore = browserHistory => {\n reduxStore = createStore(\n rootReducer(browserHistory),\n getComposer(browserHistory)\n );\n\n // make it possible to observe state changes. used by syi\n reduxStore.observe = function(select, onChange) {\n var currentState;\n function handleChange() {\n var nextState = select(reduxStore.getState());\n if (nextState !== currentState) {\n var previousState = currentState;\n currentState = nextState;\n onChange(previousState, currentState);\n }\n }\n\n var unsubscribe = reduxStore.subscribe(handleChange);\n handleChange();\n return unsubscribe;\n };\n\n enableWebPackHotModuleReplacementForReducers(module, reduxStore);\n return reduxStore;\n};\n\nexport const globalStore = () =>\n reduxStore ? reduxStore : configureStore(getHistory());\nconst store = globalStore();\n\ninitializeState(initData)(store.dispatch);\n\nwindow.getState = store.getState; // TODO: REmove me or put behind ENV-check (dev only)\n\nexport default store;\n\nexport const ProviderWithGlobalStore = props => (\n \n);\n","const THROW_ERROR = false;\n\nexport const assertNoUndefinedProperties = obj => {\n for (const [key, value] of Object.entries(obj)) {\n if (value === undefined) {\n const message = `${key} is undefined`;\n if (THROW_ERROR) {\n throw new Error(message);\n }\n console.error(message);\n }\n }\n};\n","import { cache, CACHE_KEYS } from 'tradera-utils/cache';\n\nexport default initData => {\n const wishListItemIds = new Set(initData.wishListItemIds || []);\n let recent = cache.read(CACHE_KEYS.RECENTLY_VIEWED_ITEMS) || [];\n\n //Fix for mapping of url to itemUrl. Only needed for old recent items state visited before 2021-11-16.\n recent = recent.map(({ url, itemUrl, ...item }) => ({\n ...item,\n itemUrl: itemUrl || url\n }));\n return {\n // Items by itemId\n cache: {},\n // List of item ids in ascending cache order (oldest first)\n cacheOrder: [],\n recent,\n wishListItemIds: Array.from(wishListItemIds)\n };\n};\n","import gtmCore from 'static/script/app/ui/google-tagmanager-service';\nimport { logger, Analytics } from 'packages';\nimport { cache, CACHE_KEYS } from 'tradera-utils/cache';\nimport actionTypes from './action-types';\nimport uiActions from '../ui/actions';\nimport { postWishlistItem } from './api';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { MODAL_TYPES } from 'tradera-state/push-notifications/constants';\nimport getInitialState from './initial-state';\n\nconst RECENTLY_VIEWED_CACHE_TTL = 30 * 24 * 60 * 60 * 1000;\n\nconst add = items => ({\n type: actionTypes.ADD,\n payload: items\n});\n\nconst addRecentlyViewed = item => async (dispatch, getStore) => {\n dispatch({\n type: actionTypes.ADD_RECENTLY_VIEWED,\n payload: item\n });\n\n const {\n items: { recent }\n } = getStore();\n\n cache.write(\n CACHE_KEYS.RECENTLY_VIEWED_ITEMS,\n recent,\n RECENTLY_VIEWED_CACHE_TTL\n );\n};\n\nconst setItemWishList = (itemId, exists) => (dispatch, getState) => {\n const existsInState = getState().items.wishListItemIds.includes(itemId);\n if (existsInState !== exists) {\n dispatch({\n type: actionTypes.WISHLIST,\n payload: { itemId, exists }\n });\n }\n};\nconst addItemsToWishList = itemIds => dispatch => {\n dispatch({\n type: actionTypes.WISHLIST_ADD_RANGE,\n payload: { itemIds }\n });\n};\n\n/**\n * Toggle item in wishlist\n *\n * @param {int} itemId\n * @param {boolean} [value] - Force add or remove from wishlist\n * @param {boolean} [shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip]\n * @returns {function(*, *): Promise<* | Error>}\n */\nconst wishlist = (\n itemId,\n value,\n shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip = false\n) => async (dispatch, getStore) => {\n const {\n member: { isLoggedIn, memberId },\n items: { wishListItemIds },\n page\n } = getStore();\n let existsInWishList;\n if (value === undefined) {\n existsInWishList = wishListItemIds.includes(itemId);\n } else {\n existsInWishList = !value;\n }\n\n const redirectUrl = window.location.toString();\n const onSignedOutError = () => dispatch(uiActions.signIn({ redirectUrl }));\n if (!isLoggedIn) {\n onSignedOutError();\n return;\n }\n\n dispatch(setItemWishList(itemId, !existsInWishList));\n\n if (!existsInWishList) {\n gtmCore.trackGtmEvent('add-to-wishlist', {\n memberId: memberId,\n itemId: itemId\n });\n }\n if (!shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip) {\n Analytics.trackEvent({\n category: 'Wish list',\n action: existsInWishList ? 'remove' : 'add',\n label: page.type\n });\n }\n\n return postWishlistItem(itemId, !existsInWishList)\n .then(() => {\n dispatch(\n uiActions.openNotificationOptinModal(\n MODAL_TYPES.wishlistReminders,\n 'Enable - Wishlist - Reminders (from alert)',\n 'pushModal_wishlist_title',\n 'pushModal_wishlist_description',\n ['wishlistReminders']\n )\n );\n return !existsInWishList;\n })\n .catch(error => {\n // Restore previous wishlist status on error\n dispatch(setItemWishList(itemId, existsInWishList));\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n onSignedOutError();\n break;\n default:\n break;\n }\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n case API_ERRORS.VERSION_MISMATCH:\n break;\n default:\n logger(error);\n break;\n }\n });\n};\n\nconst updateItem = ({ itemId, item }) => ({\n type: actionTypes.UPDATE_ITEM,\n payload: { itemId, item }\n});\n\nconst initialize = initData => ({\n type: actionTypes.INITIALIZE,\n payload: getInitialState(initData)\n});\n\nexport default {\n add,\n addItemsToWishList,\n addRecentlyViewed,\n initialize,\n setItemWishList,\n updateItem,\n wishlist\n};\n","import myTraderaItemActions from './my-tradera-items';\nimport qs from 'qs';\nimport { checkStateOfQueryParams } from '../../helpers/route-helper';\nimport {\n selectCookiesState,\n setCookie\n} from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport {\n setFiltersFromRouter,\n updateFiltersForSelectedPage,\n updatePageSize\n} from 'tradera-apps/my-tradera/app/state/reducers/filters';\n\nexport const setPageSize = value => dispatch => {\n dispatch(\n setCookie({\n name: 'ITEMS_PER_PAGE',\n value\n })\n );\n dispatch(updatePageSize({ size: value }));\n};\n\nexport const setFiltersForSelectedPage = ({ newFilters, defaultFilters }) => (\n dispatch,\n getState\n) => {\n const pageSize = selectCookiesState(getState()).ITEMS_PER_PAGE;\n if (pageSize) {\n newFilters.modifiers.paging.size = pageSize;\n }\n\n dispatch(updateFiltersForSelectedPage({ newFilters, defaultFilters }));\n};\n\nexport const historyLocationDidUpdate = history => (dispatch, getState) => {\n const isPrevAndCurrentPathnameEqual = () => {\n const routingState = getState().router;\n return (\n routingState.location &&\n routingState.location.pathname &&\n routingState.location.pathname === history.location.pathname\n );\n };\n\n const { location } = history;\n\n if (history.action === 'POP' && isPrevAndCurrentPathnameEqual()) {\n if (\n checkStateOfQueryParams(getState, location.search) &&\n selectMyTraderaState(getState()).isSearching === false\n ) {\n const { filters } = qs.parse(location.search.replace('?', ''));\n dispatch(setFiltersFromRouter({ filters }));\n dispatch(myTraderaItemActions.updateURL());\n }\n } else if (history.action === 'PUSH' && !isPrevAndCurrentPathnameEqual()) {\n if (\n checkStateOfQueryParams(getState, location.search) &&\n selectMyTraderaState(getState()).isSearching === false\n ) {\n const { filters } = qs.parse(location.search.replace('?', ''));\n dispatch(setFiltersFromRouter({ filters }));\n dispatch(myTraderaItemActions.updateURL());\n }\n }\n};\n\nexport const showHideFilterToolbar = showCookies => dispatch => {\n dispatch(\n setCookie({\n name: 'SHOW_FILTERS',\n value: showCookies === 'visible' ? 'hidden' : 'visible'\n })\n );\n};\n","import { createBrowserHistory } from 'history';\nimport { isServer } from 'tradera-utils/nextjs';\n\nconst history = isServer ? null : createBrowserHistory();\n\nexport const getHistory = () => {\n if (isServer) {\n throw new Error('Do not use history on server');\n }\n return history;\n};\n","export default {\n AUCTION: 'Auction',\n AUCTION_BIN: 'AuctionBin',\n PURE_BIN: 'PureBin',\n SHOP_ITEM: 'ShopItem'\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"animate-on-value-change\":\"animate-on-value-change--oN6-7\",\"animateOnValueChange\":\"animate-on-value-change--oN6-7\",\"animate\":\"animate--1oeJ_\"};","import React, { useEffect, useRef, useState } from 'react';\nimport styles from './animate-on-value-change.module.scss';\n\nexport const AnimateOnValueChange = ({ trigger, children }) => {\n const [animate, setAnimate] = useState(false);\n const firstUpdate = useRef(true);\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n setAnimate(true);\n }, [trigger]);\n\n return (\n setAnimate(false)}>\n {children}\n \n );\n};\n","import { logger } from 'packages';\nimport { nullifyUndefinedProperties } from 'tradera-utils/object';\n\n/**\n *\n * @param {object} initData\n * @param {object} [initData.featureSwitches]\n * @param {object} [initData.startPageResponse]\n * @param {object} [initData.trendingBrands]\n * @param {object} [initData.trendingSearches]\n * @returns {{isFetching: boolean, hasResults: boolean, config: object, trendingBrands: object, trendingSearches: object}}\n */\nexport default (initData = {}) => {\n const {\n startPageResponse,\n trendingBrands = { items: [], status: 'NOT_FETCHED' },\n trendingSearches = { items: [], status: 'NOT_FETCHED' },\n wishList = { itemIds: [], status: 'NOT_FETCHED' },\n favouriteSellers = {\n sellers: [],\n sellerSuggestions: [],\n items: [],\n totalItems: 0,\n status: 'NOT_FETCHED'\n }\n } = initData;\n let config;\n if (startPageResponse?.config) {\n try {\n config = JSON.parse(startPageResponse.config);\n } catch (error) {\n logger(error);\n }\n }\n return nullifyUndefinedProperties({\n status: config ? 'HAS_DATA' : 'NOT_FETCHED',\n config,\n trendingBrands,\n trendingSearches,\n wishList,\n favouriteSellers\n });\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport initialState from './initial-state';\n\nconst startPageSlice = createSlice({\n name: 'startPage',\n initialState: initialState(),\n reducers: {\n initialize: (_state, { payload }) => {\n return initialState(payload);\n },\n setStartPageConfigAction: (state, { payload }) => {\n state.config = payload.config;\n state.status = payload.status;\n },\n setStartPageConfigStatusAction: (state, { payload }) => {\n state.status = payload.status;\n },\n setTrendingBrandsAction: (state, { payload }) => {\n state.trendingBrands.items = payload.items;\n state.trendingBrands.status = payload.status;\n },\n setTrendingBrandsStatusAction: (state, { payload }) => {\n state.trendingBrands.status = payload.status;\n },\n setTrendingSearchesAction: (state, { payload }) => {\n state.trendingSearches.items = payload.items;\n state.trendingSearches.status = payload.status;\n },\n setTrendingSearchesStatusAction: (state, { payload }) => {\n state.trendingSearches.status = payload.status;\n },\n setWishListAction: (state, { payload }) => {\n state.wishList.itemIds = payload.itemIds;\n state.wishList.status = payload.status;\n },\n setWishListStatusAction: (state, { payload }) => {\n state.wishList.status = payload.status;\n },\n setFavouriteSellersAction: (state, { payload }) => {\n state.favouriteSellers = {\n ...state.favouriteSellers,\n ...payload\n };\n },\n setFavouriteSellersStatusAction: (state, { payload }) => {\n state.favouriteSellers.status = payload.status;\n }\n }\n});\n\nexport const {\n initialize,\n setStartPageConfigAction,\n setStartPageConfigStatusAction,\n setTrendingBrandsAction,\n setTrendingBrandsStatusAction,\n setTrendingSearchesAction,\n setTrendingSearchesStatusAction,\n setWishListAction,\n setWishListStatusAction,\n setFavouriteSellersAction,\n setFavouriteSellersStatusAction\n} = startPageSlice.actions;\n\nexport default startPageSlice.reducer;\n","/**\n * Clone of 'init-data'\n * @returns initData as JSON;\n */\nconst initData = () => {\n if (!window.initData) {\n const initDataEL = document.getElementById('init-data');\n if (initDataEL) {\n const data = initDataEL.getAttribute('data-init-data');\n const parsed = JSON.parse(data);\n return parsed;\n } else {\n return null;\n }\n } else {\n return window.initData;\n }\n};\n\nexport default initData;\n","import getInitData from './init-data';\nimport { logger } from 'packages';\nimport { reload } from 'tradera-utils/location';\n/**\n * The fetch() function is a Promise-based mechanism for programmatically making web requests in the browser;\n * The fetch implementation we're using is developer by GitHub and polyfills the API for browsers that don't contain it.\n * https://github.com/github/fetch\n */\n\nconst refreshPageIfNotAuthenticated = statusCode => {\n if (statusCode === 401 || statusCode === 402) {\n document.location = document.location.pathname;\n }\n return false;\n};\n\n/**\n * Checks status of Fetch response;\n * @param {object} response\n */\nconst checkStatus = response => {\n const ID = getInitData();\n const tradVersion =\n response && response.headers\n ? response.headers.get('X-Tradera-Version')\n : '';\n if (tradVersion && tradVersion !== ID.version) {\n reload(true);\n }\n if (\n response.status >= 200 &&\n response.status < 300 &&\n typeof response !== 'string'\n ) {\n return Promise.resolve(response);\n } else {\n if (refreshPageIfNotAuthenticated(response.status)) {\n const error = new Error('Du har blivit utloggad - sidan laddas om');\n error.response = response;\n logger(error);\n } else {\n return Promise.reject(response);\n }\n }\n};\n\n/**\n * parseJSON - don't remove res\n * @param {object} res - the response from the fetch API;\n */\nconst parseJSON = res => res.json();\n\n/**\n * get request from server;\n * @param {string} endPoint - declare where the network request is to be made\n * @param {string} params.body - body of the request\n * @param {string} params.method - request method\n */\nconst get = (endPoint, params) =>\n fetch(endPoint, {\n ...params,\n method: params.method || 'POST',\n dataType: params.dataType || 'json',\n headers:\n params.headers === false\n ? ''\n : params.headers || {\n 'Content-Type': 'application/json; charset=UTF-8'\n },\n credentials: 'include'\n })\n .then(checkStatus)\n .then(parseJSON);\n\nexport default get;\n","import { createSlice } from '@reduxjs/toolkit';\nimport getPayoutState from './initial-state';\n\nconst payoutSlice = createSlice({\n name: 'payout',\n initialState: getPayoutState(),\n reducers: {\n receivePayouts: (state, { payload }) => {\n const { member, traderaPay } = payload;\n state.member = member;\n state.traderaPay = traderaPay;\n state.isFetching = false;\n },\n removePayout: state => {\n state.traderaPay.payoutDestination = null;\n },\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n }\n }\n});\n\nexport const {\n receivePayouts,\n removePayout,\n setFetching\n} = payoutSlice.actions;\n\nexport default payoutSlice.reducer;\n\nexport const selectPayoutState = state => state.views.myTradera.payout;\n","export default () => {\n return {\n member: null,\n traderaPay: {},\n isFetching: false\n };\n};\n","const STORAGE_KEYS = {\n COOKIE_NOTIFICATION: 'cookieNotification',\n HIDE_WISH_LIST_INFO_CARD: 'hideWishListInfoCard',\n ITEMS_CLICK: 'items-click',\n SAVE_SEARCH_HINT: 'save-search-tooltip',\n SEARCH_RECENT: 'search-recent',\n WEB_PUSH_ACCEPTED: 'web_push_accepted',\n WEB_PUSH_SHOWN_MODALS: 'webPushModalsShown',\n SELLER_LIST_COMPACT_VIEW: 'sellerListCompactView',\n SYI_NEW_LAYOUT_INFO_DISMISSED: 'syiNewLayoutInfoDismissed',\n SYI_DESCRIPTION_LANGUAGE_DISMISSED: 'syiDescriptionLanguageDismissed',\n BATCH_PAYOUTS_ALERT_DISMISSED: 'batchPayoutsAlertDismissed',\n // State caches\n CACHE_MESSAGING_BADGES: 'cache.messagingBadges',\n CACHE_RECENTLY_VIEWED_ITEMS: 'cache.recentlyViewedItems',\n CACHE_SYSTEM_MESSAGES: 'cache.systemMessages',\n // Apple ID login user\n APPLE_ID_USER: 'appleId.user'\n};\n\nconst STORAGE_VALUES = {\n SAVE_SEARCH_HINT_CLICKED: 'CLOSE_CLICKED'\n};\n\nexport { STORAGE_KEYS, STORAGE_VALUES };\n","export const infoItemComponents = {\n BIDS: 'BIDS',\n TIME_LEFT: 'TIME_LEFT',\n ITEM_PRICE: 'ITEM_PRICE'\n};\n","import GdprSettings from 'tradera-utils/gdpr-settings';\nimport { STORAGE_KEYS } from 'tradera-constants/storage';\nimport logger from 'packages/logger';\nimport { isServer } from 'tradera-utils/nextjs';\n\n/**\n * Storage wrapper/utility\n */\nclass Storage {\n /**\n * @param {object} storage - Storage-compatible object\n * @param {function} [setFilter] - Functions that returns true/false for a storage key, deciding if it should be set in storage\n */\n constructor(storage, setFilter) {\n this.storage = storage;\n this.setFilter = setFilter;\n }\n\n get length() {\n return this.storage.length;\n }\n\n /**\n * @param {int} index\n * @returns {string}\n */\n key(index) {\n return this.storage.key(index);\n }\n\n /**\n * @param {string} key\n * @returns {null|any}\n */\n getItem(key) {\n const value = this.storage.getItem(key);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (error) {\n logger(error, {\n contexts: {\n storage: {\n action: 'getItem',\n key,\n value\n }\n }\n });\n }\n }\n return null;\n }\n\n getItemsByPrefix(prefix) {\n const items = {};\n for (let i = 0; i < this.storage.length; i++) {\n let key = this.key(i);\n if (key.startsWith(prefix)) {\n items[key] = this.getItem(key);\n }\n }\n return items;\n }\n\n /**\n * @param {string} key\n * @param {any} value\n * @returns {undefined}\n */\n setItem(key, value) {\n if (this.setFilter && !this.setFilter(key)) {\n return undefined;\n }\n try {\n this.storage.setItem(key, JSON.stringify(value));\n } catch (error) {\n logger(error, {\n contexts: {\n storage: {\n action: 'setItem',\n key,\n stringifiedLength: JSON.stringify(value).length,\n value\n }\n }\n });\n }\n }\n\n /**\n * @param {string} key\n * @returns {undefined}\n */\n removeItem(key) {\n return this.storage.removeItem(key);\n }\n\n clear() {\n return this.storage.clear();\n }\n\n /**\n * Removes all items whose keys start with prefix\n * @param {string} prefix\n */\n clearByPrefix(prefix) {\n // Loop in reverse because storage indexes will change as you delete items.\n for (let i = this.storage.length - 1; i >= 0; --i) {\n let key = this.key(i);\n if (key.startsWith(prefix)) {\n this.removeItem(key);\n }\n }\n }\n}\n\n/**\n * In-memory Storage object for testing & fallback\n */\nclass MemoryStorage {\n constructor() {\n this.storage = new Map();\n }\n\n get length() {\n return this.storage.size;\n }\n\n key(index) {\n const keys = Array.from(this.storage.keys());\n if (index in keys) {\n return keys[index];\n } else {\n return null;\n }\n }\n\n getItem(key) {\n return this.storage.get(key);\n }\n\n setItem(key, value) {\n this.storage.set(key, value);\n }\n\n removeItem(key) {\n this.storage.delete(key);\n }\n\n clear() {\n this.storage.clear();\n }\n}\n\n/**\n * Test if a storage implementation is available\n *\n * @param {Storage} storage\n * @returns {boolean}\n */\nfunction testStorage(storage) {\n if (!storage) {\n return false;\n }\n const TEST_KEY = 'STORAGE_TEST';\n const TEST_VALUE = '1';\n try {\n // This will throw an exception in some browsers when cookies/localStorage are explicitly disabled (i.e. Chrome)\n storage.setItem(TEST_KEY, TEST_VALUE);\n if (storage.getItem(TEST_KEY) === TEST_VALUE) {\n storage.removeItem(TEST_KEY);\n } else {\n throw new Error();\n }\n } catch (e) {\n return false;\n }\n return true;\n}\n\n// Standard local store with GDPR cookie filter and in-memory storage fallback\nconst defaultStorage =\n !isServer && testStorage(window.localStorage)\n ? window.localStorage\n : new MemoryStorage();\nconst gdprSettings = GdprSettings;\nconst localStore = new Storage(defaultStorage, key => {\n if (!Object.values(STORAGE_KEYS).includes(key)) {\n logger(`Storage key '${key}' not found in STORAGE_KEYS`);\n return false;\n }\n if (!gdprSettings.isFunctionalEnabled()) {\n console.warn('Local storage blocked by GDPR settings', true);\n return false;\n }\n return true;\n});\n\nexport { Storage, MemoryStorage, localStore };\n","/**\n * Using an accessible dialog or \"modal\" window. From Reach UI\n * https://ui.reach.tech/dialog\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { DialogOverlay, DialogContent } from '@reach/dialog';\nimport MediaQuery from 'react-responsive';\n\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\n\nconst mobileOnlyProps = { maxWidth: BREAKPOINT_SIZES[BREAKPOINTS.SM].max };\nconst desktopOnlyProps = { minWidth: BREAKPOINT_SIZES[BREAKPOINTS.MD].min };\nconst allDeviceProps = { minWidth: BREAKPOINT_SIZES[BREAKPOINTS.XS].min };\n\nclass DialogModal extends Component {\n static propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n desktop: PropTypes.bool,\n dismissOnOverlayClick: PropTypes.bool,\n mediaQueryProps: PropTypes.object,\n mobile: PropTypes.bool,\n mobileFullscreen: PropTypes.bool,\n onDismiss: PropTypes.func,\n style: PropTypes.object\n };\n\n static defaultProps = {\n className: '',\n desktop: false,\n dismissOnOverlayClick: true,\n mobile: false,\n mobileFullscreen: true\n };\n\n getDefaultMediaProps() {\n const { mobile, desktop } = this.props;\n if (mobile && desktop) {\n return allDeviceProps;\n }\n if (mobile) {\n return mobileOnlyProps;\n }\n if (desktop) {\n return desktopOnlyProps;\n }\n return allDeviceProps;\n }\n\n render() {\n const {\n children,\n className,\n dismissOnOverlayClick,\n onDismiss,\n mediaQuery,\n mobileFullscreen,\n style\n } = this.props;\n\n let mediaQueryProps;\n if (!mediaQuery) {\n mediaQueryProps = this.getDefaultMediaProps();\n } else {\n mediaQueryProps = mediaQuery;\n }\n\n return (\n \n {}}\n className={\n mobileFullscreen\n ? ' mobile-fullscreen'\n : ' mobile-alert'\n }>\n \n {children}\n \n \n \n );\n }\n}\n\nexport default DialogModal;\n","import { toLocalizedUrl } from 'tradera-utils/url';\nimport { getLanguage } from 'tradera-apps/syi/script/app_react/utils/language';\nimport { whenInitialized } from 'tradera-lang/boot-languages';\nimport i18n from 'i18next';\n\nfunction TriotException(message) {\n this.message = message;\n this.name = 'TriotException';\n}\n\n// Inherit riot's api\nvar triot = Object.create(riot);\n\n// Expose a global observable as triot.bus\n// Used by non-riot components, such as data-services\nObject.defineProperties(triot, {\n bus: {\n value: triot.observable(),\n enumerable: false,\n writable: false,\n configurable: false\n }\n});\n\n// Add the global bus to all riot components\n// so they can reach it as this.bus, ie this.bus.on('eventName' .. )\n// No more need to pass the bus around and no\n// more \"var bus = riot.observable()\" on different places\ntriot.mixin({\n init: function() {\n this.on('before-mount', function () {\n Object.defineProperties(this, {\n bus: {\n value: triot.bus,\n enumerable: false,\n writable: false,\n configurable: false\n }\n });\n });\n }\n});\n\ntriot.mixin({\n init: function() {\n this.toLocalizedUrl = url => {\n return toLocalizedUrl(url, getLanguage());\n };\n }\n});\n\ntriot.mixin({\n init: function() {\n let translate = () => '';\n this.t = (...args) => translate(...args);\n whenInitialized().then(({ t }) => {\n translate = t;\n this.update();\n });\n }\n});\n\n// Triot's mount functionality doesn't break if we try to mount\n// a component that doesn't exist. We add a safeMount function\n// that throws if number of mounted components < 1.\nfunction safeMount (selector, tagName, opts) {\n var mountedComponents = triot.mount(selector, tagName, opts);\n if (mountedComponents.length < 1) {\n throw new TriotException('No component mounted with selector: ' + selector);\n }\n return mountedComponents;\n}\n\n// Expose safeMount as triot.safeMount\nObject.defineProperties(triot, {\n safeMount: {\n value: safeMount,\n enumerable: false,\n writable: false,\n configurable: false\n }\n});\n\n// Function to unmount all components\nfunction unmountAll (keepRootTag) {\n var unmounted = 0;\n while (triot.vdom.length > 0) {\n triot.vdom[0].unmount(keepRootTag);\n unmounted++;\n }\n return unmounted;\n}\n\nfunction setupTeardown () {\n triot.bus.on('triot:teardown', function (payload) {\n payload = payload || {};\n var keepRootTag = !!payload.keepRootTag;\n unmountAll(keepRootTag);\n triot.bus.off('*');\n\n setupTeardown();\n });\n}\n\nsetupTeardown();\n\nexport default triot\n","import { createSlice } from '@reduxjs/toolkit';\n\nexport const initialState = {};\n\nconst slice = createSlice({\n name: 'status',\n initialState,\n reducers: {\n setIsActionsPerFullPageLoadDone: (state, { payload }) => {\n state.isActionsPerFullPageLoadDone = payload;\n },\n setIsHumanyScriptLoaded: (state, { payload }) => {\n state.isHumanyScriptLoaded = payload;\n }\n }\n});\n\nexport const {\n setIsActionsPerFullPageLoadDone,\n setIsHumanyScriptLoaded\n} = slice.actions;\n\nexport const reducer = slice.reducer;\n","const BID_VALIDATION_RESULTS = {\n AUCTION_HAS_ENDED: 'AuctionHasEnded',\n AUCTION_HAS_NOT_STARTED: 'AuctionHasNotStarted',\n BELOW_MINIMUM: 'BelowMinimum',\n BELOW_OWN_LEADING_BID: 'BelowOwnLeadingBid',\n BELOW_RESERVE_PRICE: 'BelowReservePrice',\n BID_NOT_FOUND: 'BidNotFound',\n BIDDER_IS_BLOCKED: 'BidderIsBlocked',\n BIDDING_OR_BUYING_OWN_ITEM: 'BiddingOrBuyingOwnItem',\n BUYING_LIMIT_REACHED: 'BuyingLimitReached',\n EQUAL_OR_HIGHER_THAN_BUY_IT_NOW: 'EqualOrHigherThanBuyItNow',\n HIGHER_BIDDER_EXISTS: 'HigherBidderExists',\n ITEM_NO_LONGER_AVAILABLE: 'ItemNoLongerAvailable',\n ITEM_NOT_FOUND: 'ItemNotFound',\n LEADING_BIDDER: 'LeadingBidder',\n NO_LONGER_VALID: 'NoLongerValid',\n ONLY_EU_BUYERS_ACCEPTED: 'OnlyEUBuyersAccepted',\n ONLY_NORDIC_BUYERS_ACCEPTED: 'OnlyNordicBuyersAccepted',\n ONLY_SWEDISH_BUYERS_ACCEPTED: 'OnlySwedishBuyersAccepted',\n SUCCESSFULLY_CHANGED_AUTOBID: 'SuccessfullyChangedAutoBid',\n USER_IS_SUSPENDED: 'UserIsSuspended',\n MAX_PLACED_BIDS_LIMIT: 'MaxPlacedBidsLimit',\n BID_AMOUNT_LIMIT: 'BidAmountLimit',\n OFFLINE: 'Offline'\n};\n\nconst BID_VALIDATION_SUCCESSES = [\n BID_VALIDATION_RESULTS.LEADING_BIDDER,\n BID_VALIDATION_RESULTS.SUCCESSFULLY_CHANGED_AUTOBID\n];\n\nconst BID_VALIDATION_RETRY = [\n BID_VALIDATION_RESULTS.BELOW_MINIMUM,\n BID_VALIDATION_RESULTS.BELOW_RESERVE_PRICE,\n BID_VALIDATION_RESULTS.BELOW_OWN_LEADING_BID,\n BID_VALIDATION_RESULTS.HIGHER_BIDDER_EXISTS,\n BID_VALIDATION_RESULTS.OFFLINE\n];\n\nconst BIN_VALIDATION_RESULTS = {\n ITEM_NOT_FOUND: 'ItemNotFound',\n ONLY_EU_BUYERS_ACCEPTED: 'OnlyEUBuyersAccepted',\n ONLY_NORDIC_BUYERS_ACCEPTED: 'OnlyNordicBuyersAccepted',\n ONLY_SWEDISH_BUYERS_ACCEPTED: 'OnlySwedishBuyersAccepted',\n USER_IS_SUSPENDED: 'UserIsSuspended',\n BIDDER_IS_BLOCKED: 'BidderIsBlocked',\n ITEM_HAS_ENDED: 'ItemHasEnded',\n BUYING_OWN_ITEM: 'BuyingOwnItem',\n ITEM_ALREADY_PURCHASED_BY_OTHER_USER: 'ItemAlreadyPurchasedByOtherUser',\n PURCHASE_DID_NOT_SUCCEED: 'PurchaseDidNotSucceed'\n};\n\nexport {\n BID_VALIDATION_RESULTS,\n BID_VALIDATION_SUCCESSES,\n BID_VALIDATION_RETRY,\n BIN_VALIDATION_RESULTS\n};\n","import initData from 'init-data';\nimport { createSlice } from '@reduxjs/toolkit';\nimport userData from 'tradera-apps/syi/script/app_react/services/user-data';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\n\nconst defaultRegionValue = 'EU';\nlet availableAllowedBuyerRegions;\nlet defaultBuyerRegion;\nlet initialState;\n\nconst initModuleGlobals = () => {\n if (\n !initData.pageSpecificData ||\n !initData.pageSpecificData.allowedBuyerRegions\n ) {\n return null;\n }\n\n availableAllowedBuyerRegions =\n initData.pageSpecificData.allowedBuyerRegions;\n defaultBuyerRegion = availableAllowedBuyerRegions.find(\n r => r.value === defaultRegionValue\n );\n\n initialState = {\n availableAllowedBuyerRegions: availableAllowedBuyerRegions,\n selectedBuyerRegion: defaultBuyerRegion.value,\n selectedBuyerRegionText: defaultBuyerRegion.text,\n availableAllowedBuyerRegionsForEditWithBids: false,\n isSetAllowedBuyerRegionToAtLeastEuEnabled:\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches[\n 'international-shipping-schenker-eu-default'\n ],\n isTraderaPayEnabled: userData.payment.isTraderaPayEnabled\n };\n};\n\ninitModuleGlobals();\nconst buyerRegionSlice = createSlice({\n name: 'buyer-region',\n initialState: initialState,\n reducers: {\n setAllowedBuyerRegion: (state, action) => {\n const region = availableAllowedBuyerRegions.find(\n r => r.value === action.payload.allowedBuyerRegion\n );\n const { value, text } = region || defaultBuyerRegion;\n state.selectedBuyerRegion = value;\n state.selectedBuyerRegionText = text;\n\n return state;\n },\n setAvailableAllowedBuyerRegions: (state, action) => {\n state.availableAllowedBuyerRegions =\n action.payload.availableRegions;\n state.availableAllowedBuyerRegionsForEditWithBids = true;\n return state;\n }\n }\n});\n\nexport const setAvailableAllowedBuyerRegions = () => (dispatch, getState) => {\n const draftState = getSyiSlice(getState()).draft;\n const regionState = getSyiSlice(getState()).buyerRegion;\n const regions = regionState.availableAllowedBuyerRegions;\n const selectedRegion = regionState.selectedBuyerRegion;\n const filters = {\n Sweden: region =>\n ['Sweden', 'Nordic', 'EU', 'International'].indexOf(region.value) >\n -1,\n Nordic: region =>\n ['Nordic', 'International'].indexOf(region.value) > -1,\n EU: region => ['EU', 'International'].indexOf(region.value) > -1,\n International: region => ['International'].indexOf(region.value) > -1\n };\n const useFilter = draftState.draftReason === 'ChangeItemWithBids';\n const filter = (useFilter && filters[selectedRegion]) || (() => true);\n const availableRegions = regions.filter(filter);\n dispatch(\n buyerRegionSlice.actions.setAvailableAllowedBuyerRegions({\n availableRegions\n })\n );\n};\n\nexport const { setAllowedBuyerRegion } = buyerRegionSlice.actions;\n\nexport default buyerRegionSlice.reducer;\n","import axios from 'axios';\nimport qs from 'qs';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosConfigs,\n checkResponseLoggedOut,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\nimport { touchWebClient } from 'tradera-utils/http';\n\nconst getItem = itemId =>\n touchWebClient.get('ajax/item/' + itemId, {\n withCredentials: true\n });\n\nfunction postWishlistItem(itemId, add) {\n return axios\n .post(\n add ? ENDPOINTS.WISHLIST_ADD : ENDPOINTS.WISHLIST_REMOVE,\n {\n itemId\n },\n axiosConfigs.authenticated\n )\n .then(checkResponseLoggedOut())\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nfunction getItemDiscountQuota() {\n return axios\n .get(ENDPOINTS.ITEM_DISCOUNT_QUOTA, { withCredentials: true })\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nfunction postItemSettings(itemId, onDisplay, discountRate) {\n const formData = qs.stringify({\n itemId,\n onDisplay,\n discountRate\n });\n return axios\n .post(ENDPOINTS.SETTINGS, formData, axiosConfigs.authenticated)\n .then(checkResponseLoggedOut())\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nexport { getItem, postWishlistItem, getItemDiscountQuota, postItemSettings };\n","// extracted by mini-css-extract-plugin\nexport default {\"dialog\":\"dialog--pUDDs\"};","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport { LeaveFeedback } from './leave-feedback';\nimport { ROLES } from './constants';\nimport { closeModal } from 'tradera-state/ui/actions';\nimport { useTranslator } from 'tradera-lang/translate';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport styles from './single-feedback-dialog.module.scss';\n\nexport const SINGLE_FEEDBACK_DIALOG_ID = 'single-feedback-dialog';\n\nexport const SingleFeedbackDialog = ({\n onDismiss = () => {},\n onDone,\n isSeller\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslator();\n const { currentModal, currentModalData } = useSelector(\n state => state.ui.modals\n );\n\n if (currentModal !== SINGLE_FEEDBACK_DIALOG_ID) {\n return null;\n }\n return (\n dispatch(closeModal())}>\n <>\n \n dispatch(closeModal())}>\n \n \n \n

\n {t(\n isSeller\n ? 'leaveFeedback_rateBuyer_title'\n : 'leaveFeedback_rateSeller_title'\n )}\n

\n {\n dispatch(closeModal());\n onDismiss();\n }}\n onDone={submittables => {\n dispatch(closeModal());\n onDone({\n submittables,\n purchaseOrderId: currentModalData.purchaseOrderId,\n transactionId: currentModalData.transactionId\n });\n }}\n />\n \n \n );\n};\n","export const MODAL_TYPE = {\n BANK_ID: 'BANK_ID',\n SWISH_APP_2_APP: 'SWISH_APP_2_APP',\n SWISH_HANDEL: 'SWISH_HANDEL'\n};\n\nexport const MODAL_STATUS = {\n START: 'START',\n COMPLETE: 'COMPLETE',\n ERROR: 'ERROR'\n};\n\nexport const PAYMENT_OPTIONS = {\n CARD: 'Card',\n PAYNOVA: 'Paynova',\n PAYPAL: 'PayPal',\n APPLEPAY: 'ApplePay',\n GOOGLEPAY: 'GooglePay',\n SWISH_APP_2_APP: 'SwishApp2App',\n SWISH_HANDEL: 'SwishHandel',\n VISA_MASTERCARD: 'VisaMasterCard',\n PAYNOVA_DIRECT_INVOICE: 'PaynovaDirectInvoice',\n PAYNOVA_INSTALLMENTS: 'PaynovaInstallments'\n};\n\nexport const PAYMENT_OPTION_STATUS = {\n AVAILABLE: 'Available',\n UNAVAILABLE_DUE_TO_AMOUNT: 'UnavailableDueToAmount'\n};\n\nexport default () => {\n return {\n buyerMember: null,\n checkoutSummary: {\n hasError: false,\n isFetching: false\n },\n hasError: false,\n items: null,\n isFetching: false,\n payment: {\n hasError: false,\n isFetching: false,\n paymentOptions: null,\n selectedPayment: null,\n paymentMethodData: null\n },\n sellerMember: null,\n modal: {\n open: '',\n status: MODAL_STATUS.START\n },\n showDisableOverlay: false,\n ongoingPaymentAttempt: null,\n shippingInfo: {\n shippingOptions: null,\n shippingPriceRange: null,\n shippingDiscount: null,\n collectionPoints: null,\n selectedCollectionPoint: null,\n isFetching: false\n },\n combinedShippingInfo: null,\n purchaseOrder: null,\n shippingOptionsLoading: false\n };\n};\n","import { selectFiltersState } from 'tradera-apps/my-tradera/app/state/selectors/filters';\n\nconst getDefaultFilters = (filtersState, checkModifiersExist) => {\n return {\n 'filters[paging][page]':\n checkModifiersExist && filtersState.modifiers.paging\n ? filtersState.modifiers.paging.page\n : '',\n 'filters[paging][size]':\n checkModifiersExist && filtersState.modifiers.paging\n ? filtersState.modifiers.paging.size\n : '',\n 'filters[selectedFilterBar]': checkModifiersExist\n ? filtersState.modifiers.selectedFilterBar\n : '',\n 'filters[sellerFilters][feedbackLeft]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.feedbackLeft\n : '',\n 'filters[sellerFilters][paid]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.paid\n : '',\n 'filters[sellerFilters][shipped]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.shipped\n : '',\n 'filters[sellerFilters][hidden]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.hidden\n : '',\n 'filters[buyerFilters][feedbackLeft]':\n checkModifiersExist && filtersState.modifiers.buyerFilters\n ? filtersState.modifiers.buyerFilters.feedbackLeft\n : '',\n 'filters[buyerFilters][paid]':\n checkModifiersExist && filtersState.modifiers.buyerFilters\n ? filtersState.modifiers.buyerFilters.paid\n : '',\n 'filters[buyerFilters][hidden]':\n checkModifiersExist && filtersState.modifiers.buyerFilters\n ? filtersState.modifiers.buyerFilters.hidden\n : ''\n };\n};\n\n/** This matches query parameters to state filters.\n * @param {object} state\n * @returns {object}\n */\nexport const getAvailableQueryParams = state => {\n const filtersState = selectFiltersState(state);\n\n const checkModifiersExist =\n !!state && filtersState && filtersState.modifiers;\n\n const defaultFilters = getDefaultFilters(filtersState, checkModifiersExist);\n\n return {\n ...defaultFilters,\n 'filters[datatype]': checkModifiersExist\n ? filtersState.modifiers.datatype\n : '',\n 'filters[dateRange][field]':\n checkModifiersExist && filtersState.modifiers.dateRange\n ? filtersState.modifiers.dateRange.field\n : '',\n 'filters[dateRange][from]':\n checkModifiersExist && filtersState.modifiers.dateRange\n ? filtersState.modifiers.dateRange.from\n : '',\n 'filters[dateRange][to]':\n checkModifiersExist && filtersState.modifiers.dateRange\n ? filtersState.modifiers.dateRange.to\n : '',\n 'filters[hasBids]': checkModifiersExist\n ? filtersState.modifiers.hasBids\n : '',\n 'filters[itemCondition]': checkModifiersExist\n ? filtersState.modifiers.itemCondition\n : '',\n 'filters[itemType]': checkModifiersExist\n ? filtersState.modifiers.itemType\n : '',\n 'filters[processState]': checkModifiersExist\n ? filtersState.modifiers.processState\n : '',\n 'filters[purchaseType]': checkModifiersExist\n ? filtersState.modifiers.purchaseType\n : '',\n 'filters[query][properties]':\n checkModifiersExist && filtersState.modifiers.query\n ? filtersState.modifiers.query.properties\n : '',\n 'filters[query][scope]':\n checkModifiersExist && filtersState.modifiers.query\n ? filtersState.modifiers.query.scope\n : '',\n 'filters[query][searchQuery]':\n checkModifiersExist && filtersState.modifiers.query\n ? filtersState.modifiers.query.searchQuery\n : '',\n 'filters[reservePriceReached]': checkModifiersExist\n ? filtersState.modifiers.reservePriceReached\n : '',\n 'filters[searchType]': checkModifiersExist\n ? filtersState.modifiers.searchType\n : '',\n 'filters[sellerFilters][shippingBooked]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.shippingBooked\n : '',\n 'filters[sort][order]':\n checkModifiersExist && filtersState.modifiers.sort\n ? filtersState.modifiers.sort.order\n : '',\n 'filters[sort][sorting]':\n checkModifiersExist && filtersState.modifiers.sort\n ? filtersState.modifiers.sort.sorting\n : '',\n 'filters[userIs]': checkModifiersExist\n ? filtersState.modifiers.userIs\n : '',\n 'filters[selectedFilterBar]': checkModifiersExist\n ? filtersState.modifiers.selectedFilterBar\n : ''\n };\n};\n\n/**\n * Checks if a query parameter is in the available parameters.\n * @param {function} getState\n * @param {object} locationQuery\n */\nexport const checkStateOfQueryParams = (getState, locationQuery) => {\n let check = getAvailableQueryParams(getState());\n let checkItem = item =>\n !!check[item] &&\n check[item].toString() !== locationQuery[item].toString();\n return Object.keys(check).some(item => {\n if (!check[item] || !locationQuery[item]) {\n return false;\n }\n return checkItem(item) ? true : false;\n });\n};\n","import { push, replace } from 'connected-react-router';\nimport qs from 'qs';\nimport {\n selectMyTraderaState,\n searching,\n error\n} from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport purchaseOrderActions from './purchase-order';\nimport { endItems } from '../../helpers/item-actions-helper';\nimport { Analytics, logger } from 'packages';\nimport { getAvailableQueryParams } from '../../helpers/route-helper';\nimport URLS from '../../constants/urls';\nimport fetch from '../../utils/fetch';\nimport featureToggles from '../../utils/feature-toggles';\nimport triot from 'triot';\nimport { selectCookiesState } from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport { selectFiltersState } from 'tradera-apps/my-tradera/app/state/selectors/filters';\nimport { selectMyTraderaItemsState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera-items';\nimport { selectRouterState } from 'tradera-apps/my-tradera/app/state/selectors/router';\nimport { scrollToInitialScroll } from 'tradera-apps/my-tradera/app/state/actions/scroll-to-initial-scroll';\nimport { webApiClient } from 'tradera-utils/http';\n\n/**\n * @param {function} dispatch dispatch redux action\n * @param {err} error error relayed from asynch call\n */\nconst handleError = (dispatch, e) => {\n dispatch(searching(false));\n dispatch(error(true));\n logger(e);\n};\n\nconst actionTypes = {\n BUYER_ACTIVE_ITEMS_HIDE: 'BUYER_ACTIVE_ITEMS_HIDE',\n BUYER_ACTIVE_ITEMS_SHOW: 'BUYER_ACTIVE_ITEMS_SHOW',\n UPDATE_ITEMS: 'UPDATE_ITEMS',\n COMPLETED_SEARCH: 'COMPLETED_SEARCH',\n OPEN_MORE: 'OPENED_MORE_BUTTON_DROPDOWN',\n SELECT_ITEM: 'SELECT_ITEM_CHECKBOX',\n SELECT_ALL_ITEMS: 'SELECT_ALL_ITEMS',\n REMOVE_ITEMS: 'REMOVE_ITEMS',\n OPEN_DEL_LISTING_ITEM: 'OPEN_DELETE_LISTING_ITEM',\n REMOVE_ALL_SELECTED: 'REMOVE_ALL_SELECTED_CHECKBOXES',\n UPDATE_ITEMS_WITH_ERROR: 'UPDATED_ALL_ITEMS_DUE_TO_ERROR',\n PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER:\n 'PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER',\n PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER:\n 'PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER',\n PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER:\n 'PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER',\n PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER:\n 'PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER',\n PURCHASE_ORDERS_HIDDEN_BY_SELLER: 'PURCHASE_ORDERS_HIDDEN_BY_SELLER',\n PURCHASE_ORDERS_HIDDEN_BY_BUYER: 'PURCHASE_ORDERS_HIDDEN_BY_BUYER',\n PURCHASE_ORDERS_SHOWN_BY_SELLER: 'PURCHASE_ORDERS_SHOWN_BY_SELLER',\n PURCHASE_ORDERS_SHOWN_BY_BUYER: 'PURCHASE_ORDERS_SHOWN_BY_BUYER',\n ITEM_HIDDEN: 'ITEM_HIDDEN',\n ITEM_SHOWN: 'ITEM_SHOWN',\n PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER:\n 'PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER',\n PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER:\n 'PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER',\n PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED:\n 'PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED',\n PURCHASE_ORDERS_MARKED_AS_SHIPPING_BOOKED:\n 'PURCHASE_ORDERS_MARKED_AS_SHIPPING_BOOKED',\n SHIPMENT_DELETED: 'SHIPMENT_DELETED',\n FEEDBACK_LEFT_BY_SELLER: 'FEEDBACK_LEFT_BY_SELLER',\n FEEDBACK_LEFT_BY_BUYER: 'FEEDBACK_LEFT_BY_BUYER',\n RESET_ITEMS: 'RESET_ITEMS',\n SET_RESTARTED: 'SET_RESTARTED',\n SET_NEW_SHIPPING_PRICE: 'SET_NEW_SHIPPING_PRICE'\n};\n\nconst updateItems = (\n value,\n page,\n listViewType,\n memberMessagingParticipation\n) => ({\n type: actionTypes.UPDATE_ITEMS,\n payload: {\n value,\n page,\n listViewType,\n memberMessagingParticipation\n }\n});\n\nconst updateItemsWithError = () => ({\n type: actionTypes.UPDATE_ITEMS_WITH_ERROR\n});\n\nconst openMore = (itemId, pageName = false) => {\n if (pageName) {\n Analytics.trackEvent({\n category: pageName,\n action: 'Toggle',\n label: 'More'\n });\n }\n\n return {\n type: actionTypes.OPEN_MORE,\n payload: itemId\n };\n};\n\nconst selectItem = (itemId, listViewType, selectedFilterBar) => ({\n type: actionTypes.SELECT_ITEM,\n payload: {\n id: itemId,\n listViewType,\n selectedFilterBar\n }\n});\n\nconst resetSelectedCheckboxes = () => ({\n type: actionTypes.REMOVE_ALL_SELECTED\n});\n\nconst selectAllItems = (select, listViewType, selectedFilterBar, memberId) => ({\n type: actionTypes.SELECT_ALL_ITEMS,\n payload: {\n select,\n listViewType,\n selectedFilterBar,\n memberId\n }\n});\n\nconst removeItems = itemIds => ({\n type: actionTypes.REMOVE_ITEMS,\n payload: itemIds\n});\n\nconst updateURL = url => (dispatch, getState) => {\n const state = getState();\n const locationDescriptor = {\n pathname: url,\n search: qs.stringify(getAvailableQueryParams(state))\n };\n\n if (!window.location.search) {\n dispatch(replace(locationDescriptor));\n } else {\n dispatch(push(locationDescriptor));\n }\n};\n\nconst purchaseOrdersMarkAsPaidBySeller = (\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType,\n messagingParticipation\n }\n});\n\nconst purchaseOrdersMarkAsPaidByBuyer = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst purchaseOrdersUnmarkAsPaidBySeller = (\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType,\n messagingParticipation\n }\n});\n\nconst purchaseOrdersUnmarkAsPaidByBuyer = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsMarkAsShippedBySeller = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsUnmarkAsShippedBySeller = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsMarkAsShippingBooked = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_SHIPPING_BOOKED,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsUnmarkAsShippingBooked = (\n purchaseOrderIds,\n listViewType\n) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionDeleteShipment = (purchaseOrderId, listViewType) => ({\n type: actionTypes.SHIPMENT_DELETED,\n payload: {\n purchaseOrderId,\n listViewType\n }\n});\n\nconst buyerActiveItemsHide = (itemIds, listViewType) => ({\n type: actionTypes.BUYER_ACTIVE_ITEMS_HIDE,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst buyerActiveItemsShow = (itemIds, listViewType) => ({\n type: actionTypes.BUYER_ACTIVE_ITEMS_SHOW,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst purchaseOrdersHiddenBySeller = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_HIDDEN_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsHiddenByBuyer = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_HIDDEN_BY_BUYER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst purchaseOrdersShownBySeller = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_SHOWN_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsShownByBuyer = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_SHOWN_BY_BUYER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst unsoldItemsHidden = (itemIds, listViewType) => ({\n type: actionTypes.ITEM_HIDDEN,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst unsoldItemsShown = (itemIds, listViewType) => ({\n type: actionTypes.ITEM_SHOWN,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst feedbackLeftBySeller = (transactionId, listViewType) => ({\n type: actionTypes.FEEDBACK_LEFT_BY_SELLER,\n payload: {\n id: transactionId,\n listViewType: listViewType\n }\n});\n\nconst feedbackLeftByBuyer = (transactionId, listViewType) => ({\n type: actionTypes.FEEDBACK_LEFT_BY_BUYER,\n payload: {\n id: transactionId,\n listViewType: listViewType\n }\n});\n\nconst resetMyTraderaItems = () => ({\n type: actionTypes.RESET_ITEMS\n});\n\nconst cancelItem = item => dispatch => {\n dispatch(searching(true));\n endItems([item.itemId])\n .then(response => {\n if (response && response.itemId) {\n dispatch(removeItems(response.itemId));\n }\n dispatch(resetSelectedCheckboxes());\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst setRestarted = (itemIds, listViewType) => ({\n type: actionTypes.SET_RESTARTED,\n payload: {\n itemIds: itemIds,\n listViewType: listViewType\n }\n});\n\n/**\n * Tmp function until backend has changed its api\n * Manipulate paging params before sending to API;\n * @param {object} params - current state.filters.modifiers;\n */\nconst changeParamsForBackend = params => {\n const skip =\n params.paging && params.paging.page > 0\n ? (params.paging.page - 1) * params.paging.size\n : 0;\n const take =\n params.paging && params.paging.page > 0 ? params.paging.size * 1 : 25;\n\n const newPaging = {\n skip: skip < 0 ? 0 : skip,\n take: take\n };\n\n return {\n ...params,\n paging: newPaging\n };\n};\n\nconst runSearch = (\n page,\n shouldScrollToInitialScroll = false,\n listViewType,\n waitForBackend = false,\n dontModifyHistory = true\n) => async (dispatch, getState) => {\n if (!featureToggles.isMyTraderaElasticEnabled) {\n return;\n }\n\n const endPoint = page && page.searchUrl;\n\n if (!endPoint) {\n return;\n }\n\n const search = async () => {\n const state = getState();\n\n dispatch(searching(true));\n dispatch(error(false));\n dispatch(purchaseOrderActions.resetPurchaseOrder());\n dispatch(resetMyTraderaItems());\n dispatch(resetSelectedCheckboxes());\n\n try {\n const modifiers = selectFiltersState(state).modifiers;\n\n const data = await fetch(endPoint, {\n body: JSON.stringify(changeParamsForBackend(modifiers))\n });\n dispatch(\n updateItems(\n data,\n page.pageName,\n listViewType,\n selectMyTraderaState(state).memberMessagingParticipation\n )\n );\n\n if (shouldScrollToInitialScroll === true) {\n scrollToInitialScroll();\n }\n dispatch(searching(false));\n return dispatch(error(false));\n } catch (error) {\n dispatch(updateItemsWithError());\n if (dontModifyHistory === false) {\n updateURL(\n dispatch,\n page.url,\n selectFiltersState(state).modifiers\n );\n }\n handleError(dispatch, error);\n }\n };\n\n // This is a hack to enable delay of searches since sometimes when modifying an item\n // outside of the SPA world, it could take some time for the backend to catch up\n if (waitForBackend === true) {\n setTimeout(search, 3000);\n } else {\n search();\n }\n};\n\nconst rebuildList = () => (dispatch, getState) => {\n const existingState = { ...selectMyTraderaItemsState(getState()) };\n if (!existingState.itemsByID) {\n return dispatch(error(true));\n }\n const state = getState();\n\n const pageName =\n selectMyTraderaState(state).page &&\n selectMyTraderaState(state).page[\n selectRouterState(state).location.pathname\n ] &&\n selectMyTraderaState(state).page[\n selectRouterState(state).location.pathname\n ].pageName;\n const items = existingState.itemsOrderedByID.map(\n i => existingState.itemsByID[i]\n );\n const newState = {\n currentTime: existingState.currentTime,\n paging: existingState.paging,\n statistics: existingState.statistics,\n items: items\n };\n dispatch(\n updateItems(\n newState,\n pageName,\n selectCookiesState(getState()).LIST_VIEW_TYPE\n )\n );\n};\n\nconst contactHighestBidder = (item, sellerEmail) => () => {\n const payload = {\n modalTitle: 'Kontakta högsta budgivare',\n messageSubject: `Meddelande från säljare: ${item.listing.shortDescription}`,\n itemEnddate: item.listing.endDate.formatted,\n itemId: item.itemId,\n itemImageUrl: item.listing.images.main.medium,\n itemTitle: item.listing.shortDescription,\n receiverMemberAlias: item.bidInformation.leadingBidder.alias,\n receiverMemberId: item.bidInformation.leadingBidder.id,\n senderMemberEmail: sellerEmail,\n businessWarning: false,\n reloadAfterClose: true\n };\n\n triot.bus.trigger('ui:contact-modal:show-modal', payload);\n};\n\n// From the more-menu\nconst buyerActiveItemsHideItems = itemIds => dispatch => {\n dispatch(searching(true));\n fetch(URLS.BUYER_ACTIVE_ITEMS_HIDE, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(removeItems(itemIds));\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\n// From the more-menu\nconst buyerActiveItemsShowItems = itemIds => dispatch => {\n dispatch(searching(true));\n fetch(URLS.BUYER_ACTIVE_ITEMS_SHOW, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(removeItems(itemIds));\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst markPurchaseOrdersAsPaidBySeller = (\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.SELLER_MARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersMarkAsPaidBySeller(\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst markPurchaseOrdersAsPaidByBuyer = (\n purchaseOrderIds,\n listViewType\n) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.BUYER_MARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersMarkAsPaidByBuyer(purchaseOrderIds, listViewType)\n );\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst unmarkPurchaseOrdersAsPaidBySeller = (\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.SELLER_UNMARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersUnmarkAsPaidBySeller(\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst unmarkPurchaseOrdersAsPaidByBuyer = (\n purchaseOrderIds,\n listViewType\n) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.BUYER_UNMARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersUnmarkAsPaidByBuyer(\n purchaseOrderIds,\n listViewType\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingUnmarkAsShippingBooked = (\n purchaseOrderIds,\n listViewType\n) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.UNMARK_BOOKED, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n transactionsUnmarkAsShippingBooked(\n purchaseOrderIds,\n listViewType\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingMarkAsShippingBooked = (\n purchaseOrderId,\n listViewType\n) => dispatch => {\n dispatch(searching(true));\n webApiClient\n .post('/member/selling/item-shipping-booked', {\n purchaseOrderId,\n booked: true\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n transactionsMarkAsShippingBooked(\n [purchaseOrderId],\n listViewType\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingDeleteShipment = (\n shipmentId,\n purchaseOrderId,\n listViewType\n) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.DELETE_SHIPMENT, {\n body: JSON.stringify({ shipmentId: shipmentId })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(transactionDeleteShipment(purchaseOrderId, listViewType));\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingMarkAsShipped = (transactionIds, listViewType) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.MARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n transactionsMarkAsShippedBySeller(transactionIds, listViewType)\n );\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingUnmarkAsShipped = (transactionIds, listViewType) => dispatch => {\n dispatch(searching(true));\n\n fetch(URLS.UNMARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n transactionsUnmarkAsShippedBySeller(\n transactionIds,\n listViewType\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingLeaveFeedback = (item, listViewType) => () => {\n const payload = {\n action: 'LeaveFeedbackAsSeller',\n ids: [item.transaction.transactionId],\n itemId: item.itemId,\n listViewType: listViewType\n };\n triot.bus.trigger('ui:list-item-action:on-leave-single-feedback', payload);\n return payload;\n};\n\nconst sellerUnhideTransaction = (\n purchaseOrderIds,\n listViewType\n) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.SELLER_SHOW, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersShownBySeller(purchaseOrderIds, listViewType)\n );\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst buyerUnhideTransaction = (transactionIds, listViewType) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.BUYER_SHOW, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(transactionsShownByBuyer(transactionIds, listViewType));\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellerHideTransaction = (purchaseOrderIds, listViewType) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.SELLER_HIDE, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersHiddenBySeller(purchaseOrderIds, listViewType)\n );\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst buyerHideTransaction = (transactionIds, listViewType) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.BUYER_HIDE, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(transactionsHiddenByBuyer(transactionIds, listViewType));\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellerUnhideUnsold = (itemIds, listViewType) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.UNSOLDSHOW, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(unsoldItemsShown(itemIds, listViewType));\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellerHideUnsold = (itemIds, listViewType) => dispatch => {\n dispatch(searching(true));\n fetch(URLS.UNSOLDHIDE, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(unsoldItemsHidden(itemIds, listViewType));\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst buyingLeaveFeedback = (item, listViewType) => () => {\n const payload = {\n action: 'LeaveFeedbackAsBuyer',\n ids: [item.transaction.transactionId],\n itemId: item.itemId,\n listViewType: listViewType\n };\n triot.bus.trigger('ui:list-item-action:on-leave-single-feedback', payload);\n return payload;\n};\n\nconst setNewShippingPrice = (purchaseOrderId, shippingProvider, newPrice) => ({\n type: actionTypes.SET_NEW_SHIPPING_PRICE,\n purchaseOrderId,\n shippingProvider,\n newPrice\n});\n\nexport default {\n resetMyTraderaItems,\n transactionsUnmarkAsShippedBySeller,\n transactionsMarkAsShippedBySeller,\n handleError,\n actionTypes,\n cancelItem,\n buyerActiveItemsHide,\n buyerActiveItemsShow,\n buyerActiveItemsHideItems, // More menu\n buyerActiveItemsShowItems, // More menu\n updateItems,\n resetSelectedCheckboxes,\n openMore,\n updateURL,\n runSearch,\n selectItem,\n removeItems,\n selectAllItems,\n contactHighestBidder,\n markPurchaseOrdersAsPaidBySeller,\n unmarkPurchaseOrdersAsPaidBySeller,\n rebuildList,\n sellerUnhideTransaction,\n sellerHideTransaction,\n sellerUnhideUnsold,\n sellerHideUnsold,\n sellingMarkAsShippingBooked,\n sellingMarkAsShipped,\n sellingUnmarkAsShipped,\n sellingUnmarkAsShippingBooked,\n sellingDeleteShipment,\n sellingLeaveFeedback,\n feedbackLeftBySeller,\n feedbackLeftByBuyer,\n markPurchaseOrdersAsPaidByBuyer,\n unmarkPurchaseOrdersAsPaidByBuyer,\n buyerUnhideTransaction,\n buyerHideTransaction,\n buyingLeaveFeedback,\n setRestarted,\n setNewShippingPrice,\n purchaseOrdersMarkAsPaidBySeller,\n purchaseOrdersUnmarkAsPaidBySeller,\n purchaseOrdersMarkAsPaidByBuyer,\n purchaseOrdersUnmarkAsPaidByBuyer,\n changeParamsForBackend\n};\n","export const getSyiSlice = state => state.views.syi;\n","export const getAllProviders = state =>\n state.primaryShippingProviders.concat(state.secondaryShippingProviders);\n\nexport const getAllProducts = state =>\n getAllProviders(state).flatMap(provider => provider.products);\n\nconst getAllVariants = state =>\n getAllProducts(state).flatMap(({ variants }) => variants);\n\nexport const getPrimaryOrSecondaryProducts = (state, onlyPrimary) =>\n (onlyPrimary\n ? state.primaryShippingProviders\n : state.secondaryShippingProviders\n ).flatMap(provider => provider.products);\n\nexport const getSelectedProduct = (state, onlyPrimary) =>\n getPrimaryOrSecondaryProducts(state, onlyPrimary).find(\n ({ selected }) => selected === true\n );\n\nexport const getVariant = (state, { type, productId }) =>\n getAllVariants(state).find(\n variant => variant.type === type && variant.id === productId\n );\n\nexport const getSelectedShippingProducts = (\n shippingByWeight,\n selectedShippingOptions,\n offerTakeaway\n) => {\n const result = selectedShippingOptions.map(selected => {\n const shippingOption = shippingByWeight\n .flatMap(options => options.products)\n .find(\n product =>\n product.providerId === selected.type &&\n product.weight === selected.weight &&\n product.id === selected.productId\n );\n return shippingOption\n ? {\n ...shippingOption,\n cost: selected?.cost\n }\n : null;\n });\n\n const possiblePosten = selectedShippingOptions.find(\n shippingOption => shippingOption.type === 'Posten'\n );\n\n if (possiblePosten) {\n result.push({\n ...possiblePosten,\n productId: possiblePosten.type,\n providerId: possiblePosten.type,\n price: possiblePosten.cost\n });\n }\n\n if (offerTakeaway) {\n const takeAwayOption =\n result.length === 0\n ? {\n type: 'TakeawayOnly',\n providerId: 'TakeawayOnly',\n name: 'Endast avhämtning',\n summaryDisplayName: 'Endast avhämtning'\n }\n : {\n type: 'Takeaway',\n providerId: 'Takeaway',\n name: 'Avhämtning',\n summaryDisplayName: 'Avhämtning'\n };\n result.push(takeAwayOption);\n }\n\n return result.filter(x => x !== null);\n};\n","import myTraderaItemActions from '../state/actions/my-tradera-items';\nimport dayjs from 'dayjs';\nimport featureToggles from '../utils/feature-toggles';\nimport { getMessagingThreadLink } from './messaging-helpers';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport uiActions, { openModal, openShareModal } from 'tradera-state/ui/actions';\nimport { types } from './item-actions-helper';\nimport { isNormalListViewType } from './item-helper';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from '../components/leave-feedback/single-feedback-dialog';\nimport { toLocalizedUrl } from 'tradera-utils/url';\nimport {\n openChangeShipping,\n openSetDiscount\n} from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\n\nconst getId = item => item.key;\nconst getIds = item => [item.itemId];\n\nconst isTakeAway = item => {\n return (\n (item.transaction.selectedShipping &&\n item.transaction.selectedShipping.isTakeaway) ||\n (item.transaction.shippingDiscount &&\n item.transaction.shippingDiscount.isTakeaway)\n );\n};\n\nconst hasStampsAsSelectedShippingType = item => {\n return (\n item.transaction.selectedShipping &&\n item.transaction.selectedShipping.type == 'PostNordStamp'\n );\n};\n\n// isPrimaryAction = will be primary action unless one before has not already been set as primary action\n// Hence, the order of the actions matter.\nconst commonActions = item => ({\n sellSimilar: () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Sälj liknande',\n getTranslatedLabel: t => t('myt_itemCard_actions_sellSimilar'),\n url: `/selling/sell-similar/${item.itemId}`,\n gaLabel: 'SellSimilar',\n isVisible: () => true,\n isPrimaryAction: () => true\n })\n});\n\nconst hasTransactionDateNewerThen60Days = item => {\n const dateLimit = dayjs().subtract(60, 'day');\n return dayjs(item.transaction?.transactionDate?.date).isAfter(dateLimit);\n};\n\nexport const soldActions = (\n item,\n listViewType,\n memberId,\n memberMessagingParticipation\n) => {\n const common = commonActions(item);\n const actions = [\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Ändra fraktpris',\n getTranslatedLabel: t =>\n item.haveCombinedShipping && item.haveMultipleRows\n ? item.transaction.shippingDiscount\n ? t(\n 'myt_itemCard_actions_update_combinedshipping_change'\n )\n : t('myt_itemCard_actions_update_combinedshipping')\n : t('myt_itemCard_actions_update_shipping'),\n dispatch: dispatch => {\n dispatch(openChangeShipping(item.transaction.purchaseOrderId));\n },\n gaLabel: 'ChangeShippingPriceSold',\n isVisible: () =>\n isNormalListViewType(listViewType) &&\n !item.haveMultipleRows &&\n !item.transaction.sellerState.paid,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Orderinformation',\n getTranslatedLabel: t => t('myt_itemCard_actions_orderInformation'),\n url: `/my/sold/buyer-info?purchaseOrderId=${item.transaction.purchaseOrderId}`,\n gaLabel: 'BuyerInfo',\n isVisible: () =>\n !!item.transaction.purchaseOrderId && !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Kontakta köpare',\n getTranslatedLabel: t => t('myt_itemCard_actions_contactBuyer'),\n dispatch: dispatch => {\n const recipientId = item.seller.id;\n const src = getMessagingThreadLink(\n recipientId,\n item.transaction.buyer.id,\n item.itemId,\n {\n traderaUserId: recipientId,\n singleThread: true,\n openForm: true,\n source: 'contact_buyer'\n }\n );\n const title = 'Kontakta köpare';\n dispatch(\n uiActions.openMessagingModal({\n title,\n src,\n recipientId,\n item\n })\n );\n },\n gaLabel: 'ContactBuyer',\n isVisible: () => {\n return (\n !item.haveMultipleRows &&\n featureToggles.isMessagingEnabled &&\n featureToggles.isMessagingBuyerButtonsEnabled &&\n memberMessagingParticipation &&\n item.transaction.purchaseOrderId &&\n item.transaction.buyer\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Markera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_markAsPaid'),\n dispatch: dispatch =>\n dispatch(\n myTraderaItemActions.markPurchaseOrdersAsPaidBySeller(\n [item.transaction.purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n ),\n gaLabel: 'MarkAsPaid',\n isVisible: () => {\n if (item.transaction.isPaidWithIntegratedPaymentOption) {\n return false;\n }\n return !item.transaction.sellerState.paid;\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Boka frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_bookShipping'),\n url: `/my/shipping?purchaseOrderId=${item.transaction.purchaseOrderId}&originUrl=%2fmy%2fsold`,\n /*\n * @todo\n */\n gaLabel: 'BookShipping',\n isVisible: () => {\n if (\n item.haveMultipleRows ||\n item.transaction.sellerState.shippingBooked ||\n item.transaction.sellerState.shipped ||\n item.transaction.hasUnpaidShipping ||\n item.isArchived\n ) {\n return false;\n }\n return true;\n },\n isPrimaryAction: () => {\n return (\n !item.transaction.hasUnpaidShipping &&\n !isTakeAway(item) &&\n !hasStampsAsSelectedShippingType(item) &&\n !item.isArchived\n );\n }\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Betala frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_payShipping'),\n url: item.transaction.unpaidShippingUrl || `/my/shipping/checkout`,\n gaLabel: 'PayShipping',\n isVisible: () => item.transaction.hasUnpaidShipping,\n isPrimaryAction: () => item.transaction.hasUnpaidShipping\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avbryt fraktbokning',\n getTranslatedLabel: t => t('myt_itemCard_actions_deleteShipping'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellingDeleteShipment(\n item.transaction.unpaidShippingId,\n item.transaction.purchaseOrderId,\n listViewType\n )\n );\n },\n gaLabel: 'DeleteShipping',\n isVisible: () =>\n item.transaction.hasUnpaidShipping && !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avmarkera som bokad',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_unmarkAsShippingBooked'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellingUnmarkAsShippingBooked(\n [item.transaction.purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n );\n },\n gaLabel: 'UnmarkAsShippingBooked',\n isVisible: () => {\n return (\n !item.transaction.trackingLink &&\n !item.haveMultipleRows &&\n item.transaction.sellerState.shippingBooked &&\n !item.transaction.sellerState.shipped\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Markera som bokad',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_markAsShippingBooked'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellingMarkAsShippingBooked(\n item.transaction.purchaseOrderId,\n listViewType\n )\n );\n },\n gaLabel: 'MarkAsShippingBooked',\n isVisible: () => {\n return (\n !item.transaction.trackingLink &&\n !item.haveMultipleRows &&\n !item.transaction.sellerState.shippingBooked &&\n !item.transaction.sellerState.shipped\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `/my/sold/buyer-info?purchaseOrderId=${item.transaction.purchaseOrderId}#shipping`,\n gaLabel: 'TrackShipment',\n isVisible: () =>\n !item.haveMultipleRows && !!item.transaction.trackingLink,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.EXTERNAL_LINK,\n label: 'Kvitto för frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_shippingReceipt'),\n url: `/my/shipping/receipt/${item.transaction.paidShipmentCheckoutId}`,\n gaLabel: 'ShippingReceipt',\n isVisible: () =>\n item.transaction.bookedShipment &&\n !item.haveMultipleRows &&\n item.transaction.bookedShipment.hasShipmentReceipt,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.EXTERNAL_LINK,\n label: 'Ladda ner fraktsedel',\n getTranslatedLabel: t => t('myt_itemCard_actions_shippingLabel'),\n url: `/my/shipping/label/${item.transaction.shipmentId}`,\n gaLabel: 'ShippingLabel',\n isVisible: () =>\n item.transaction.bookedShipment &&\n item.transaction.bookedShipment.hasShipmentLabel,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: isTakeAway(item)\n ? 'Avmarkera som hämtad'\n : 'Avmarkera som skickad',\n getTranslatedLabel: t =>\n isTakeAway(item)\n ? t('myt_itemCard_actions_unmarkAsCollected')\n : t('myt_itemCard_actions_unmarkAsSent'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellingUnmarkAsShipped(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'UnmarkAsShipped',\n isVisible: () =>\n item.transaction.sellerState.shipped && !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: isTakeAway(item)\n ? 'Markera som hämtad'\n : 'Markera som skickad',\n getTranslatedLabel: t =>\n isTakeAway(item)\n ? t('myt_itemCard_actions_markAsCollected')\n : t('myt_itemCard_actions_markAsSent'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellingMarkAsShipped(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'MarkAsShipped',\n isVisible: () =>\n !item.transaction.sellerState.shipped && !item.haveMultipleRows,\n isPrimaryAction: () => !item.transaction.hasUnpaidShipping\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Lämna omdöme',\n getTranslatedLabel: t => t('myt_itemCard_actions_leaveFeedback'),\n dispatch: dispatch => {\n dispatch(\n featureToggles.isLeaveFeedbackReactEnabled\n ? openModal({\n modalId: SINGLE_FEEDBACK_DIALOG_ID,\n data: {\n transactionId: item.transaction.transactionId\n }\n })\n : myTraderaItemActions.sellingLeaveFeedback(\n item,\n listViewType\n )\n );\n },\n gaLabel: 'LeaveFeedbackOnBuyer',\n isVisible: () =>\n !item.transaction.sellerState.feedbackLeft &&\n !item.haveMultipleRows,\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Återbetala',\n getTranslatedLabel: t => t('myt_itemCard_actions_refund'),\n dispatch: dispatch =>\n dispatch(openSetDiscount(item.transaction.purchaseOrderId)),\n gaLabel: 'Refund',\n isVisible: () =>\n !item.haveMultipleRows &&\n (item.transaction.isDiscountAfterPaymentSupported ||\n item.transaction.isRefundAllowed),\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Köparens omdömen',\n getTranslatedLabel: t => t('myt_itemCard_actions_buyerFeedback'),\n url: `/profile/feedback/${item.transaction.buyer.id}`,\n gaLabel: 'BuyerProfile',\n isVisible: () => !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Se köphistorik',\n getTranslatedLabel: t => t('myt_itemCard_actions_purchaseHistory'),\n url: `/my/item/${item.itemId}/purchasehistory`,\n gaLabel: 'PurchaseHistory',\n isVisible: () =>\n !(\n item.listing.itemType === 'Auction' ||\n item.listing.itemType === 'AuctionBin' ||\n item.haveMultipleRows\n ),\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avmarkera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_unmarkAsPaid'),\n dispatch: dispatch =>\n dispatch(\n myTraderaItemActions.unmarkPurchaseOrdersAsPaidBySeller(\n [item.transaction.purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n ),\n gaLabel: 'UnmarkAsPaid',\n isVisible: () => {\n if (item.transaction.isPaidWithIntegratedPaymentOption) {\n return false;\n }\n return (\n !!item.transaction.sellerState.paid &&\n !item.haveMultipleRows\n );\n },\n isPrimaryAction: () => true\n }),\n () => ({\n // \"UPI\" = \"Unpaid Item\"\n id: getId(item),\n type: types.LINK,\n label: 'Anmäl utebliven betalning',\n getTranslatedLabel: t => t('myt_itemCard_actions_reportUnpaidItem'),\n url: `/resolution/UPI/${item.transaction.transactionId}`,\n gaLabel: 'ReportUnpaidItem',\n isVisible: () =>\n (!item.haveMultipleRows ||\n !featureToggles.isUpiPurchaseOrderEnabled) &&\n item.transaction.sellerState.state === 'NotPaid' &&\n !item.transaction.sellerState.upiSubmitted &&\n hasTransactionDateNewerThen60Days(item),\n isPrimaryAction: () => true\n }),\n common.sellSimilar,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Lämna rabatt',\n getTranslatedLabel: t => t('myt_itemCard_actions_giveDiscount'),\n dispatch: dispatch =>\n dispatch(openSetDiscount(item.transaction.purchaseOrderId)),\n gaLabel: 'Discount',\n isVisible: () =>\n !item.haveMultipleRows &&\n (item.transaction.isDiscountBeforePaymentSupported ||\n item.transaction.isDiscountAllowed),\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Ångra dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_unhide'),\n dispatch: dispatch => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForSeller(\n item.transaction.purchaseOrderId,\n false,\n listViewType\n )\n : myTraderaItemActions.sellerUnhideTransaction(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n );\n },\n gaLabel: 'UnhideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n item.transaction?.sellerState.hidden\n : item.transaction && item.transaction.sellerState.hidden,\n isPrimaryAction: () => true\n })\n ];\n\n const hide = () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForSeller(\n item.transaction.purchaseOrderId,\n true,\n listViewType\n )\n : myTraderaItemActions.sellerHideTransaction(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n );\n },\n gaLabel: 'HideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n !item.transaction?.sellerState.hidden\n : item.transaction && !item.transaction.sellerState.hidden,\n isPrimaryAction: () => true\n });\n\n if (item.transaction && item.transaction.sellerState.state === 'Done') {\n // Make \"hide\" the primary action by setting it as the first element in the array\n actions.unshift(hide);\n } else {\n actions.push(hide);\n }\n\n return actions;\n};\n\nexport const activeSellerActions = (\n item,\n listViewType,\n memberId,\n memberMessagingParticipation\n) => {\n const isShopItem = item.listing.itemType === 'Shopitem';\n const common = commonActions(item);\n\n const translationKeys = {\n shareHeader: 'myt_shareHeader',\n shareMailSubject: 'myt_shareViaMailSubject',\n shareMailBody: 'myt_shareViaMailBody',\n sharePinterestDescription: 'myt_shareViaPinterestDescription',\n shareLinkText: 'myt_shareLink'\n };\n\n const actions = [\n () => ({\n id: getId(item),\n type: isShopItem ? types.DISABLED : types.LINK,\n tooltip: isShopItem\n ? 'Använd Sello för att ändra butiksannonser'\n : null,\n label: 'Ändra',\n getTranslatedLabel: t => t('myt_itemCard_actions_update'),\n url: `/selling/edit/${item.itemId}`,\n gaLabel: isShopItem\n ? 'EditShopItem'\n : item.bidInformation.bidCount === 0\n ? 'EditItem'\n : 'AddText',\n isVisible: () => true,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dela',\n getTranslatedLabel: t => t('myt_itemCard_actions_share'),\n gaLabel: 'ShareActiveSellingItem',\n isVisible: () => true,\n isPrimaryAction: () => false,\n dispatch: (dispatch, _props, preferredLanguageCode) => {\n const shareLinkHref = toLocalizedUrl(\n new URL(item.itemUrl, window.location.origin).href,\n preferredLanguageCode\n );\n dispatch(\n openShareModal({\n shareLinkHref,\n translationKeys,\n shareTitle: item.listing.shortDescription,\n shareImageUrl: item.listing.images.main.full\n })\n );\n }\n }),\n common.sellSimilar,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Kontakta högstbjudande',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_contactHighestBidder'),\n dispatch: dispatch => {\n const recipientId = item.seller.id;\n const src = getMessagingThreadLink(\n recipientId,\n item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id,\n item.itemId,\n {\n traderaUserId: recipientId,\n singleThread: true,\n openForm: true,\n source: 'contact_highest_bidder'\n }\n );\n const title = 'Kontakta högstbjudande';\n dispatch(\n uiActions.openMessagingModal({\n title,\n src,\n recipientId,\n item\n })\n );\n },\n gaLabel: 'ContactHighestBidder',\n isVisible: () => {\n return (\n featureToggles.isMessagingEnabled &&\n featureToggles.isMessagingBuyerButtonsEnabled &&\n memberMessagingParticipation &&\n item.bidInformation.bidCount > 0\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Kontakta högstbjudande',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_contactHighestBidder'),\n dispatch: (dispatch, props) => {\n dispatch(\n myTraderaItemActions.contactHighestBidder(\n item,\n props.sellerEmail\n )\n );\n },\n gaLabel: 'ContactHighestBidder',\n isVisible: () => {\n return (\n (!featureToggles.isMessagingEnabled ||\n !featureToggles.isMessagingBuyerButtonsEnabled ||\n !memberMessagingParticipation) &&\n item.bidInformation.bidCount > 0\n );\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avbryt annons',\n getTranslatedLabel: t => t('myt_itemCard_actions_cancelItem'),\n dispatch: dispatch => {\n dispatch(myTraderaItemActions.cancelItem(item));\n },\n gaLabel: 'EndItem',\n isVisible: () => item.bidInformation.bidCount === 0,\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n\nexport const unsoldActions = (item, listViewType, memberId) => {\n const actions = [\n () => ({\n id: getId(item),\n type: types.LINK,\n label: item.listing.restart.hasRestartedChild\n ? 'Sälj liknande'\n : 'Lägg upp igen',\n getTranslatedLabel: t =>\n item.listing.restart.hasRestartedChild\n ? t('myt_itemCard_actions_sellSimilar')\n : t('myt_itemCard_actions_restart'),\n url: item.listing.restart.hasRestartedChild\n ? `/selling/sell-similar/${item.itemId}`\n : `/selling/restart/${item.itemId}`,\n gaLabel: 'Restart',\n isVisible: () => true,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellerHideUnsold(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'HideUnsold',\n isVisible: () =>\n !item.transaction && !item.hiddenByMember?.includes(memberId),\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Visa',\n getTranslatedLabel: t => t('myt_itemCard_actions_show'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellerUnhideUnsold(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'UnhideUnsold',\n isVisible: () =>\n !item.transaction && item.hiddenByMember?.includes(memberId),\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n","import myTraderaItemActions from '../state/actions/my-tradera-items';\nimport { openModal as openMyTraderaModal } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport featureToggles from '../utils/feature-toggles';\nimport { getMessagingThreadLink } from './messaging-helpers';\nimport uiActions, { openModal } from 'tradera-state/ui/actions';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from '../components/leave-feedback/single-feedback-dialog';\nimport { isNormalListViewType } from './item-helper';\nimport { showSuccessToast } from 'tradera-services/toasts';\n\nexport const types = {\n LINK: 'LINK',\n EXTERNAL_LINK: 'EXTERNAL_LINK',\n DISPATCH: 'DISPATCH'\n};\n\nconst getId = item => item.key;\nconst getIds = item => [item.itemId];\n\nconst fixItemUrlIfNeeded = (item = {}) => {\n // Fix this at backend?\n return item.itemUrl && item.itemUrl[0] !== '/'\n ? `/${item.itemUrl}`\n : item.itemUrl;\n};\n\nconst showModal = translationKey => {\n return openMyTraderaModal({\n bulkAction: 'MytListInfo',\n modal: {\n cssClass: 'fixed',\n icon: 'check',\n isSingleButton: true,\n getTranslatedMessage: t => t(translationKey)\n }\n });\n};\n\n// isPrimaryAction = will be primary action unless one before has not already been set as primary action\n// Hence, the order of the actions matter.\nconst commonActions = item => {\n const actions = {\n itemsFromSeller: () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Säljarens annonser',\n getTranslatedLabel: t => t('myt_itemCard_actions_itemsFromSeller'),\n url: `/profile/items/${item.seller.id}/${item.seller.cleanedAlias}`,\n gaLabel: 'SellerOtherItems',\n isVisible: () => !item.haveMultipleRows,\n isPrimaryAction: () => true\n })\n };\n return actions;\n};\n\nexport const activeBuyerActions = (item, listViewType, memberId) => {\n const common = commonActions(item);\n const actions = [\n () => {\n const isLeading =\n item.bidInformation &&\n item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id === memberId;\n const fixedItemUrl = fixItemUrlIfNeeded(item);\n return {\n id: getId(item),\n type: types.LINK,\n label: isLeading ? 'Öka maxbud' : 'Lägg bud',\n getTranslatedLabel: t =>\n isLeading\n ? t('myt_itemCard_actions_raiseMaxBid')\n : t('myt_itemCard_actions_placeBid'),\n url: fixedItemUrl,\n gaLabel: isLeading ? 'RaiseMaxBid' : 'PlaceBid',\n buttonTheme: 'success',\n isVisible: () => true,\n isPrimaryAction: () => true\n };\n },\n common.itemsFromSeller,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.buyerActiveItemsHideItems(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'HideBuyerActiveItem',\n isVisible: () =>\n (item.caller.leadingBidRemoved ||\n (item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id !== memberId)) &&\n item.caller.hidden === false,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Visa',\n getTranslatedLabel: t => t('myt_itemCard_actions_show'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.buyerActiveItemsShowItems(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'ShowBuyerActiveItem',\n isVisible: () => item.caller.hidden === true, // User should always be able to Show a hidden item, no matter if leading or not\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n\nexport const boughtActions = (item, listViewType, memberId) => {\n const common = commonActions(item);\n const actions = [\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Betala',\n getTranslatedLabel: t => t('myt_itemCard_actions_pay'),\n dispatch: dispatch => {\n if (item.transaction.isPaymentExpired) {\n return dispatch(showModal('myt_orderinfo_paymentExpired'));\n }\n return (window.location.href = `/Shopping/Checkout/SelectPayment?purchaseOrderId=${item.transaction.purchaseOrderId}`);\n },\n gaLabel: 'Pay',\n buttonTheme: 'success',\n isVisible: () =>\n !item.transaction.buyerState.paid && !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Markera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_markAsPaid'),\n dispatch: dispatch => {\n if (item.transaction.isPaymentExpired) {\n return dispatch(showModal('myt_orderinfo_paymentExpired'));\n }\n showSuccessToast('siteWideNotifications_orderMarkedAsPaid');\n dispatch(\n myTraderaItemActions.markPurchaseOrdersAsPaidByBuyer(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n );\n },\n gaLabel: 'MarkAsPaid',\n isVisible: () =>\n !item.transaction.isPaidWithIntegratedPaymentOption &&\n !item.transaction.buyerState.paid &&\n !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avmarkera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_unmarkAsPaid'),\n dispatch: dispatch =>\n dispatch(\n myTraderaItemActions.unmarkPurchaseOrdersAsPaidByBuyer(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n ),\n gaLabel: 'UnmarkAsPaid',\n isVisible: () =>\n !item.transaction.isPaidWithIntegratedPaymentOption &&\n item.transaction.buyerState.paid &&\n !item.transaction.isPaymentExpired &&\n !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Lämna omdöme',\n getTranslatedLabel: t => t('myt_itemCard_actions_leaveFeedback'),\n dispatch: dispatch => {\n dispatch(\n featureToggles.isLeaveFeedbackReactEnabled\n ? openModal({\n modalId: SINGLE_FEEDBACK_DIALOG_ID,\n data: {\n transactionId: item.transaction.transactionId\n }\n })\n : myTraderaItemActions.buyingLeaveFeedback(\n item,\n listViewType\n )\n );\n },\n gaLabel: 'LeaveFeedbackOnSeller',\n isVisible: () =>\n !item.transaction.buyerState.feedbackLeft &&\n !item.haveMultipleRows,\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Orderbekräftelse',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_orderConfirmation'),\n url: `/Shopping/OrderConfirmation?purchaseOrderId=${item.transaction.purchaseOrderId}`,\n gaLabel: 'OrderConfirmation',\n isVisible: () =>\n !featureToggles.isBuyerOrderInformationEnabled &&\n !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Orderinformation',\n getTranslatedLabel: t => t('myt_itemCard_actions_orderInformation'),\n url: `/my/order/${item.transaction.purchaseOrderId}`,\n gaLabel: 'OrderInformation',\n isVisible: () =>\n featureToggles.isBuyerOrderInformationEnabled &&\n !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Kontakta säljare',\n getTranslatedLabel: t => t('myt_itemCard_actions_contactSeller'),\n dispatch: dispatch => {\n const src = getMessagingThreadLink(\n item.seller.id,\n memberId,\n item.itemId,\n {\n traderaUserId: item.seller.id,\n singleThread: true,\n openForm: true,\n source: 'contact_seller'\n }\n );\n const title = 'Kontakta säljare';\n const recipientId = item.seller.id;\n dispatch(\n uiActions.openMessagingModal({\n title,\n src,\n recipientId,\n item\n })\n );\n },\n gaLabel: 'ContactSeller',\n isVisible: () =>\n featureToggles.isMessagingEnabled &&\n featureToggles.isMessagingSellerButtonsEnabled &&\n !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.EXTERNAL_LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `${item.transaction.trackingLink}`,\n gaLabel: 'BuyerTrackShipment',\n isVisible: () =>\n !item.haveMultipleRows &&\n !featureToggles.isBuyerOrderInformationEnabled &&\n !!item.transaction.trackingLink,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `/my/order/${item.transaction.purchaseOrderId}#shipping`,\n gaLabel: 'BuyerTrackShipment',\n isVisible: () =>\n !item.haveMultipleRows &&\n featureToggles.isBuyerOrderInformationEnabled &&\n !!item.transaction.trackingLink,\n isPrimaryAction: () => true\n }),\n common.itemsFromSeller,\n () => ({\n // \"INR\" = \"Item Not Received\"\n id: getId(item),\n type: types.LINK,\n label: 'Anmäl utebliven vara',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_reportItemNotReceived'),\n url: `/resolution/INR/${item.transaction.transactionId}`,\n gaLabel: 'ReportItemNotReceived',\n isVisible: () =>\n !(\n featureToggles.isDisputesEntranceEnabled &&\n item.transaction.hasBuyerProtection\n ) && !item.transaction.buyerState.inr,\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Anmäl utebliven vara',\n getTranslatedLabel: t => t('myt_itemCard_actions_createDispute'),\n url: `/resolution/disputes/${item.transaction.transactionId}`,\n gaLabel: 'CreateDispute',\n isVisible: () =>\n featureToggles.isDisputesEntranceEnabled &&\n item.transaction.hasBuyerProtection &&\n !item.transaction.dispute,\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Ångra dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_unhide'),\n dispatch: dispatch => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForBuyer(\n item.transaction.purchaseOrderId,\n [item.transaction.transactionId],\n false,\n listViewType\n )\n : myTraderaItemActions.buyerUnhideTransaction(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'UnhideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n item.transaction?.buyerState.hidden\n : item.transaction.buyerState.hidden,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForBuyer(\n item.transaction.purchaseOrderId,\n [item.transaction.transactionId],\n true,\n listViewType\n )\n : myTraderaItemActions.buyerHideTransaction(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'HideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n !item.transaction?.buyerState.hidden\n : !item.transaction.buyerState.hidden,\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n\nexport const lostActions = (item, listViewType) => {\n const common = commonActions(item);\n const actions = [\n common.itemsFromSeller,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.buyerActiveItemsHideItems(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'HideBuyerLostItem',\n isVisible: () => true,\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n","import {\n activeSellerActions,\n soldActions,\n unsoldActions\n} from '../../helpers/item-actions-helper-seller';\nimport {\n activeBuyerActions,\n boughtActions,\n lostActions\n} from '../../helpers/item-actions-helper-buyer';\nimport { PAGE_NAMES } from '../../constants/page';\nimport logger from 'packages/logger';\n\nexport const getActionsForItem = (\n item,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n) => {\n const secondaryActions = [];\n let primaryAction = null;\n\n const checkAndAdd = action => {\n try {\n if (!action.isVisible) {\n throw 'Action is not compatible: ' + action.label;\n }\n if (!action.isVisible()) {\n return;\n }\n if (primaryAction === null && action.isPrimaryAction()) {\n primaryAction = action;\n } else {\n secondaryActions.push(action);\n }\n } catch (error) {\n logger(error);\n }\n };\n\n const resolveActions = potentialActions => {\n potentialActions.forEach(actionCreator => {\n const action = actionCreator();\n checkAndAdd(action);\n });\n return {\n primaryAction,\n secondaryActions\n };\n };\n\n let actionsForItem = [];\n switch (pageName) {\n case PAGE_NAMES.BuyerActiveItems:\n actionsForItem = resolveActions(\n activeBuyerActions(item, listViewType, memberId)\n );\n break;\n case PAGE_NAMES.BuyerPurchases:\n actionsForItem = resolveActions(\n boughtActions(item, listViewType, memberId)\n );\n break;\n case PAGE_NAMES.BuyerItemsLost:\n actionsForItem = resolveActions(lostActions(item, listViewType));\n break;\n case PAGE_NAMES.SellerSold:\n actionsForItem = resolveActions(\n soldActions(\n item,\n listViewType,\n memberId,\n memberMessagingParticipation\n )\n );\n break;\n case PAGE_NAMES.SellerUnsold:\n actionsForItem = resolveActions(\n unsoldActions(item, listViewType, memberId)\n );\n break;\n case PAGE_NAMES.SellerActive:\n actionsForItem = resolveActions(\n activeSellerActions(\n item,\n listViewType,\n memberId,\n memberMessagingParticipation\n )\n );\n break;\n default:\n throw 'Actions for item and pageName ' +\n pageName +\n ' is not defined';\n }\n return actionsForItem;\n};\n","import {\n getBuyerActiveItemsLabel,\n getBuyerItemsLostLabel,\n getActiveLabel,\n getSoldLabel,\n getUnsoldLabel,\n getPurchasesLabel\n} from './item-labels';\nimport { getActionsForItem } from './item-actions';\n\nimport { getColumns } from './item-columns';\nimport {\n buyerActiveItemsColumns,\n buyerPurchasesColumns,\n buyerItemsLostColumns,\n sellerActiveColumns,\n sellerSoldColumns,\n sellerUnsoldColumns\n} from './../../constants/column-definitions';\nimport { logger } from 'packages';\nimport { PAGE_NAMES } from '../../constants/page';\n\n/**\n * @param {boolean} declares if response is incorrect;\n */\nconst hasIncorrectResponse = response =>\n !response ||\n response === null ||\n response === undefined ||\n typeof response === 'string';\n\n/**\n * @param {object} response - copy of the response with empty values;\n */\nconst createReturnObject = response => ({\n paging: response.paging,\n itemsOrderedByID: [],\n itemsByID: {},\n statistics: response.statistics,\n currentTime: response.currentTime,\n currentMemberId: response.currentMemberId,\n sellerEmail: response.sellerEmail || ''\n});\n\n/**\n * TODO\n * Describe the relationship of transactionID / PurchaseID for future developers;\n *\n * @param {object} item - the item from webApi\n * @returns {object} The single item transformed with all properties set as expected for the front end.\n * @desc - the purchase\n */\nconst getItem = (\n item,\n labelFunc,\n columnFunc,\n listType,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n) => ({\n ...item,\n key: item.transaction ? item.transaction.transactionId : item.itemId,\n bidInformation: {\n ...item.bidInformation,\n hasBids: item.bidInformation.bidCount > 0\n },\n label: labelFunc(item, memberId),\n actions: getActionsForItem(\n item,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n ),\n columns: columnFunc(item, listType),\n shippingPrice: getCheapestShippingPrice(item),\n leadingBidder:\n item.bidInformation.leadingBidder && item.isActive\n ? item.bidInformation.leadingBidder\n : null,\n buyer:\n item.transaction && item.transaction.buyer\n ? item.transaction.buyer\n : null,\n itemUrl:\n item.itemUrl.substring(0, 1) === '/' ? item.itemUrl : `/${item.itemUrl}`\n});\n\nconst getCheapestShippingPrice = item => {\n const shippingOptions = (item.listing.shippingOptions || [])\n .filter(\n option =>\n option.shippingType !== 'Takeaway' &&\n option.shippingType !== 'TakeawayOnly'\n )\n .map(({ shippingCost }) => shippingCost);\n\n return shippingOptions.length\n ? shippingOptions.reduce((prev, current) =>\n prev < current ? prev : current\n )\n : 0;\n};\n\n/**\n * @returns {Object} : Defines which labels and actions are used for each page\n */\nconst actionLabelMap = {\n [PAGE_NAMES.BuyerActiveItems]: {\n label: getBuyerActiveItemsLabel,\n columns: buyerActiveItemsColumns,\n pageName: PAGE_NAMES.BuyerActiveItems\n },\n [PAGE_NAMES.BuyerPurchases]: {\n label: getPurchasesLabel,\n columns: buyerPurchasesColumns,\n pageName: PAGE_NAMES.BuyerPurchases\n },\n [PAGE_NAMES.BuyerItemsLost]: {\n label: getBuyerItemsLostLabel,\n columns: buyerItemsLostColumns,\n pageName: PAGE_NAMES.BuyerItemsLost\n },\n [PAGE_NAMES.SellerActive]: {\n label: getActiveLabel,\n columns: sellerActiveColumns,\n pageName: PAGE_NAMES.SellerActive\n },\n [PAGE_NAMES.SellerSold]: {\n label: getSoldLabel,\n columns: sellerSoldColumns,\n pageName: PAGE_NAMES.SellerSold\n },\n [PAGE_NAMES.SellerUnsold]: {\n label: getUnsoldLabel,\n columns: sellerUnsoldColumns,\n pageName: PAGE_NAMES.SellerUnsold\n }\n};\n\nconst getSoldItem = (item, listViewType, messagingParticipation = false) =>\n getItem(\n item,\n getSoldLabel,\n getColumns(sellerSoldColumns[listViewType], listViewType),\n actionLabelMap[PAGE_NAMES.SellerSold].columns[listViewType],\n listViewType,\n '',\n messagingParticipation,\n PAGE_NAMES.SellerSold\n );\nconst getUnsoldItem = (item, listViewType) =>\n getItem(\n item,\n getUnsoldLabel,\n getColumns(sellerUnsoldColumns[listViewType], listViewType),\n actionLabelMap[PAGE_NAMES.SellerUnsold].columns[listViewType],\n listViewType,\n '',\n false,\n PAGE_NAMES.SellerUnsold\n );\nconst getPurchasedItem = (item, listViewType) =>\n getItem(\n item,\n getPurchasesLabel,\n getColumns(buyerPurchasesColumns[listViewType], listViewType),\n actionLabelMap[PAGE_NAMES.BuyerPurchases].columns[listViewType],\n listViewType,\n '',\n true,\n PAGE_NAMES.BuyerPurchases\n );\n\n/**\n * @param {object} response - from webApi\n * @param {string} listViewType\n * @param {string} memberId\n * @param {boolean} memberMessagingParticipation\n * @param {string} pageName\n * @description creates an ordered list of items, with ui state set for frontend;\n */\nconst getItemsInOrder = (\n response,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n) => {\n if (!actionLabelMap[pageName]) {\n try {\n throw actionLabelMap[pageName];\n } catch (e) {\n logger(e);\n }\n }\n const newItems = createReturnObject(response);\n if (hasIncorrectResponse(response)) {\n return newItems;\n }\n\n Object.keys(response.items).forEach(key => {\n const item = response.items[key];\n let id = 1;\n switch (pageName) {\n case PAGE_NAMES.BuyerActiveItems:\n case PAGE_NAMES.BuyerItemsLost:\n case PAGE_NAMES.SellerUnsold:\n case PAGE_NAMES.SellerActive:\n id = item.itemId.toString();\n break;\n case PAGE_NAMES.BuyerPurchases:\n case PAGE_NAMES.SellerSold:\n id = item.transaction.transactionId.toString();\n break;\n default:\n try {\n throw `trying to update state on undefined (${pageName}) pageName`;\n } catch (e) {\n logger(e);\n }\n }\n newItems.itemsOrderedByID.push(id);\n newItems.itemsByID[id] = getItem(\n item, //item,\n actionLabelMap[pageName].label, //labelFunc,\n getColumns(\n actionLabelMap[pageName].columns[listViewType],\n listViewType\n ), //columnFunc,\n actionLabelMap[pageName].columns[listViewType], //listType,\n listViewType, //listViewType,\n memberId, //memberId,\n memberMessagingParticipation, // memberMessagingParticipation\n actionLabelMap[pageName].pageName //pageName\n );\n });\n\n return newItems;\n};\n\nexport default {\n getSoldItem,\n getUnsoldItem,\n getItemsInOrder,\n getPurchasedItem\n};\n","export const findKeysByPurchaseOrderId = items => purchaseOrderId => {\n return Object.keys(items).filter(\n key => items[key].transaction.purchaseOrderId === purchaseOrderId\n );\n};\n\nexport const findKeysByTransactionId = items => transactionId => {\n return Object.keys(items).filter(\n key => items[key].transaction.transactionId === transactionId\n );\n};\n\nexport const findKeysByItemId = items => itemId => {\n return Object.keys(items).filter(key => items[key].itemId === itemId);\n};\n","import myTraderaItemsSelector from './items';\nimport { logger } from 'packages';\nimport {\n findKeysByPurchaseOrderId,\n findKeysByTransactionId,\n findKeysByItemId\n} from '../../helpers/commands-helper.js';\n\nconst getSoldItemStateFor = sellerState => {\n if (sellerState.shipped && sellerState.feedbackLeft) {\n return 'Done';\n }\n if (sellerState.shipped) {\n return 'Shipped';\n }\n return sellerState.paid ? 'Paid' : 'NotPaid';\n};\n\nconst updateStateAndLabels = (item, listViewType, messagingParticipation) => {\n if (listViewType === undefined) {\n try {\n throw 'updateStateAndLabels: listViewType === undefined, ' + item;\n } catch (e) {\n logger(e);\n }\n }\n item.transaction.sellerState.state = getSoldItemStateFor(\n item.transaction.sellerState\n );\n return myTraderaItemsSelector.getSoldItem(\n item,\n listViewType,\n messagingParticipation\n );\n};\n\nconst updateUnsoldLabelsAndActions = (item, listViewType) => {\n if (listViewType === undefined) {\n try {\n throw 'updateUnsoldLabelsAndActions: listViewType === undefined, ' +\n item;\n } catch (e) {\n logger(e);\n }\n }\n return myTraderaItemsSelector.getUnsoldItem(item, listViewType);\n};\n\nconst setPaidState = (\n flag,\n listViewType,\n messagingParticipation\n) => items => keys => {\n return keys.map(key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setPaidState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (e) {\n logger(e);\n }\n }\n\n item.transaction.sellerState.paid = flag;\n return updateStateAndLabels(item, listViewType, messagingParticipation);\n });\n};\n\nconst setShippedState = (flag, listViewType) => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setShippedState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (e) {\n logger(e);\n }\n }\n\n item.transaction.sellerState.shipped = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setTransactionHiddenState = (flag, listViewType) => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setTransactionHiddenState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.sellerState.hidden = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setUnsoldItemHiddenState = (flag, listViewType) => (\n items,\n memberId\n) => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setUnsoldItemHiddenState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n if (!item.hiddenByMember?.includes(memberId)) {\n item.removeFromList = true;\n }\n return updateUnsoldLabelsAndActions(item, listViewType, memberId);\n};\n\nconst setFeedback = (flag, listViewType) => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setFeedback failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.sellerState.feedbackLeft = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setShippingBookedState = (flag, listViewType) => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setShippingBookedState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.sellerState.shippingBooked = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setShippingDeletedState = listViewType => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setShippingDeletedState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.hasUnpaidShipping = false;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setItemsHasRestartedChild = (flag, listViewType) => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setItemHasRestartedChild failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.listing.restart.hasRestartedChild = flag;\n return updateUnsoldLabelsAndActions(item, listViewType);\n};\n\nexport const markAsPaidBySellerReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n true,\n action.payload.listViewType,\n action.payload.messagingParticipation\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach(updatedItems => {\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const unmarkAsPaidBySellerReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n false,\n action.payload.listViewType,\n action.payload.messagingParticipation\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach(updatedItems => {\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const markAsShippedReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippedState(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const unmarkAsShippedReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippedState(\n false,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const markTransactionAsHiddenBySellerReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n true,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n updatedItems\n );\n action.payload.ids\n .flatMap(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markTransactionAsShownBySellerReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n false,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n updatedItems\n );\n action.payload.ids\n .flatMap(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markItemAsHiddenReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n const updateChangedItems = setUnsoldItemHiddenState(\n true,\n action.payload.listViewType\n )(updatedItems, state.currentMemberId);\n const findUpdatedKeysByItemId = findKeysByItemId(updatedItems);\n action.payload.ids.map(findUpdatedKeysByItemId).map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markItemAsShownReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n const updateChangedItems = setUnsoldItemHiddenState(\n false,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByItemId = findKeysByItemId(updatedItems);\n action.payload.ids.map(findUpdatedKeysByItemId).map(updateChangedItems);\n return updatedItems;\n};\n\nexport const feedbackLeftBySeller = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = [action.payload.id]\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const markAsShippingBooked = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippingBookedState(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n const updatedItems = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const unmarkAsShippingBooked = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippingBookedState(\n false,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n const updatedItems = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const deleteShipment = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippingDeletedState(\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n\n const updatedItems = [action.payload.purchaseOrderId]\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const setRestartedReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setItemsHasRestartedChild(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByItemId = findKeysByItemId(stateItems);\n const updatedItems = action.payload.itemIds\n .map(findUpdatedKeysByItemId)\n .map(updateChangedItems);\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n return stateItems;\n};\n\nexport const feedbacksLeftBySeller = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.submittables\n .map(submittable => submittable.transactionId)\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n","import myTraderaItemsSelector from './items';\nimport { logger } from 'packages';\nimport {\n findKeysByPurchaseOrderId,\n findKeysByTransactionId\n} from '../../helpers/commands-helper.js';\n\nconst updateStateAndLabels = (item, listViewType) => {\n if (listViewType === undefined) {\n try {\n throw 'updateStateAndLabels: listViewType === undefined, ' + item;\n } catch (e) {\n logger(e);\n }\n }\n return myTraderaItemsSelector.getPurchasedItem(item, listViewType);\n};\n\nconst setPaidState = (\n flag,\n listViewType,\n messagingParticipation\n) => items => keys => {\n return keys.map(key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setPaidState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (e) {\n logger(e);\n }\n }\n\n item.transaction.buyerState.paid = flag;\n return updateStateAndLabels(item, listViewType, messagingParticipation);\n });\n};\n\nconst setTransactionHiddenState = (flag, listViewType) => items => key => {\n let item = items[key];\n if (!item) {\n try {\n throw `setTransactionHiddenState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.buyerState.hidden = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setFeedback = (flag, listViewType) => items => key => {\n let item = items[key];\n if (!item) {\n try {\n throw `setFeedback failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.buyerState.feedbackLeft = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nexport const markAsPaidByBuyerReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach(updatedItems => {\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const feedbackLeftByBuyer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = [action.payload.id]\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const unmarkAsPaidByBuyerReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n false,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach(updatedItems => {\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const markTransactionAsHiddenByBuyerReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n true,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(\n updatedItems\n );\n action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markTransactionAsShownByBuyerReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n false,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(\n updatedItems\n );\n action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const feedbacksLeftByBuyer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.submittables\n .map(submittable => submittable.transactionId)\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n","import myTraderaItems from '../actions/my-tradera-items';\nimport myTraderaItemsSelector from '../selectors/items';\nimport { listActions } from '../../helpers/list-helper';\nimport { actionTypes as purchaseOrderActionTypes } from '../action-types/purchase-order';\n\nimport {\n markAsPaidBySellerReducer,\n unmarkAsPaidBySellerReducer,\n markAsShippedReducer,\n unmarkAsShippedReducer,\n markItemAsHiddenReducer,\n markItemAsShownReducer,\n markTransactionAsHiddenBySellerReducer,\n markTransactionAsShownBySellerReducer,\n feedbackLeftBySeller,\n unmarkAsShippingBooked,\n deleteShipment,\n setRestartedReducer,\n feedbacksLeftBySeller,\n markAsShippingBooked\n} from '../selectors/seller-commands';\n\nimport {\n markAsPaidByBuyerReducer,\n feedbackLeftByBuyer,\n feedbacksLeftByBuyer,\n unmarkAsPaidByBuyerReducer,\n markTransactionAsHiddenByBuyerReducer,\n markTransactionAsShownByBuyerReducer\n} from '../selectors/buyer-commands';\n\nimport { findKeysByPurchaseOrderId } from '../../helpers/commands-helper.js';\n\nexport default (state, action) => {\n state = state || {};\n\n const updateItems = () => {\n return {\n ...state,\n ...myTraderaItemsSelector.getItemsInOrder(\n action.payload.value,\n action.payload.listViewType,\n action.payload.value.currentMemberId,\n action.payload.memberMessagingParticipation,\n action.payload.page\n )\n };\n };\n\n /**\n * Called when server has an error\n * @returns {object} with basic structure needed for application.\n */\n const updateItemsWithError = () => ({\n ...state,\n itemsByID: {},\n itemsOrderedByID: [],\n statistics: {\n values: []\n },\n paging: {\n ...state.paging,\n totalItems: 0\n }\n });\n\n /**\n * Tells State which More Menu to open / close;\n * @returns {object} - new state\n */\n const openMore = () => ({\n ...state,\n isSubMenuOpen:\n action.payload === state.isSubMenuOpen ? false : action.payload\n });\n\n /**\n * Selects a specific item for bulk action;\n * @returns {object} new state\n */\n const selectItem = () => {\n let bulkChecked = false;\n if (\n !state.selectedCheckboxes ||\n state.selectedCheckboxes.length === 0\n ) {\n return {\n ...state,\n selectedCheckboxes: [action.payload.id],\n bulkChecked: bulkChecked\n };\n } else {\n let chosenBoxes = [...state.selectedCheckboxes];\n if (state.selectedCheckboxes.indexOf(action.payload.id) > -1) {\n bulkChecked = false;\n chosenBoxes = chosenBoxes.filter(\n id => id !== action.payload.id\n );\n } else {\n chosenBoxes.push(action.payload.id);\n }\n\n return {\n ...state,\n selectedCheckboxes: chosenBoxes,\n bulkChecked: bulkChecked\n };\n }\n };\n\n /**\n * Selects all items for bulk action\n * @returns {object} new state\n */\n const selectAllItems = () => {\n const checkIfActive = item => {\n const actions = listActions(\n action.payload.listViewType,\n action.payload.memberId,\n action.payload.selectedFilterBar,\n 0,\n () => {}\n );\n return actions.isCheckboxActive(item);\n };\n if (action.payload.select === true || !state.bulkChecked) {\n const allItemsWithBulk = Object.keys(state.itemsByID)\n .filter(itemId => checkIfActive(state.itemsByID[itemId]))\n .map(id => {\n return parseInt(id, 10);\n });\n return {\n ...state,\n selectedCheckboxes: allItemsWithBulk,\n bulkChecked: true\n };\n }\n\n return {\n ...state,\n selectedCheckboxes: [],\n bulkChecked: false\n };\n };\n\n const openDelListingItem = () => ({\n ...state,\n isOpenDeleteItem:\n action.payload === false ? false : !state.isOpenDeleteItem\n });\n\n const removeAllSelected = () => ({\n ...state,\n selectedCheckboxes: [],\n bulkChecked: false\n });\n\n const removeItems = () => {\n const newItemsOrderedByID = state.itemsOrderedByID.filter(id =>\n action.payload.some(element => element.toString() === id.toString())\n ? false\n : true\n );\n const newItems = {};\n newItemsOrderedByID.map(\n item => (newItems[item] = state.itemsByID[item])\n );\n return {\n ...state,\n itemsByID: newItems,\n itemsOrderedByID: newItemsOrderedByID\n };\n };\n\n const setNewShippingPrice = () => {\n const items = { ...state.itemsByID };\n const itemKeysForPurchaseOrderId = findKeysByPurchaseOrderId(items)(\n action.purchaseOrderId\n );\n const shippingDiscount = {\n shippingProvider: action.shippingProvider,\n price: action.newPrice\n };\n itemKeysForPurchaseOrderId.map(key => {\n items[key].transaction.shippingDiscount = shippingDiscount;\n });\n return {\n ...state,\n itemsByID: items\n };\n };\n\n /**\n * Reset state to empty.\n */\n const resetItems = () => ({\n ...state,\n itemsByID: [],\n itemsOrderedByID: [],\n paging: {\n ...state.paging,\n totalItems: 0\n }\n });\n\n const poMarkedAsPaidBySeller = () => ({\n ...state,\n itemsByID: markAsPaidBySellerReducer(state, action)\n });\n const poUnmarkedAsPaidBySeller = () => ({\n ...state,\n itemsByID: unmarkAsPaidBySellerReducer(state, action)\n });\n const markedAsShippedBySeller = () => ({\n ...state,\n itemsByID: markAsShippedReducer(state, action)\n });\n const unmarkedAsShippedBySeller = () => ({\n ...state,\n itemsByID: unmarkAsShippedReducer(state, action)\n });\n const poHiddenBySeller = () => ({\n ...state,\n itemsByID: markTransactionAsHiddenBySellerReducer(state, action)\n });\n const poShownBySeller = () => ({\n ...state,\n itemsByID: markTransactionAsShownBySellerReducer(state, action)\n });\n const itemHidden = () => ({\n ...state,\n itemsByID: markItemAsHiddenReducer(state, action)\n });\n const itemShown = () => ({\n ...state,\n itemsByID: markItemAsShownReducer(state, action)\n });\n const feedbackLeftBySellerReducer = () => ({\n ...state,\n itemsByID: feedbackLeftBySeller(state, action)\n });\n const feedbackLeftByBuyerReducer = () => ({\n ...state,\n itemsByID: feedbackLeftByBuyer(state, action)\n });\n const poMarkedAsShippingBooked = () => ({\n ...state,\n itemsByID: markAsShippingBooked(state, action)\n });\n const poUnmarkedAsShippingBooked = () => ({\n ...state,\n itemsByID: unmarkAsShippingBooked(state, action)\n });\n const poShipmentDeleted = () => ({\n ...state,\n itemsByID: deleteShipment(state, action)\n });\n const poMarkedAsPaidByBuyer = () => ({\n ...state,\n itemsByID: markAsPaidByBuyerReducer(state, action)\n });\n const poUnmarkedAsPaidByBuyer = () => ({\n ...state,\n itemsByID: unmarkAsPaidByBuyerReducer(state, action)\n });\n const poHiddenByBuyer = () => ({\n ...state,\n itemsByID: markTransactionAsHiddenByBuyerReducer(state, action)\n });\n const poShownByBuyer = () => ({\n ...state,\n itemsByID: markTransactionAsShownByBuyerReducer(state, action)\n });\n const setRestarted = () => ({\n ...state,\n itemsByID: setRestartedReducer(state, action)\n });\n const feedbacksLeftBySellerReducer = () => ({\n ...state,\n itemsByID: feedbacksLeftBySeller(state, action)\n });\n const feedbacksLeftByBuyerReducer = () => ({\n ...state,\n itemsByID: feedbacksLeftByBuyer(state, action)\n });\n\n const def = () => state;\n\n const reducers = {\n [myTraderaItems.actionTypes.BUYER_ACTIVE_ITEMS_HIDE]: poHiddenByBuyer,\n [myTraderaItems.actionTypes.BUYER_ACTIVE_ITEMS_SHOW]: poShownByBuyer,\n [myTraderaItems.actionTypes.UPDATE_ITEMS]: updateItems,\n [myTraderaItems.actionTypes\n .UPDATE_ITEMS_WITH_ERROR]: updateItemsWithError,\n [myTraderaItems.actionTypes.OPEN_MORE]: openMore,\n [myTraderaItems.actionTypes.SELECT_ITEM]: selectItem,\n [myTraderaItems.actionTypes.SELECT_ALL_ITEMS]: selectAllItems,\n [myTraderaItems.actionTypes.OPEN_DEL_LISTING_ITEM]: openDelListingItem,\n [myTraderaItems.actionTypes.REMOVE_ALL_SELECTED]: removeAllSelected,\n [myTraderaItems.actionTypes.REMOVE_ITEMS]: removeItems,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER]: poMarkedAsPaidBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER]: poMarkedAsPaidByBuyer,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER]: poUnmarkedAsPaidBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER]: poUnmarkedAsPaidByBuyer,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER]: markedAsShippedBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER]: unmarkedAsShippedBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_HIDDEN_BY_SELLER]: poHiddenBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_HIDDEN_BY_BUYER]: poHiddenByBuyer,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_SHOWN_BY_SELLER]: poShownBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_SHOWN_BY_BUYER]: poShownByBuyer,\n [myTraderaItems.actionTypes.ITEM_HIDDEN]: itemHidden,\n [myTraderaItems.actionTypes.ITEM_SHOWN]: itemShown,\n [myTraderaItems.actionTypes\n .FEEDBACK_LEFT_BY_SELLER]: feedbackLeftBySellerReducer,\n [myTraderaItems.actionTypes\n .FEEDBACK_LEFT_BY_BUYER]: feedbackLeftByBuyerReducer,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_SHIPPING_BOOKED]: poMarkedAsShippingBooked,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED]: poUnmarkedAsShippingBooked,\n [myTraderaItems.actionTypes.SHIPMENT_DELETED]: poShipmentDeleted,\n [myTraderaItems.actionTypes.RESET_ITEMS]: resetItems,\n [myTraderaItems.actionTypes.SET_RESTARTED]: setRestarted,\n [purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER]: feedbacksLeftBySellerReducer,\n [purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER]: feedbacksLeftByBuyerReducer,\n [myTraderaItems.actionTypes.SET_NEW_SHIPPING_PRICE]: setNewShippingPrice\n };\n\n return !reducers[action.type] ? def() : reducers[action.type]();\n};\n\nexport const selectMyTraderaItemsState = state =>\n state.views.myTradera.myTraderaItems;\n","//jshint module : true\nimport actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...action.payload\n };\n case actionTypes.SET_ADS:\n if (!action || !action.type || !action.payload) return state;\n return {\n ...state,\n gpt: action.payload.gpt,\n adSenseQuery: action.payload.adSenseQuery\n ? action.payload.adSenseQuery\n : null,\n adSenseShoppingPublisherId:\n action.payload.adSenseShoppingPublisherId\n };\n case actionTypes.SET_TCF_LOADED:\n return {\n ...state,\n isTcfLoaded: true\n };\n\n default:\n return state;\n }\n};\n","import modalState from './modal-state';\nimport { getInitData } from 'packages/init-data';\n\nconst initData = getInitData() || {};\nlet isAutoStartAllowed = initData.pageSpecificData\n ? initData.pageSpecificData.isAutoStartAllowed\n : false;\n\nexport default {\n isFetching: false,\n errorMessage: null,\n modalState: modalState.CLOSED,\n autoStartToken: null,\n onCompleteCallback: null,\n onCloseCallback: null,\n isAutoStartAllowed\n};\n","import actionTypes from './action-types';\nimport initialState from './initial-state';\nimport modalState from './modal-state';\n\nexport default (state = initialState, action) => {\n if (!action || !action.type) return state;\n switch (action.type) {\n case actionTypes.RESET:\n return { ...initialState };\n case actionTypes.COMPLETED:\n return { ...state, modalState: modalState.COMPLETED };\n case actionTypes.SET_ERROR:\n return {\n ...state,\n errorMessage: action.payload,\n modalState: modalState.ERROR\n };\n case actionTypes.IN_PROGRESS:\n return {\n ...state,\n autoStartToken: action.payload.autoStartToken,\n isAutoStartAllowed: action.payload.isAutoStartAllowed\n };\n case actionTypes.START_AUTH:\n return {\n ...state,\n errorMessage: null,\n retryCount: 0,\n modalState: modalState.IN_PROGRESS\n };\n case actionTypes.CLOSE:\n return {\n ...state,\n modalState: modalState.CLOSED\n };\n default:\n return state;\n }\n};\n","import initData from 'init-data';\n\nexport default {\n list: [],\n topLevelCategories:\n initData.allCategories?.map(({ id, name, href }) => ({\n id,\n title: name,\n href\n })) || [],\n isFetching: false,\n error: null\n};\n","import actionTypes from './action-types';\nimport initialState from './initial-state';\n\nexport default (state = initialState, action) => {\n if (!action || !action.type) return state;\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...state,\n ...action.payload\n };\n case actionTypes.RECEIVE_CATEGORY_LIST:\n return {\n ...state,\n list: action.payload,\n isFetching: false,\n error: null\n };\n case actionTypes.REQUEST_CATEGORY_LIST:\n return { ...state, isFetching: true, error: null };\n case actionTypes.HANDLE_CATEGORY_LIST_ERROR:\n return { ...state, isFetching: false, error: action.payload };\n default:\n return state;\n }\n};\n","import CONSTANTS from 'tradera-apps/tradera/components/discover/constants/constants';\n\nconst normalizeFilters = filters => {\n if (filters) {\n let normalized = {};\n filters.map(filter => {\n const { parameter } = filter;\n normalized = {\n ...normalized,\n [parameter]: {\n ...filter\n }\n };\n });\n return normalized;\n }\n};\n\nconst activeFilters = filters => {\n if (filters) {\n let normalized = [];\n filters.map(filter => {\n const { selectedValue } = filter;\n if (CONSTANTS.ACTIVE_FILTER_STATES.includes(selectedValue)) {\n normalized.push(filter);\n }\n });\n return normalized;\n }\n};\n\nconst normalize = responseData => {\n const normalized = {\n activeBrands: [],\n activeFilters: [],\n attributeFilters: [],\n categoryPath: responseData.categoryPath || [],\n currentCategoryId: responseData.categoryPath?.[0]?.id || 0,\n fallbackItemsById: [],\n filterCategories: {},\n filterPrice: {},\n filters: {},\n headerText: responseData.headerText || null,\n internalSearch: responseData.internalSearchBar || {},\n introText: responseData.introText || null,\n isSavedSearchEmailEnabled:\n responseData?.isSavedSearchEmailEnabled || false,\n isShopOwnedByCurrentMember:\n responseData?.itemsOnDisplay?.isShopOwnedByCurrentMember || false,\n itemsById: [],\n itemsOnDisplayById: [],\n mainText: responseData.mainText || null,\n pagination: responseData.pagination || null,\n fallbackUrl: responseData.fallbackUrl || null,\n totalItems: responseData.totalItems || 0,\n discoverTranslationResult: responseData.discoverTranslationResult || {},\n reduxContainer: responseData.reduxContainer || {}\n };\n\n if (responseData.filters) {\n normalized.filterCategories = responseData.filters.categoryFilter;\n normalized.filters = normalizeFilters(\n responseData.filters.singleOptionFilters\n );\n normalized.activeFilters = activeFilters(\n responseData.filters.singleOptionFilters\n );\n normalized.filterPrice = responseData.filters.priceRangeFilter;\n normalized.attributeFilters = responseData.filters.attributeFilters;\n }\n\n if (responseData.items) {\n responseData.items.map(item => {\n normalized.itemsById.push(item.itemId);\n });\n }\n\n if (responseData.itemsOnDisplay) {\n responseData.itemsOnDisplay.items.map(item => {\n normalized.itemsOnDisplayById.push(item.itemId);\n });\n }\n\n if (responseData.fallbackItems) {\n responseData.fallbackItems.map(item => {\n normalized.fallbackItemsById.push(item.itemId);\n });\n }\n\n normalized.status = responseData.status;\n return normalized;\n};\n\nexport { normalize };\n","import actionTypes from './action-types';\nimport memberActionTypes from '../member/action-types';\nimport { normalize } from './helpers';\n\nexport default (state = {}, action) => {\n const requestSearchResults = () => {\n return {\n ...state,\n error: null\n };\n };\n\n const receiveSearchResults = () => {\n const {\n payload: { result = {}, endpoint = null, queryParams = null }\n } = action;\n return {\n ...state,\n endpoint,\n error: null,\n hasResult: true,\n queryParams,\n ...normalize(result)\n };\n };\n\n const handleSearchResultsError = () => {\n return {\n ...state,\n error: action.payload,\n hasResult: true,\n ...normalize({})\n };\n };\n\n const setSingleFilter = () => ({\n ...state,\n filters: {\n ...state.filters,\n [action.payload.filter]: {\n ...state.filters[action.payload.filter],\n selectedValue: action.payload.value\n }\n }\n });\n\n const addItemOnDisplay = () => {\n const { payload } = action;\n return {\n ...state,\n itemsOnDisplayById: state.itemsOnDisplayById.includes(\n payload.itemId\n )\n ? [...state.itemsOnDisplayById]\n : [...state.itemsOnDisplayById, payload.itemId]\n };\n };\n\n const removeItemOnDisplay = () => {\n const { payload } = action;\n const items = state.itemsOnDisplayById.filter(\n item => item !== payload.itemId\n );\n return {\n ...state,\n itemsOnDisplayById: [...items]\n };\n };\n\n const setCategoryPath = () => {\n return {\n ...state,\n categoryPath: action.payload,\n currentCategoryId: (action.payload && action.payload[0].id) || 0\n };\n };\n\n const setCurrentCategoryId = () => {\n return {\n ...state,\n currentCategoryId: action.payload\n };\n };\n\n // Set show/hide buyer region filter when member geo changes\n const showOrHideAllowedBuyerRegionFilter = () => {\n const { payload } = action;\n return {\n ...state,\n displayAllowedBuyerRegionFilter:\n state.displayAllowedBuyerRegionFilter ||\n payload?.isoCode !== 'SE'\n };\n };\n\n const reset = () => {\n return action.payload.initialState;\n };\n\n const initialize = () => {\n return {\n ...action.payload\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.INITIALIZE]: initialize,\n [actionTypes.REQUEST_SEARCH_RESULTS]: requestSearchResults,\n [actionTypes.RECEIVE_SEARCH_RESULTS]: receiveSearchResults,\n [actionTypes.HANDLE_SEARCH_RESULTS_ERROR]: handleSearchResultsError,\n [actionTypes.SET_SINGLE_FILTER]: setSingleFilter,\n [actionTypes.ADD_ITEM_ON_DISPLAY]: addItemOnDisplay,\n [actionTypes.REMOVE_ITEM_ON_DISPLAY]: removeItemOnDisplay,\n [actionTypes.SET_CATEGORY_PATH]: setCategoryPath,\n [actionTypes.SET_CURRENT_CATEGORY_ID]: setCurrentCategoryId,\n [memberActionTypes.SET_GEOLOCATION]: showOrHideAllowedBuyerRegionFilter,\n [actionTypes.RESET]: reset\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","import actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...action.payload\n };\n case actionTypes.DEFAULT_ACTION:\n return {\n ...state,\n default: action.payload\n };\n default:\n return state;\n }\n};\n","import actionTypes from './action-types';\n\n// The max size of the item cache * before adding new items *\nconst ITEM_CACHE_MAX_SIZE = 500;\nconst RECENTLY_VIEWED_MAX_LENGTH = 4;\n\nexport const initialState = {\n cache: {},\n cacheOrder: [],\n recent: [],\n wishListItemIds: []\n};\n\nexport default (\n state = {\n ...initialState\n },\n action\n) => {\n const add = () => {\n const { cache = {}, cacheOrder = [] } = state;\n // Clear out old items\n let newCache = {};\n let newCacheOrder = cacheOrder;\n if (cacheOrder.length > ITEM_CACHE_MAX_SIZE) {\n newCacheOrder = cacheOrder.slice(\n cacheOrder.length - ITEM_CACHE_MAX_SIZE\n );\n newCacheOrder.forEach(itemId => {\n newCache[itemId] = cache[itemId];\n });\n } else {\n newCache = cache;\n }\n // Add new items\n action.payload.forEach(item => {\n if (item.itemId in newCache) {\n // Combine existing item with updated item\n newCache[item.itemId] = {\n ...newCache[item.itemId],\n ...item\n };\n // Renew item in cache order\n newCacheOrder = [\n ...newCacheOrder.filter(itemId => itemId !== item.itemId),\n item.itemId\n ];\n } else {\n newCache[item.itemId] = item;\n newCacheOrder.push(item.itemId);\n }\n });\n\n return {\n ...state,\n cache: {\n ...newCache\n },\n cacheOrder: newCacheOrder\n };\n };\n\n const addRecentlyViewed = () => {\n const { payload: item } = action;\n const { recent = [] } = state;\n // Remove item if already present\n let updatedRecent = recent.filter(\n recentItem => recentItem.itemId !== item.itemId\n );\n // Add to front of list\n updatedRecent.unshift(item);\n // Limit list length\n updatedRecent = updatedRecent.slice(0, RECENTLY_VIEWED_MAX_LENGTH);\n return {\n ...state,\n recent: updatedRecent\n };\n };\n\n const wishlist = () => {\n const {\n payload: { itemId, exists }\n } = action;\n\n const wishListItemIds = new Set(state.wishListItemIds || []);\n if (exists) {\n wishListItemIds.add(itemId);\n } else {\n wishListItemIds.delete(itemId);\n }\n return {\n ...state,\n wishListItemIds: Array.from(wishListItemIds)\n };\n };\n\n const wishlistAddRange = () => {\n const {\n payload: { itemIds }\n } = action;\n const wishListItemIds = new Set(state.wishListItemIds || []);\n itemIds?.forEach(itemId => wishListItemIds.add(itemId));\n return {\n ...state,\n wishListItemIds: Array.from(wishListItemIds)\n };\n };\n\n const updateItem = () => {\n const {\n payload: { itemId, item }\n } = action;\n return {\n ...state,\n cache: {\n ...state.cache,\n [itemId]: {\n ...state.cache?.[itemId],\n ...item\n }\n }\n };\n };\n\n const initialize = () => {\n return {\n ...action.payload\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.ADD]: add,\n [actionTypes.ADD_RECENTLY_VIEWED]: addRecentlyViewed,\n [actionTypes.INITIALIZE]: initialize,\n [actionTypes.WISHLIST]: wishlist,\n [actionTypes.WISHLIST_ADD_RANGE]: wishlistAddRange,\n [actionTypes.UPDATE_ITEM]: updateItem\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","import actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n if (!action || !action.type) return state;\n const { payload } = action;\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...payload\n };\n case actionTypes.SET_PAGE_TYPE:\n return {\n ...state,\n type: payload\n };\n case actionTypes.SET_PAGE_META: {\n const newState = {\n ...state,\n ...payload\n };\n return newState;\n }\n default:\n return state;\n }\n};\n","export default {\n brands: {\n items: [],\n status: 'NOT_FETCHED'\n },\n searches: {\n items: [],\n status: 'NOT_FETCHED'\n },\n recentSearches: {\n lastUpdated: null\n }\n};\n","import initialState from './initial-state';\n\nexport default (state = initialState, action) => {\n if (!action || !action.type) return state;\n switch (action.type) {\n case 'PERSONALISATION/SET_BRANDS':\n return {\n ...state,\n brands: {\n ...state.brands,\n items: action.items,\n status: action.status\n }\n };\n case 'PERSONALISATION/FETCH_BRANDS_STATUS':\n return {\n ...state,\n brands: {\n ...state.brands,\n status: action.status\n }\n };\n case 'PERSONALISATION/SET_SEARCHES':\n return {\n ...state,\n searches: {\n ...state.searches,\n items: action.items,\n status: action.status\n }\n };\n case 'PERSONALISATION/FETCH_SEARCHES_STATUS':\n return {\n ...state,\n searches: {\n ...state.searches,\n status: action.status\n }\n };\n case 'RECENT_SEARCHES_LAST_UPDATED':\n return {\n ...state,\n recentSearches: {\n lastUpdated: action.lastUpdated\n }\n };\n default:\n return state;\n }\n};\n","import dayjs from 'dayjs';\n\nconst initialState = {\n isLoading: false\n};\n\nexport default (state, action) => {\n state = state || initialState;\n var newDraft = null;\n switch (action.type) {\n case 'SET_DRAFT_PROPERTIES': {\n const referenceIsReadonly =\n action.draft.reference &&\n action.draft.reference.indexOf('Sello artnr') >= 0;\n newDraft = {\n ...initialState,\n ...action.payload,\n draftId: action.draft.draftId,\n draftReason: action.draft.draftReason,\n memberId: action.draft.memberId,\n itemId: action.draft.itemId,\n restart: action.draft.restart,\n publishedPromoted: action.draft.publishedPromoted,\n publishedHighlighted: action.draft.publishedHighlighted,\n createdDate: action.draft.createdDate,\n lastModifiedDate: action.draft.lastModifiedDate,\n publishedDate: action.draft.publishedDate,\n publishedAsItemType: action.draft.publishedAsItemType,\n reference: action.draft.reference,\n referenceIsReadonly: referenceIsReadonly,\n additionalDescriptions: action.draft.additionalDescriptions,\n metadata: action.draft.metadata,\n templateId: action.draft.templateId,\n templateName: action.draft.templateName,\n version: action.draft.version,\n isNewDraft: !action.draft.draftId\n };\n break;\n }\n case 'SET_DRAFT_ID':\n newDraft = { ...state, draftId: action.payload };\n break;\n case 'SET_RESTART':\n newDraft = { ...state, restart: action.payload };\n break;\n case 'DISABLE_RESTART':\n newDraft = { ...state, restart: false };\n break;\n case 'SET_REFERENCE':\n newDraft = { ...state, reference: action.payload };\n break;\n case 'ADD_ADDITIONAL_DESCRIPTION':\n var newAdditionalDescriptions = state.additionalDescriptions\n ? [...state.additionalDescriptions]\n : [];\n newAdditionalDescriptions.push({ message: action.payload });\n newDraft = {\n ...state,\n additionalDescriptions: newAdditionalDescriptions\n };\n break;\n case 'SET_DRAFT_REASON':\n newDraft = { ...state, draftReason: action.payload };\n break;\n case 'SET_DRAFT_VERSION':\n newDraft = { ...state, version: action.payload };\n break;\n case 'RESET_DRAFT':\n newDraft = { ...initialState };\n break;\n case 'SET_DRAFT_IS_LOADING':\n newDraft = { ...state, isLoading: action.payload };\n break;\n case 'SET_DESCRIPTION_LANGUAGECODE':\n newDraft = {\n ...state,\n descriptionLanguageCodeIso2:\n action.payload.descriptionLanguageCodeIso2\n };\n break;\n case 'SET_CURRENCY':\n newDraft = {\n ...state,\n currency: action.payload.currency\n };\n break;\n default:\n return state;\n }\n if (JSON.stringify(state) != JSON.stringify(newDraft)) {\n newDraft.lastModifiedDate = dayjs().toISOString();\n }\n return newDraft;\n};\n","function createInitialState() {\n const initialState = {\n suggestionsAvailable: false,\n levels: new Array(4).fill({}),\n anyLevelOpen: false,\n showExplanation: true,\n draftCategoryId: 0,\n draftCategoryPath: [],\n previousDraftCategoryId: 0,\n prevoiusDraftCategoryPath: [],\n shortDescriptionForRecommendations: null,\n validationError: null\n };\n initialState.levels = initialState.levels.map((level, index) => {\n level = { index: index };\n level.categories = [];\n level.suggestions = [];\n level.suggestionsVisible = false;\n level.categoriesVisible = false;\n level.moreButtonVisible = false;\n level.hideButtonVisible = false;\n level.selectedCategory = null;\n level.isOpen = false;\n level.visible = true;\n level.disabled = true;\n return level;\n });\n initialState.levels[0].disabled = false;\n return initialState;\n}\n\nfunction validate(newState) {\n if (!newState.draftCategoryId || newState.draftCategoryId === 0) {\n if (newState.levels[0].selectedCategory) {\n newState.validationError = 'syi_validation_missing_leaf_category';\n } else {\n newState.validationError = 'syi_validation_missing_category';\n }\n } else {\n newState.validationError = null;\n }\n\n return newState;\n}\n\nexport default (state, action) => {\n state = state || createInitialState();\n switch (action.type) {\n case 'RESET_CATEGORY': {\n return validate(createInitialState());\n }\n case 'CATEGORIES_LOADING': {\n const newLevels = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.levels[action.index].loading = true;\n return validate(newState);\n }\n case 'CATEGORIES_LOADED': {\n const newLevels = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.levels[action.index].loading = false;\n newState.levels[\n action.index\n ].categories = action.category.categories.slice();\n newState.levels[\n action.index\n ].suggestions = action.category.suggestions.slice();\n newState.levels[action.index].disabled = false;\n var suggestions =\n newState.levels[action.index].suggestions.length > 0;\n if (suggestions) {\n newState.levels[action.index].suggestionsVisible = true;\n newState.levels[action.index].moreButtonVisible = !newState\n .levels[action.index].categoriesVisible;\n newState.levels[action.index].hideButtonVisible = !newState\n .levels[action.index].moreButtonVisible;\n if (action.index === 0) {\n newState.shortDescriptionForRecommendations =\n action.shortDescriptionForRecommendations;\n newState.showExplanation = true;\n }\n } else {\n newState.shortDescriptionForRecommendations = null;\n newState.levels[action.index].suggestionsVisible = false;\n newState.levels[action.index].categoriesVisible = true;\n newState.levels[action.index].moreButtonVisible = false;\n newState.levels[action.index].hideButtonVisible = !newState\n .levels[action.index].moreButtonVisible;\n }\n return validate(newState);\n }\n case 'OPEN_LEVEL': {\n const newLevels = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.anyLevelOpen = true;\n newState.levels[action.index].isOpen = true;\n newState.levels[action.index].disabled = false;\n const suggestions =\n newState.levels[action.index].suggestions.length > 0;\n if (suggestions) {\n newState.levels[action.index].suggestionsVisible = true;\n newState.levels[action.index].moreButtonVisible = !newState\n .levels[action.index].categoriesVisible;\n newState.levels[action.index].hideButtonVisible = !newState\n .levels[action.index].moreButtonVisible;\n } else {\n newState.levels[action.index].suggestionsVisible = false;\n newState.levels[action.index].categoriesVisible = true;\n newState.levels[action.index].moreButtonVisible = false;\n newState.levels[action.index].hideButtonVisible = !newState\n .levels[action.index].moreButtonVisible;\n }\n return validate(newState);\n }\n case 'CLOSE_LEVEL': {\n const newLevels = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.anyLevelOpen = false;\n newState.levels[action.index].isOpen = false;\n return newState;\n }\n case 'TOGGLE_CATEGORIES': {\n const newLevels = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.levels[action.index].categoriesVisible = action.value;\n newState.levels[action.index].moreButtonVisible = !action.value;\n newState.levels[action.index].hideButtonVisible = action.value;\n return validate(newState);\n }\n case 'SELECT_LEVEL_CATEGORY': {\n const newLevels = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.levels[action.index].selectedCategory = action.category;\n if (action.category.isLeaf) {\n newState.showExplanation = false;\n }\n return validate(newState);\n }\n case 'TOGGLE_LEVEL_LABEL': {\n const newLevels = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.levels[action.index].visible = action.value;\n return validate(newState);\n }\n case 'DISABLE_LEVEL': {\n const newLevels = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.levels[action.index].disabled = true;\n return validate(newState);\n }\n case 'RESET_LEVEL': {\n const newLevels = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.levels[action.index].selectedCategory = null;\n newState.levels[action.index].suggestions = [];\n newState.levels[action.index].categories = [];\n if (action.index === 0) {\n newState.showExplanation = true;\n }\n return validate(newState);\n }\n case 'SET_DRAFT_CATEGORY': {\n const newLevels = [...state.levels];\n const newState = {\n ...state,\n draftCategoryId: action.categoryId,\n draftCategoryPath: action.categoryPath,\n previousDraftCategoryId: state.draftCategoryId,\n prevoiusDraftCategoryPath: state.prevoiusDraftCategoryPath,\n levels: newLevels\n };\n return validate(newState);\n }\n default:\n return state;\n }\n};\n","import userData from 'tradera-apps/syi/script/app_react/services/user-data';\n\nlet _paymentOptions;\nlet _paymentOptionsPresentationData;\nlet initialState;\n\nconst initModuleGlobals = () => {\n if (initialState) {\n return initialState;\n }\n\n _paymentOptions = userData.paymentOptions;\n _paymentOptionsPresentationData = [\n { text: 'Kontant vid avhämtning', value: 'Cash' },\n {\n text: 'PayPal',\n value: 'Paypal',\n isCreditCard: true,\n isSecure: true,\n helpModalId: 'info-modal-payment-paypal'\n },\n {\n text: 'Manuell överföring till bankkonto',\n value: 'Account',\n top: true,\n helpModalId: 'info-modal-payment-account'\n },\n {\n text: 'Swish',\n value: 'Swish',\n isPhone: true,\n helpModalId: 'info-modal-payment-swish'\n },\n { text: 'PlusGiro / Bankgiro', value: 'Plusgiro' },\n { text: 'Mot postförskott', value: 'Postforskott', hasFee: true },\n { text: 'Braintree', value: 'Braintree' }\n ];\n\n initialState = {\n displayPaymentOptions: '',\n paymentOptionGroups: [],\n selectedPaymentOptions: userData.braintree.isBraintreeOnly\n ? ['Braintree']\n : [],\n validationError: null,\n uiCheckedPaymentOptions: [],\n takeawaySelected: false\n };\n};\n\nfunction validate(newState) {\n if (userData.braintree && userData.braintree.isBraintreeOnly) {\n if (\n newState.selectedPaymentOptions.length === 1 &&\n newState.selectedPaymentOptions[0] === 'Braintree'\n ) {\n newState.validationError = null;\n } else {\n newState.validationError = 'syi_validation_payment_mismatch';\n }\n } else {\n var paymentOptions = newState.selectedPaymentOptions;\n var hasAnyValidPayment = !!paymentOptions.length;\n newState.validationError = hasAnyValidPayment\n ? null\n : 'syi_validation_payment_missing';\n }\n return newState;\n}\n\nfunction forceBraintreeIfNeeded(state) {\n if (userData.braintree && userData.braintree.isBraintreeOnly) {\n state.selectedPaymentOptions = ['Braintree'];\n state.uiCheckedPaymentOptions = ['Braintree'];\n }\n}\n\nfunction shapePaymentOptions(state) {\n var filteredPaymentOptions = _paymentOptions\n .map(paymentOption => {\n var presentationData = _paymentOptionsPresentationData.find(\n pd => pd.value == paymentOption.paymentType\n );\n paymentOption.selected = state.uiCheckedPaymentOptions?.find(\n selectedPaymentOption =>\n selectedPaymentOption == paymentOption.paymentType\n );\n return { ...presentationData, ...paymentOption };\n })\n .filter(paymentOption => paymentOption && !!paymentOption.value)\n .filter(\n paymentOption =>\n state.takeawaySelected || paymentOption.value !== 'Cash'\n );\n\n state.displayPaymentOptions = filteredPaymentOptions\n .filter(po => po.selected)\n .map(po => po.text)\n .join(', ');\n var paymentOptionsTop = filteredPaymentOptions.filter(\n po => po.top || po.selected\n );\n state.selectedPaymentOptions = filteredPaymentOptions\n .filter(paymentOption => {\n if (!paymentOption || !paymentOption.value) {\n return false;\n }\n return paymentOption.selected;\n })\n .map(paymentOption => paymentOption.value);\n state.paymentOptionGroups = [\n {\n visible: true,\n paymentOptions: paymentOptionsTop,\n showToggle: filteredPaymentOptions.some(\n po => !po.top && !po.selected\n )\n },\n {\n visible: paymentOptionsTop.length === 0,\n paymentOptions: filteredPaymentOptions.filter(\n po => !po.top && !po.selected\n ),\n showToggle: false\n }\n ];\n forceBraintreeIfNeeded(state);\n}\n\nexport default (state, action) => {\n initModuleGlobals();\n if (!state) {\n shapePaymentOptions(initialState);\n state = validate(initialState);\n }\n switch (action.type) {\n case 'SET_PAYMENT_OPTIONS': {\n const newState = {\n ...state,\n uiCheckedPaymentOptions: action.selectedPaymentOptions\n };\n shapePaymentOptions(newState);\n return validate(newState);\n }\n case 'TOGGLE_ALL_VISIBLE': {\n const newState = { ...state };\n newState.allVisible = !newState.allVisible;\n return validate(newState);\n }\n case 'SET_CATEGORY_WARNING': {\n const newState = {\n ...state\n };\n return validate(newState);\n }\n case 'SET_TAKEAWAY_SELECTED': {\n const newState = {\n ...state,\n takeawaySelected: action.payload.offerTakeaway\n };\n shapePaymentOptions(newState);\n return validate(newState);\n }\n case 'ENSURE_ANY_PAYMENT_OPTION_FOR_CHARITY': {\n const newState = { ...state };\n const hasAnyValidPayment = newState.selectedPaymentOptions.some(\n po => po\n );\n if (!hasAnyValidPayment) {\n newState.selectedPaymentOptions = ['Account'];\n newState.uiCheckedPaymentOptions = ['Account'];\n }\n shapePaymentOptions(newState);\n return validate(newState);\n }\n default:\n return state;\n }\n};\n","var initialState = {\n isPropertyEditMode: false,\n creationType: 'new',\n allErrorsVisible: false,\n isEditOfPublishedItem: false,\n publishPending: false,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishedItemPendingVip: false,\n publishedItem: null,\n openModal: null,\n openModalData: null,\n autoSaveEnabled: false,\n draftCanBeResumed: false,\n itemUpdating: false,\n itemUpdated: false\n};\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'RESET_SYI':\n return { ...initialState };\n case 'SET_IS_PROPERTY_EDIT_MODE':\n return { ...state, isPropertyEditMode: action.payload };\n case 'SET_CREATION_TYPE':\n return { ...state, creationType: action.payload };\n case 'SHOW_ALL_ERRORS':\n return { ...state, allErrorsVisible: true };\n case 'HIDE_ALL_ERRORS':\n return { ...state, allErrorsVisible: false };\n case 'SET_IS_EDIT_OF_PUBLISHED_ITEM':\n return { ...state, isEditOfPublishedItem: action.payload };\n case 'SET_PUBLISHED_ITEM_PENDING_VIP':\n return {\n ...state,\n publishedItemPendingVip: action.payload,\n publishedItem: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\n publishDelayed: false\n };\n case 'SET_PUBLISHED_ITEM_DELAYED':\n return {\n ...state,\n publishedItemPendingVip: action.payload,\n publishedItem: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\n publishDelayed: true\n };\n case 'SET_PUBLISHED_ITEM':\n return {\n ...state,\n publishedItem: action.payload,\n publishedItemPendingVip: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\n publishDelayed: false\n };\n case 'SET_PUBLISH_FAILED':\n return {\n ...state,\n publishedItem: null,\n publishedItemPendingVip: null,\n publishFailed: true,\n publishFailedReasonDisplayText: action.reasonDisplayText,\n publishPending: false,\n publishDelayed: false\n };\n case 'SET_PUBLISH_PENDING':\n return {\n ...state,\n publishedItem: null,\n publishedItemPendingVip: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: true,\n publishDelayed: false\n };\n case 'SET_CATEGORY_RESTRICTION':\n return { ...state, categoryRestriction: action.payload };\n case 'TOGGLE_MODAL':\n var newValue =\n state.openModal === action.payload ? null : action.payload;\n return { ...state, openModal: newValue };\n case 'SHOW_MODAL':\n return {\n ...state,\n openModal: action.modalId,\n openModalData: action.modalData\n };\n case 'HIDE_MODAL':\n return { ...state, openModal: null };\n case 'ENABLE_AUTOSAVE':\n return { ...state, autoSaveEnabled: true };\n case 'DISABLE_AUTOSAVE':\n return { ...state, autoSaveEnabled: false };\n case 'SET_DRAFT_CAN_BE_RESUMED':\n return { ...state, draftCanBeResumed: action.payload };\n case 'SET_ITEM_UPDATING':\n return { ...state, itemUpdating: action.payload };\n case 'SET_ITEM_UPDATED':\n return { ...state, itemUpdated: action.payload };\n default:\n return state;\n }\n};\n","var initialState = {\n shortDescription: null,\n longDescription: null,\n categoryId: null,\n images: null,\n openingBid: null,\n reservePrice: null,\n fixedPrice: null,\n durationDays: null,\n customEndTime: null,\n shippingOptions: null,\n paymentOptions: null,\n itemCondition: null,\n step1: true,\n step2: true,\n step3: true,\n step4: true\n};\n\nexport default (state, action) => {\n var step1Errors = function(state) {\n return (\n !!state.shortDescription ||\n !!state.categoryId ||\n !!state.images ||\n !!state.longDescription ||\n !!state.itemCondition\n );\n };\n\n var step2Errors = function(state) {\n return (\n !!state.openingBid ||\n !!state.reservePrice ||\n !!state.fixedPrice ||\n !!state.durationDays ||\n !!state.customEndTime\n );\n };\n\n var step3Errors = function(state) {\n return !!state.shippingOptions;\n };\n\n var step4Errors = function(state) {\n return !!state.paymentOptions;\n };\n\n state = state || initialState;\n switch (action.type) {\n case 'SET_ERROR':\n state = { ...state };\n state[action.propertyName] = action.error;\n break;\n default:\n return state;\n }\n\n const e1 = step1Errors(state);\n const e2 = step2Errors(state);\n const e3 = step3Errors(state);\n const e4 = step4Errors(state);\n state = {\n ...state,\n step1: e1 || undefined,\n step2: e2 || undefined,\n step3: e3 || undefined,\n step4: e4 || undefined\n };\n\n return state;\n};\n","const optionHasError = option => !option.type;\n\nexport const ensureGoodShippingOptions = shippingOptions => {\n shippingOptions = shippingOptions || [];\n return shippingOptions.find(optionHasError) ? [] : shippingOptions;\n};\n","import { validateValidShippingPrice } from './validate-valid-shipping-price';\nimport initData from 'init-data';\n\nconst errors = {\n noShipping: 'syi_validation_shipping_no_shipping',\n empty: 'syi_validation_shipping_enter_method_and_cost',\n invalid: 'syi_validation_shipping_method_invalid',\n duplicate: 'syi_validation_shipping_method_identical',\n weight: 'syi_validation_shipping_enter_weight'\n};\n\nexport function validate(newState) {\n if (!newState.offerTakeaway && !newState.offerShipping) {\n newState.globalValidationError = errors.noShipping;\n newState.validationErrors = {\n global: errors.noShipping\n };\n return newState;\n }\n\n newState.globalValidationError = null;\n\n if (!initData.featureSwitches['shipping-by-weight']) {\n const validateProviders = providers => {\n let hasAnyNonValidOption = false;\n let hasAnyValidOption = false;\n let weightIsInvalid = false;\n providers.forEach(provider => {\n provider.products.forEach(product => {\n if (!product.selected || !newState.offerShipping) {\n // Not selected, set to valid without error\n product.isValid = true;\n product.validationError = null;\n product.isWeightValid = true;\n product.weightValidationError = null;\n } else {\n const errorMessage = validateValidShippingPrice(\n product,\n provider.useAdvancedWidget\n );\n if (errorMessage) {\n product.isValid = false;\n product.validationError = errorMessage;\n hasAnyNonValidOption = true;\n } else {\n product.isValid = true;\n product.validationError = null;\n hasAnyValidOption = true;\n }\n if (provider.useAdvancedWidget && !product.productId) {\n product.isWeightValid = false;\n product.weightValidationError = errors.weight;\n weightIsInvalid = true;\n } else {\n product.isWeightValid = true;\n product.weightValidationError = null;\n }\n }\n });\n });\n return { hasAnyNonValidOption, hasAnyValidOption, weightIsInvalid };\n };\n\n const primaryValidations = validateProviders(\n newState.primaryShippingProviders\n );\n const secondaryValidations = validateProviders(\n newState.secondaryShippingProviders\n );\n\n const getFirstValidationError = ({\n hasAnyNonValidOption,\n weightIsInvalid,\n hasAnyValidOption\n }) => {\n if (hasAnyNonValidOption) {\n return errors.invalid;\n }\n if (weightIsInvalid) {\n return errors.weight;\n }\n if (!hasAnyValidOption) {\n return errors.empty;\n }\n return null;\n };\n\n const getDuplicateError = () => {\n if (\n newState.selectedShippingOptions.length > 1 &&\n JSON.stringify(newState.selectedShippingOptions[0]) ===\n JSON.stringify(newState.selectedShippingOptions[1])\n ) {\n return errors.duplicate;\n }\n return null;\n };\n\n newState.primaryValidationError = newState.offerShipping\n ? getFirstValidationError(primaryValidations)\n : null;\n newState.secondaryValidationError =\n newState.offerShipping && newState.secondaryShippingOptionOpen\n ? getFirstValidationError(secondaryValidations) ||\n getDuplicateError()\n : null;\n }\n\n const validationErrors = {};\n if (newState.primaryValidationError)\n validationErrors.primary = newState.primaryValidationError;\n if (newState.secondaryValidationError)\n validationErrors.secondary = newState.secondaryValidationError;\n newState.validationErrors = validationErrors;\n\n return newState;\n}\n","export function validateValidShippingPrice(so, isAdvanced) {\n if (\n so.type == null ||\n so.type === '' ||\n so.type === 'Takeaway' ||\n so.type === 'TakeawayOnly'\n ) {\n return null;\n }\n if (so.cost === null || so.cost === undefined) {\n return isAdvanced ? null : 'syi_validation_shipping_price_missing';\n }\n if (!isInt(so.cost)) {\n return 'syi_validation_shipping_amount_whole_number';\n }\n if (so.cost > 10000) {\n return 'syi_validation_shipping_max_price';\n }\n if (so.cost < 0) {\n return 'syi_validation_shipping_min_price';\n }\n return null;\n}\n\nfunction isInt(number) {\n return number % 1 === 0;\n}\n","import { getAllProducts } from './shipping-selectors';\n\nexport const getSelectedShippingOptions = state => {\n const result = state.offerShipping\n ? getAllProducts(state)\n .filter(product => product.selected)\n .map(product => {\n const cost =\n product.cost || product.cost === 0\n ? product.cost\n : product.selectedVariant\n ? product.selectedVariant.price\n : product.cost;\n return {\n type: product.selectedVariant?.type || product.type,\n cost,\n name: product.name,\n summaryDisplayName: product.summaryDisplayName,\n weight: product.weight,\n productId: product.productId\n };\n })\n : [];\n\n if (state.offerTakeaway) {\n const takeAwayOption =\n result.length === 0\n ? {\n type: 'TakeawayOnly',\n name: 'Endast avhämtning',\n summaryDisplayName: 'Endast avhämtning'\n }\n : {\n type: 'Takeaway',\n name: 'Avhämtning',\n summaryDisplayName: 'Avhämtning'\n };\n result.push(takeAwayOption);\n }\n return result;\n};\n","import { createReducer } from '@reduxjs/toolkit';\nimport {\n getAllProducts,\n getPrimaryOrSecondaryProducts,\n getSelectedProduct,\n getSelectedShippingProducts\n} from './shipping-selectors';\nimport { ensureGoodShippingOptions } from './ensure-good-shipping-options';\nimport { validate } from './validate';\nimport { getSelectedShippingOptions } from './get-selected-shipping-options';\nimport { v4 as uuidv4 } from 'uuid';\n\nconst getUuid = () => uuidv4();\n\nconst initialState = validate({\n primaryShippingProviders: [],\n secondaryShippingProviders: [],\n validationErrors: {},\n globalValidationError: null,\n primaryValidationError: null,\n secondaryValidationError: null,\n secondaryShippingOptionOpen: false,\n shippingByWeight: [],\n shippingRecommendations: [],\n recommendedWeight: null,\n selectedShippingOptions: [],\n shippingOptionsLoading: false,\n shippingOptionsError: false,\n showPrimaryShippingCalculator: false,\n hasPrimaryCalculatorSuggestions: false,\n showSecondaryShippingCalculator: false,\n hasSecondaryCalculatorSuggestions: false,\n offerTakeaway: false,\n offerShipping: false,\n isLoadingProvidersWithProducts: false,\n defaultCalculatorDimensions: {\n height: 0,\n width: 0,\n length: 0,\n weight: 0\n },\n primaryCalculatorDimensions: null,\n secondaryCalculatorDimensions: null,\n forceFreeShipping: false,\n fromCountry: null\n});\n\nconst getProviderByProductType = (providers, productType) =>\n providers.find(\n provider =>\n !!provider.products.find(product => product.type === productType)\n );\n\nconst shippingContainsTakeaway = shippingOptions =>\n shippingOptions.some(\n shippingOption =>\n shippingOption.type === 'Takeaway' ||\n shippingOption.type === 'TakeawayOnly'\n );\n\nconst shippingContainsProduct = shippingOptions =>\n shippingOptions.some(\n shippingOption =>\n shippingOption.type !== 'Takeaway' &&\n shippingOption.type !== 'TakeawayOnly'\n );\n\nexport default createReducer(initialState, {\n SET_SUGGESTED_SHIPPING_PRODUCTS: (state, action) => {\n const products = getPrimaryOrSecondaryProducts(\n state,\n action.payload.primary\n );\n products.forEach(product => {\n // Clear previous selections\n product.selected = false;\n product.selectedVariant = null;\n product.productId = null;\n product.cost = state.forceFreeShipping ? 0 : null;\n product.weight = null;\n\n const suggestedProduct = action.payload.shippingProducts.find(\n p => p.type === product.type\n );\n if (suggestedProduct) {\n product.calculatorSuggestion = {\n description: suggestedProduct.description,\n cost: suggestedProduct.cost,\n additionalInfo: suggestedProduct.additionalInfo\n };\n } else {\n product.calculatorSuggestion = null;\n }\n });\n\n if (action.payload.primary) {\n state.hasPrimaryCalculatorSuggestions = true;\n } else {\n state.hasSecondaryCalculatorSuggestions = true;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n CLEAR_SUGGESTED_SHIPPING_PRODUCTS: (state, action) => {\n const products = getPrimaryOrSecondaryProducts(\n state,\n action.payload.primary\n );\n products.forEach(product => {\n const suggestion = product.calculatorSuggestion;\n product.calculatorSuggestion = null;\n if (product.selected) {\n // Clear automatic calculator suggestion selections,\n // but save selection for selected product if changed.\n if (!suggestion) {\n // No values are set from suggestion. Save selection\n return;\n }\n if (\n product.selectedVariant &&\n product.selectedVariant.price !== suggestion.cost\n ) {\n // Values are changes from suggestion. Save selection\n return;\n }\n if (\n product.selectedVariant?.price === suggestion.cost &&\n (product.cost || product.cost === 0)\n ) {\n // Own price set. Save selection\n return;\n }\n if (\n !product.selectedVariant &&\n product.cost !== suggestion.cost\n ) {\n // Own price set. Save selection\n return;\n }\n // No values are manually changed. Go ahead and remove selection\n }\n product.selectedVariant = null;\n product.productId = null;\n product.cost = state.forceFreeShipping ? 0 : null;\n product.weight = null;\n });\n\n if (action.payload.primary) {\n state.hasPrimaryCalculatorSuggestions = false;\n } else {\n state.hasSecondaryCalculatorSuggestions = false;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n RESET_SHIPPING_OPTIONS: state => {\n // TODO: primaryShippingOption is never set. Probably remove.\n state.primaryShippingOption = null;\n state.secondaryShippingOption = null;\n state.selectedShippingOptions = [];\n state.offerShipping = false;\n return validate(state);\n },\n RESET_SELECTED_SHIPPING_OPTIONS: state => {\n const products = getAllProducts(state);\n products.forEach(product => {\n product.selected = false;\n product.selectedVariant = null;\n product.productId = null;\n product.cost = null;\n product.weight = null;\n });\n state.forceFreeShipping = false;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_OPTIONS: (state, action) => {\n const shippingOptions = ensureGoodShippingOptions(action.payload);\n\n // Set a product to visible and hides the rest, if the type to be visible is found in the list.\n const updateVisibilities = (products, typeToBeVisible) => {\n if (products.length === 1) return;\n const typeToBeVisibleExists = products.find(\n product => product.type === typeToBeVisible\n );\n if (!typeToBeVisibleExists) return;\n products.forEach(\n product => (product.visible = product.type === typeToBeVisible)\n );\n };\n\n const updateProductIfType = (\n product,\n { type, cost, productId, weight }\n ) => {\n let isProductForOption = null;\n if (!product.variants || product.variants.length === 0) {\n isProductForOption = product.type === type;\n } else {\n isProductForOption = !!product.variants.find(\n x => x.id === productId && x.type === type\n );\n }\n if (isProductForOption) {\n product.selected = true;\n product.cost = cost;\n product.productId = productId;\n product.weight = weight;\n } else {\n product.selected = false;\n }\n };\n\n const updateProviderProducts = (products, option) => {\n products.forEach(product => updateProductIfType(product, option));\n updateVisibilities(products, option.type);\n };\n\n if (typeof shippingOptions[0] === 'object') {\n const option = shippingOptions[0];\n const providers = state.primaryShippingProviders;\n providers.forEach(provider =>\n updateProviderProducts(provider.products, option)\n );\n state.offerShipping = true;\n } else {\n state.offerShipping = false;\n }\n\n if (typeof shippingOptions[1] === 'object') {\n const option = shippingOptions[1];\n const providers = state.secondaryShippingProviders;\n providers.forEach(provider =>\n updateProviderProducts(provider.products, option)\n );\n const provider = getProviderByProductType(providers, option.type);\n state.showMoreSecondaryOptions =\n state.showMoreSecondaryOptions ||\n (provider && !provider.promoted);\n state.secondaryShippingOptionOpen = true;\n } else {\n state.secondaryShippingOptionOpen = false;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n\n return validate(state);\n },\n TOGGLE_SHIPPING_OPTION: (state, action) => {\n const providers = action.payload.primary\n ? state.primaryShippingProviders\n : state.secondaryShippingProviders;\n const showShippingCalculator = action.payload.primary\n ? state.showPrimaryShippingCalculator\n : state.showSecondaryShippingCalculator;\n\n // Hide products so only one is visible per provider\n const productProvider = getProviderByProductType(\n providers,\n action.payload.type\n );\n productProvider.products.forEach(product => (product.visible = false));\n\n const products = providers.flatMap(provider => provider.products);\n const product = products.find(p => p.type === action.payload.type);\n const previousValue = product.selected;\n products.forEach(p => (p.selected = false));\n product.selected = !previousValue;\n product.visible = true;\n\n if (showShippingCalculator) {\n const suggestedProduct = product.calculatorSuggestion;\n if (suggestedProduct) {\n if (\n product.variants?.some(\n variant => variant.price === suggestedProduct.cost\n )\n ) {\n const matchingVariant = product.variants.find(\n variant => variant.price === suggestedProduct.cost\n );\n product.selectedVariant = matchingVariant;\n product.productId = matchingVariant.id;\n product.weight = matchingVariant.weight;\n } else {\n product.cost = state.forceFreeShipping\n ? 0\n : suggestedProduct.cost;\n }\n } else {\n // Clear previous selections\n product.selectedVariant = null;\n product.productId = null;\n product.cost = state.forceFreeShipping ? 0 : null;\n product.weight = null;\n }\n }\n\n if (product.variants.length === 1) {\n const variant = product.variants[0];\n product.selectedVariant = variant;\n product.productId = variant.id;\n product.weight = variant.weight;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_OPTION_COST: (state, action) => {\n const product = getSelectedProduct(state, action.payload.primary);\n product.cost = action.payload.cost;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_OPTION_VARIANT: (state, action) => {\n const product = getSelectedProduct(state, action.payload.primary);\n\n product.selectedVariant = action.payload.variant;\n product.productId = action.payload.variant?.id;\n product.weight = action.payload.variant?.weight;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n\n SET_SHIPPING_OPTIONS_BY_WEIGHT: (state, action) => {\n const {\n productsPerWeightSpan,\n shippingOptions,\n bringEnabled\n } = action.payload;\n\n state.offerShipping = shippingContainsProduct(shippingOptions);\n state.offerTakeaway = shippingContainsTakeaway(shippingOptions);\n\n //Decorate products with cost, type & productId for draft api:\n const productsDecorated = productsPerWeightSpan.map(weightClass => {\n const productsWithDecoration = weightClass.products.map(\n product => ({\n ...product,\n cost: product.price,\n productId: product.id,\n type: product.providerId,\n uuid: getUuid()\n })\n );\n const filteredProductsWithDecoration = productsWithDecoration.filter(\n shippingProvider =>\n shippingProvider.providerId !== 'BringDenmark' ||\n bringEnabled\n );\n return { ...weightClass, products: filteredProductsWithDecoration };\n });\n\n state.shippingByWeight = productsDecorated;\n state.selectedShippingOptions = getSelectedShippingProducts(\n productsDecorated,\n shippingOptions,\n state.offerTakeaway\n );\n state.shippingOptionsLoading = false;\n state.shippingOptionsError = false;\n return validate(state);\n },\n\n SET_SHIPPING_OPTION_SELECTED: (state, action) => {\n const { payload } = action;\n\n const selectedOptions = getSelectedShippingProducts(\n state.shippingByWeight,\n payload,\n state.offerTakeaway\n );\n\n if (shippingContainsProduct(selectedOptions)) {\n state.offerShipping = true;\n } else {\n state.offerShipping = false;\n }\n\n state.selectedShippingOptions = selectedOptions;\n\n return validate(state);\n },\n\n SET_SHIPPING_SELECTED: (state, action) => {\n state.offerShipping = action.payload.offerShipping;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_TAKEAWAY_SELECTED: (state, action) => {\n state.offerTakeaway = action.payload.offerTakeaway;\n if (action.payload.shippingByWeightEnabled) {\n state.selectedShippingOptions = getSelectedShippingProducts(\n state.shippingByWeight,\n state.selectedShippingOptions,\n state.offerTakeaway\n );\n } else {\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n }\n\n return validate(state);\n },\n SET_SECONDARY_SHIPPING_OPTION_OPEN: (state, action) => {\n return validate({\n ...state,\n secondaryShippingOptionOpen:\n action.payload.secondaryShippingOptionOpen\n });\n },\n REMOVE_SHIPPING_OPTION: (state, action) => {\n getPrimaryOrSecondaryProducts(state, action.payload.primary).forEach(\n product => (product.selected = false)\n );\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n MAKE_SECONDARY_SHIPPING_OPTION_PRIMARY: state => {\n const tmp = state.primaryShippingProviders;\n state.primaryShippingProviders = state.secondaryShippingProviders;\n state.secondaryShippingProviders = tmp;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n FORCE_FREE_SHIPPING: state => {\n const products = getAllProducts(state);\n products.forEach(product => {\n product.cost = 0;\n });\n state.forceFreeShipping = true;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n FREE_SHIPPING_PAID_BY_PROVIDER: (state, action) => {\n const { providerName } = action.payload;\n const products = getAllProducts(state);\n products.forEach(product => {\n if (product.type !== providerName) {\n return;\n }\n product.cost = 0;\n });\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_PROVIDERS_WITH_PRODUCTS: (state, action) => {\n state.primaryShippingProviders = action.payload;\n state.secondaryShippingProviders = action.payload;\n state.isLoadingProvidersWithProducts = false;\n\n return validate(state);\n },\n SET_SHIPPING_PROVIDERS_WITH_PRODUCTS_FETCHING: state => {\n state.isLoadingProvidersWithProducts = true;\n\n return validate(state);\n },\n SET_SHIPPING_OPTIONS_LOADING: state => {\n state.shippingOptionsLoading = true;\n state.shippingOptionsError = false;\n\n return validate(state);\n },\n SET_SHIPPING_OPTIONS_ERROR: state => {\n state.shippingOptionsLoading = false;\n state.shippingOptionsError = true;\n\n return validate(state);\n },\n SET_SHIPPING_CALCULATOR_DIMENSIONS: (state, action) => {\n state.defaultCalculatorDimensions = {\n ...initialState.defaultCalculatorDimensions,\n ...action.payload.dimensions\n };\n state[\n action.payload.primary\n ? 'primaryCalculatorDimensions'\n : 'secondaryCalculatorDimensions'\n ] = action.payload.dimensions;\n },\n SET_SHOW_SHIPPING_CALCULATOR: (state, action) => {\n state[\n action.payload.primary\n ? 'showPrimaryShippingCalculator'\n : 'showSecondaryShippingCalculator'\n ] = action.payload.value;\n },\n SET_SHIPPING_FROMCOUNTRY: (state, action) => {\n state.fromCountry = action.payload.fromCountry;\n },\n CLEAR_SHIPPING_RECOMMENDATIONS: state => {\n state.recommendedWeight = initialState.recommendedWeight;\n state.shippingRecommendations = initialState.shippingRecommendations;\n },\n SET_SHIPPING_RECOMMENDATIONS: (state, action) => {\n const { recommendedWeight, shippingRecommendations } = action.payload;\n\n state.recommendedWeight = recommendedWeight;\n state.shippingRecommendations = shippingRecommendations;\n return validate(state);\n }\n});\n","import { createReducer } from '@reduxjs/toolkit';\n\nconst initialState = {\n saveAsDialogOpen: false,\n templatesLimitReachedDialogOpen: false,\n ignoreProperties: []\n};\n\nexport default createReducer(initialState, {\n SET_SAVE_AS_DIALOG_OPEN: (state, action) => {\n state.saveAsDialogOpen = action.payload;\n },\n SET_TEMPLATES_LIMIT_REACHED_DIALOG_OPEN: (state, action) => {\n state.templatesLimitReachedDialogOpen = action.payload;\n },\n RESET_IGNORE_PROPERTIES: state => {\n state.ignoreProperties = [];\n },\n ADD_IGNORE_PROPERTIES: (state, action) => {\n state.ignoreProperties = [\n ...new Set([...state.ignoreProperties, ...action.payload])\n ];\n },\n REMOVE_IGNORE_PROPERTIES: (state, action) => {\n state.ignoreProperties = state.ignoreProperties.filter(\n prop => !action.payload.includes(prop)\n );\n }\n});\n","var initialState = {\n itemCondition: null,\n validationError: null,\n selectionError: null\n};\n\nfunction validate(newState) {\n newState.validationError =\n newState.itemCondition == null ||\n newState.itemCondition.trim() == '' ||\n newState.itemCondition === 'Undefined'\n ? 'syi_validation_missing_condition'\n : newState.selectionError;\n\n return newState;\n}\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_ITEM_CONDITION':\n return validate({ ...state, itemCondition: action.payload });\n case 'RESET_ITEM_CONDITION':\n return validate({ ...initialState });\n case 'SET_ITEM_CONDITION_SELECTION_ERROR':\n return validate({ ...state, selectionError: action.payload });\n default:\n return state;\n }\n};\n","var defaultCampaignProperties = {\n campaignCode: '',\n campaignCodeId: null,\n campaignCodeDescription: null,\n maxFeeCap: null\n};\n\nvar initialState = {\n ...defaultCampaignProperties,\n campaignCodeChecked: false,\n firstTimeSubscribe: true,\n validCampaign: false,\n timeoutId: null,\n loading: false,\n searching: false,\n campaignCodeValid: false,\n searchingDelayed: false,\n validationError: null,\n searchingDelayedTimeoutId: null,\n isReadOnly: false,\n bannerMobileImageUrl: null,\n bannerTabletImageUrl: null,\n bannerDesktopImageUrl: null,\n hasEnded: false\n};\n\nfunction nullIfFalsy(val) {\n return val ? val : null;\n}\n\nfunction ensureValidCampaignCodeId(campaignCodeId) {\n // Cannot publish when campaignCodeId is zero.\n // Fix server side when Riot SYI is used by 100% of members.\n if (campaignCodeId === 0) {\n return null;\n }\n return nullIfFalsy(campaignCodeId);\n}\n\nfunction validate(state) {\n if (state.campaignCodeChecked) {\n state.validationError = state.campaignCodeValid\n ? null\n : 'syi_campaign_code_invalid';\n } else {\n state.validationError = null;\n }\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'INITIALIZE_CAMPAIGN_CODE_STATE': {\n state = {\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.campaignCode,\n campaignCodeId: ensureValidCampaignCodeId(\n action.campaignCodeId\n ),\n campaignCodeDescription: nullIfFalsy(\n action.campaignCodeDescription\n ),\n campaignCodeValid:\n !!action.campaignCodeId || !action.campaignCode,\n campaignCodeChecked: !!action.campaignCode,\n isReadOnly: action.isReadOnly,\n hasEnded: action.hasEnded\n };\n break;\n }\n\n case 'SET_UNVERIFIED_CAMPAIGN_CODE': {\n state = {\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.campaignCode,\n campaignCodeId: null,\n campaignCodeDescription: null,\n campaignCodeValid: !action.campaignCode,\n bannerMobileImageUrl: null,\n bannerTabletImageUrl: null,\n bannerDesktopImageUrl: null\n };\n break;\n }\n\n case 'SET_CAMPAIGN_VALIDATION_RESULT': {\n if (state.campaignCode === action.campaignCode) {\n state = {\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.campaignCode,\n campaignCodeId: ensureValidCampaignCodeId(\n action.campaignCodeId\n ),\n campaignCodeDescription: nullIfFalsy(\n action.campaignCodeDescription\n ),\n campaignCodeValid: action.campaignCodeValid,\n maxFeeCap: nullIfFalsy(action.maxFeeCap),\n bannerMobileImageUrl: action.bannerMobileImageUrl,\n bannerTabletImageUrl: action.bannerTabletImageUrl,\n bannerDesktopImageUrl: action.bannerDesktopImageUrl,\n hasEnded: action.hasEnded,\n searching: false,\n searchingDelayed: false\n };\n }\n break;\n }\n\n case 'RESET_MAX_FEE_CAP': {\n state = { ...state, maxFeeCap: initialState.maxFeeCap };\n break;\n }\n\n case 'RESET_CAMPAIGN_BANNER': {\n state = {\n ...state,\n bannerMobileImageUrl: initialState.bannerMobileImageUrl,\n bannerTabletImageUrl: action.bannerTabletImageUrl,\n bannerDesktopImageUrl: action.bannerDesktopImageUrl\n };\n break;\n }\n\n case 'TOGGLE_CAMPAIGN_CODE_CHECKBOX': {\n if (action.isChecked) {\n state = {\n ...state,\n campaignCodeChecked: true,\n searching: false,\n searchingDelayed: false\n };\n } else {\n state = {\n ...state,\n campaignCodeChecked: false,\n campaignCode: initialState.campaignCode,\n campaignCodeId: initialState.campaignCodeId,\n campaignCodeDescription: null,\n searching: false,\n searchingDelayed: false,\n hasEnded: false\n };\n }\n break;\n }\n\n case 'VALIDATING_CAMPAIGN_CODE_BY_SEARCHING': {\n state = { ...state, searching: true };\n break;\n }\n\n case 'SEARCHING_FOR_CAMPAIGN_CODE_IS_DELAYED': {\n state = { ...state, searchingDelayed: true };\n break;\n }\n }\n validate(state);\n return state;\n};\n","import config from 'tradera-apps/syi/script/app_react/services/config';\n\nvar initialState = {\n commissionProcent: '10',\n discountFactor: null,\n campaignCommissionProcent: null,\n minCommissionCost: config.commissionMinimum,\n maxCommissionCost: config.commissionCap,\n isVariableCommission: false,\n chosenExtraFeatures: [],\n hasChosenExtraFeatures: false,\n isUnsoldFeeFree: false,\n isCategoryWithNoCommissionCap: false\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_COMMISSION_PROCENT': {\n state = { ...state, commissionProcent: action.commissionProcent };\n break;\n }\n\n case 'SET_DISCOUNT_FACTOR': {\n state = { ...state, discountFactor: action.discountFactor };\n break;\n }\n\n case 'RESET_DISCOUNT_FACTOR': {\n state = { ...state, discountFactor: initialState.discountFactor };\n break;\n }\n\n case 'SET_CAMPAIGN_COMMISSION_PROCENT': {\n state = {\n ...state,\n campaignCommissionProcent: action.campaignCommissionProcent\n };\n break;\n }\n\n case 'RESET_CAMPAIGN_COMMISSION_PROCENT': {\n state = {\n ...state,\n campaignCommissionProcent:\n initialState.campaignCommissionProcent\n };\n break;\n }\n\n case 'SET_MAX_COMMISSION_COST': {\n state = {\n ...state,\n maxCommissionCost: action.payload.maxCommissionCost,\n isCategoryWithNoCommissionCap:\n action.payload.isCategoryWithNoCommissionCap\n };\n break;\n }\n\n case 'SET_MIN_COMMISSION_COST': {\n state = { ...state, minCommissionCost: action.payload.text };\n break;\n }\n\n case 'SET_IS_VARIABLE_COMMISSION': {\n state = { ...state, isVariableCommission: action.payload };\n break;\n }\n\n case 'SET_UNSOLD_FEE_FREE_FOR_CAMPAIGN': {\n state = { ...state, isUnsoldFeeFree: true };\n break;\n }\n\n case 'UNSET_UNSOLD_FEE_FREE_FOR_CAMPAIGN': {\n state = { ...state, isUnsoldFeeFree: false };\n break;\n }\n\n case 'SET_CHOSEN_EXTRA_FEATURES': {\n var hasChosenExtraFeatures =\n action.payload && action.payload.length;\n state = {\n ...state,\n chosenExtraFeatures: action.payload,\n hasChosenExtraFeatures\n };\n\n break;\n }\n }\n\n return state;\n};\n","import dayjs from 'dayjs';\nimport userData from 'tradera-apps/syi/script/app_react/services/user-data';\nimport draftService from 'tradera-apps/syi/script/app_react/services/draft-service';\n\nvar defaultDraft;\nvar initialState;\n\nconst initModuleGlobals = () => {\n if (initialState) {\n return initialState;\n }\n\n defaultDraft = userData.defaultDrafts.newItem;\n\n initialState = {\n daysOptions: makeDaysOptions(3, 14),\n hourOptions: makeHourOptions(),\n minuteOptions: makeMinuteOptions(),\n isCustomEndTimeVisible: false,\n customEndTimePrice: 10,\n isRestartAvailable: true,\n durationDays: defaultDraft.durationDays,\n customEndTimeHour: null,\n customEndTimeMinute: null,\n allowZeroDayAuctions: false,\n validationErrors: {}\n };\n};\n\nfunction makeDaysOptions(min, max) {\n var result = [];\n var minDays = min;\n var maxDays = max;\n for (var numberOfDays = minDays; numberOfDays <= maxDays; numberOfDays++) {\n result.push({\n days: numberOfDays,\n selected: false\n });\n }\n return result;\n}\n\nfunction makeHourOptions() {\n var result = [];\n for (var i = 0; i < 24; i++) {\n var hour = i < 10 ? '0' + i : parseInt(i, 10);\n result.push({ value: hour, text: hour });\n }\n return result;\n}\n\nfunction makeMinuteOptions() {\n var result = [];\n for (var i = 0; i < 60; i++) {\n var minute = i < 10 ? '0' + i : parseInt(i, 10);\n result.push({ value: minute, text: minute });\n }\n return result;\n}\n\nconst getEndDate = (durationDays, customEndTimeHour, customEndTimeMinute) => {\n const endDate = dayjs()\n .startOf('date')\n .add(durationDays, 'day');\n\n if (customEndTimeHour && customEndTimeMinute) {\n return endDate.hour(customEndTimeHour).minute(customEndTimeMinute);\n }\n\n return endDate;\n};\n\nconst getValidationErrors = (\n durationDays,\n customEndTimeHour,\n customEndTimeMinute,\n allowZeroDayAuctions\n) => {\n let customEndTimeError = null;\n const endDate = getEndDate(\n durationDays,\n customEndTimeHour,\n customEndTimeMinute\n );\n\n if (allowZeroDayAuctions) {\n const earliestEndDate = dayjs().add(5, 'minute');\n\n if (endDate.isBefore(earliestEndDate)) {\n customEndTimeError = 'syi_validation_duration_too_short_zero_day'; //'Din valda sluttid är för tidig. Annonser får avslutas tidigast efter 5 minuter.';\n }\n } else if (customEndTimeHour && customEndTimeMinute) {\n const earliestEndDate = dayjs().add(3, 'day');\n\n if (endDate.isBefore(earliestEndDate)) {\n customEndTimeError = 'syi_validation_duration_too_short'; //'Din valda sluttid är för tidig. Annonser får avslutas tidigast efter 72 timmar.';\n }\n }\n\n return customEndTimeError ? { customEndTime: customEndTimeError } : {};\n};\n\nconst newStateWithoutCampaignRelatedProps = (\n state,\n durationDays,\n customEndTime,\n allowZeroDayAuctions\n) => {\n const validationErrors = getValidationErrors(\n durationDays,\n customEndTime,\n allowZeroDayAuctions\n );\n return {\n ...state,\n durationDays,\n customEndTime,\n isCustomEndTimeVisible: !!customEndTime,\n validationErrors\n };\n};\n\nexport default (state, action) => {\n initModuleGlobals();\n state = state || initialState;\n switch (action.type) {\n case 'SET_DURATION_DAYS': {\n const durationDays = action.payload;\n const validationErrors = getValidationErrors(\n durationDays,\n state.customEndTimeHour,\n state.customEndTimeMinute,\n state.allowZeroDayAuctions\n );\n return {\n ...state,\n durationDays,\n validationErrors\n };\n }\n case 'SET_CUSTOM_END_TIME': {\n const [customEndTimeHour, customEndTimeMinute] =\n action.payload?.split(':') || [];\n\n const validationErrors = getValidationErrors(\n state.durationDays,\n customEndTimeHour,\n customEndTimeMinute,\n state.allowZeroDayAuctions\n );\n return {\n ...state,\n customEndTimeHour: customEndTimeHour,\n customEndTimeMinute: customEndTimeMinute,\n isCustomEndTimeVisible: !!action.payload,\n validationErrors\n };\n }\n case 'RESET_DURATION_AND_END_TIME': {\n const durationDays = draftService.getDefaultTemplateValue(\n 'durationDays'\n );\n const customEndTime = draftService.getDefaultTemplateValue(\n 'customEndTime'\n );\n let newState = newStateWithoutCampaignRelatedProps(\n state,\n durationDays,\n customEndTime,\n state.allowZeroDayAuctions\n );\n newState.customEndTimePrice = initialState.customEndTimePrice;\n return newState;\n }\n case 'RESET_CUSTOM_END_TIME': {\n return {\n ...state,\n customEndTimeHour: initialState.customEndTimeHour,\n customEndTimeMinute: initialState.customEndTimeMinute\n };\n }\n case 'SET_CUSTOM_END_TIME_FEE_FREE_FOR_CAMPAIGN':\n return { ...state, customEndTimePrice: 0 };\n case 'RESET_CUSTOM_END_TIME_FEE_FREE_FOR_CAMPAIGN':\n return {\n ...state,\n customEndTimePrice: initialState.customEndTimePrice\n };\n case 'SET_AUCTION_BIN_PRICE': {\n const validationErrors = getValidationErrors(\n state.durationDays,\n state.customEndTimeHour,\n state.customEndTimeMinute,\n state.allowZeroDayAuctions\n );\n return { ...state, validationErrors };\n }\n case 'DISABLE_ZERO_DAY_AUCTIONS': {\n const durationDays =\n state.durationDays >= 3 ? state.durationDays : 3;\n return {\n ...state,\n allowZeroDayAuctions: false,\n daysOptions: makeDaysOptions(3, 14),\n durationDays\n };\n }\n case 'ENABLE_ZERO_DAY_AUCTIONS': {\n const daysOptions = makeDaysOptions(0, 14);\n return { ...state, daysOptions, allowZeroDayAuctions: true };\n }\n case 'ENABLE_RESTART':\n return { ...state, isRestartAvailable: true };\n case 'DISABLE_RESTART':\n return { ...state, isRestartAvailable: false };\n default:\n return state;\n }\n};\n","var initialState = {\n displayPromoted: false,\n displayHighlighted: false\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_DISPLAY_PROMOTED':\n return { ...state, displayPromoted: action.payload };\n case 'SET_DISPLAY_HIGHLIGHTED':\n return { ...state, displayHighlighted: action.payload };\n default:\n return state;\n }\n};\n","const initialState = {\n slots: [{}, {}, {}, {}, {}],\n validationError: null,\n uploadError: null,\n isUploadingWithApp: false,\n imageCount: 0\n};\n\nfunction validate(newState) {\n if (newState.slots.some(slot => slot.isUploading)) {\n newState.validationError = 'syi_validation_images_uploading';\n } else if (newState.slots.every(slot => !slot.imageUrl)) {\n newState.validationError = 'syi_validation_images';\n } else {\n newState.validationError = null;\n }\n return newState;\n}\n\nfunction resolveFirstEmpty(slots) {\n let foundFirst = false;\n for (var i = 0; i < slots.length; i++) {\n if (slots[i].imageUrl || foundFirst) {\n slots[i].firstEmpty = false;\n } else {\n slots[i].firstEmpty = true;\n foundFirst = true;\n }\n }\n}\n\nfunction resetUploadError(newState) {\n newState.uploadError = null;\n}\n\nfunction removeLastLoading(newState) {\n const slots = newState.slots;\n for (var i = slots.length; i-- > 0; ) {\n if (slots[i].isUploading) {\n slots[i].isUploading = false;\n return;\n }\n }\n}\n\nfunction setLoadingOnFreeSlots(newState, numberOfLoading) {\n const slots = newState.slots;\n for (var i = 0; i < slots.length; i++) {\n if (!slots[i].imageId) {\n slots[i].isUploading = true;\n if (--numberOfLoading <= 0) {\n return;\n }\n }\n }\n}\n\nfunction setImageCount(newState) {\n const withUrl = newState.slots.filter(slot => !!slot.imageUrl);\n newState.imageCount = withUrl.length;\n}\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_DRAFT_IMAGES': {\n var slots = [{}, {}, {}, {}, {}];\n\n for (let i = 0; i < slots.length; i++) {\n slots[i].isListingImage = false;\n slots[i].imageId = null;\n slots[i].rotationDegrees = null;\n slots[i].imageUrl = null;\n slots[i].firstEmpty = false;\n slots[i].isUploading = false;\n }\n\n var images = action.payload;\n for (let i = 0; i < images.length && i < slots.length; i++) {\n if (images[i].draftImage) {\n slots[i].isListingImage = false;\n slots[i].imageId = images[i].draftImage.imageId;\n slots[i].rotationDegrees =\n images[i].draftImage.rotationDegrees;\n } else if (images[i].listingImage) {\n slots[i].isListingImage = true;\n slots[i].filename = images[i].listingImage.filename;\n slots[i].imageGroupId = images[i].listingImage.imageGroupId;\n slots[i].imageId = images[i].listingImage.imageId;\n slots[i].rotationDegrees =\n images[i].listingImage.rotationDegrees;\n } else {\n slots[i].isListingImage = false;\n slots[i].imageId = images[i].imageId;\n slots[i].rotationDegrees = images[i].rotationDegrees;\n }\n slots[i].imageUrl = images[i].imageUrl;\n }\n\n resolveFirstEmpty(slots);\n let newState = { ...state, slots };\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_UPLOADED_IMAGE_IN_SLOT': {\n let newslots = [...state.slots];\n let slot = newslots[action.slotIndex];\n slot.imageUrl = action.imageUrl;\n slot.imageId = action.imageId;\n slot.isListingImage = false;\n slot.isUploading = false;\n slot.rotationDegrees = null;\n resolveFirstEmpty(newslots);\n let newState = { ...state, slots: newslots };\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_SLOTS': {\n let newslots = [...action.slots];\n resolveFirstEmpty(newslots);\n let newState = { ...state, slots: newslots };\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_ROTATION': {\n let slots = [...state.slots];\n slots[action.slotIndex].rotationDegrees = action.rotationDegrees;\n let newState = { ...state, slots: slots };\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_UPLOAD_FAILED': {\n let newState = { ...state, uploadError: action.payload };\n setImageCount(newState);\n removeLastLoading(newState);\n return validate(newState);\n }\n case 'SET_IMAGES_UPLOADING': {\n let slots = [...state.slots];\n let newState = { ...state, slots: slots, uploadError: null };\n setLoadingOnFreeSlots(newState, action.numberOfSlots);\n return validate(newState);\n }\n case 'SET_MOBILE_UPLOAD': {\n const newState = {\n ...state,\n isUploadingWithApp: action.isUploadingWithApp\n };\n if (action.isUploadingWithApp) {\n resetUploadError(newState);\n }\n return newState;\n }\n case 'HIDE_ALL_ERRORS': {\n let newState = { ...state, uploadError: null };\n return newState;\n }\n default:\n return state;\n }\n};\n","import config from 'tradera-apps/syi/script/app_react/services/config';\n\nfunction isValidPrice(number) {\n var str = new String(number);\n if (!Number.isFinite(parseInt(str))) {\n return false;\n } else if (str.indexOf('.') > -1) {\n return false;\n } else if (str.indexOf(',') > -1) {\n return false;\n }\n return true;\n}\n\nfunction isInt(number) {\n return number % 1 === 0;\n}\n\nfunction validateOpeningBid({ isPureBinSelected, openingBid }) {\n if (isPureBinSelected) {\n return null;\n }\n\n if (openingBid && !isInt(openingBid)) {\n return 'syi_validation_amount_must_be_whole_number';\n }\n\n var maxPrice = 10000000;\n var minPrice = 1;\n\n if (!isValidPrice(openingBid)) {\n return 'syi_validation_opening_bid_missing';\n }\n\n if (openingBid > maxPrice) {\n return 'syi_validation_max_opening_bid';\n }\n\n if (openingBid < minPrice) {\n return 'syi_validation_minimum_opening_bid';\n }\n\n return null;\n}\n\nfunction validateReservePrice({\n isPureBinSelected,\n showReservePrice,\n openingBid,\n reservePrice,\n auctionBinPrice\n}) {\n if (isPureBinSelected) {\n return null;\n }\n\n if (showReservePrice && !reservePrice) {\n return 'syi_validation_amount_missing';\n }\n\n if (reservePrice && !isInt(reservePrice)) {\n return 'syi_validation_amount_must_be_whole_number';\n }\n\n var maxPrice = 10000000;\n\n if (reservePrice && !isValidPrice(reservePrice)) {\n return 'syi_validation_invalid_reservation_price';\n }\n\n let reservePriceIsLessThanOpeningBid =\n reservePrice && reservePrice <= openingBid;\n if (reservePriceIsLessThanOpeningBid) {\n return 'syi_validation_reservation_must_be_larger_than_starting';\n }\n\n let reservePriceIsGreaterThanAuctionBinPrice =\n reservePrice && auctionBinPrice && reservePrice >= auctionBinPrice;\n if (reservePriceIsGreaterThanAuctionBinPrice) {\n return 'syi_validation_reservation_must_be_less_than_buy_now';\n }\n\n if (reservePrice > maxPrice) {\n return 'syi_validation_max_reservation_price';\n }\n\n return null;\n}\n\nfunction validateAuctionBinPrice({\n isPureBinSelected,\n showAuctionBinPrice,\n openingBid,\n reservePrice,\n auctionBinPrice\n}) {\n if (isPureBinSelected) {\n return null;\n }\n\n if (showAuctionBinPrice && !auctionBinPrice) {\n return 'syi_validation_amount_missing';\n }\n\n if (auctionBinPrice && !isInt(auctionBinPrice)) {\n return 'syi_validation_amount_must_be_whole_number';\n }\n let auctionBinPriceIsLessThanOpeningBid =\n auctionBinPrice && auctionBinPrice <= openingBid;\n if (auctionBinPriceIsLessThanOpeningBid) {\n return 'syi_validation_buy_now_must_be_larger_than_starting';\n }\n\n let reservePriceIsGreaterThanAuctionBinPrice =\n reservePrice && auctionBinPrice && reservePrice >= auctionBinPrice;\n if (reservePriceIsGreaterThanAuctionBinPrice) {\n return 'syi_validation_buy_now_must_be_larger_than_reservation';\n }\n return null;\n}\n\nfunction validateFixedPrice({ isPureBinSelected, fixedPrice }) {\n if (!isPureBinSelected) {\n return null;\n }\n\n if (fixedPrice && !isInt(fixedPrice)) {\n return 'syi_validation_amount_must_be_whole_number';\n }\n\n var maxPrice = 10000000;\n var minPrice = 1;\n\n if (!isValidPrice(fixedPrice)) {\n return 'syi_validation_enter_fixed_price';\n }\n if (!isNaN(fixedPrice)) {\n if (parseInt(fixedPrice) > maxPrice) {\n return 'syi_validation_fixed_price_max_value';\n }\n\n if (parseInt(fixedPrice) < minPrice) {\n return 'syi_validation_fixed_price_min_value';\n }\n }\n return null;\n}\n\nfunction validate(newState) {\n const validationErrors = {};\n\n validationErrors.fixedPrice = validateFixedPrice(newState);\n validationErrors.openingBid = validateOpeningBid(newState);\n validationErrors.auctionBinPrice = validateAuctionBinPrice(newState);\n validationErrors.reservePrice = validateReservePrice(newState);\n\n for (const errorKey in validationErrors) {\n if (!validationErrors[errorKey]) delete validationErrors[errorKey];\n }\n\n newState.validationErrors = validationErrors;\n\n return newState;\n}\n\nconst queryParams = new URLSearchParams(window.location.search);\nvar initialState = {\n openingBid: null,\n auctionBinPrice: null,\n fixedPrice: null,\n reservePrice: null,\n showAuctionBinPrice: false,\n showReservePrice: false,\n showCharityDonation: Boolean(queryParams.get('charityId')),\n editCharity: false,\n isPureBinSelected: null,\n validationErrors: {},\n selectableVats: config.selectableVatValues,\n reservePriceCanChangeButNotBeRemoved: false,\n vat: null\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_OPENING_BID':\n return validate({ ...state, openingBid: action.payload });\n case 'SET_AUCTION_BIN_PRICE':\n return validate({ ...state, auctionBinPrice: action.payload });\n case 'SET_FIXED_PRICE':\n return validate({ ...state, fixedPrice: action.payload });\n case 'SET_RESERVE_PRICE':\n return validate({ ...state, reservePrice: action.payload });\n case 'SET_AUCTION_BIN_PRICE_VISIBILITY':\n return validate({ ...state, showAuctionBinPrice: action.payload });\n case 'SET_RESERVE_PRICE_VISIBILITY':\n return validate({ ...state, showReservePrice: action.payload });\n case 'SET_CHARITY_DONATION_VISIBILITY':\n return validate({ ...state, showCharityDonation: action.payload });\n case 'SET_EDIT_CHARITY':\n return validate({ ...state, editCharity: action.payload });\n case 'SET_IS_PURE_BIN_SELECTED':\n return validate({\n ...state,\n isPureBinSelected: action.isPureBinSelected\n });\n case 'SET_VAT':\n return validate({ ...state, vat: action.payload });\n case 'RESET_PRICES_AND_VAT':\n return validate({\n ...state,\n openingBid: null,\n auctionBinPrice: null,\n fixedPrice: null,\n vat: null\n });\n case 'SET_RESERVE_PRICE_CAN_CHANGE_BUT_NOT_BE_REMOVED':\n return validate({\n ...state,\n reservePriceCanChangeButNotBeRemoved: action.payload\n });\n default:\n return state;\n }\n};\n","var initialState = {\n draftBeforeChange: null\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_DRAFT_BEFORE_CHANGE':\n return { ...state, draftBeforeChange: action.payload };\n default:\n return state;\n }\n};\n","const MAX_DESCRIPTION_LENGTH = 7000;\n\nfunction validate(textWithHtml) {\n if (textWithHtml && textWithHtml.length > MAX_DESCRIPTION_LENGTH) {\n return 'syi_validation_description_to_long';\n }\n\n var elm = document.createElement('div');\n elm.innerHTML = textWithHtml || '';\n\n if (elm.textContent) {\n return elm.textContent.trim() !== ''\n ? null\n : 'syi_validation_missing_description';\n } else if (elm.innerText) {\n return elm.innerText.trim() !== ''\n ? null\n : 'syi_validation_missing_description';\n }\n return 'syi_validation_missing_description';\n}\n\n// By ensuring that shortDescription is always a string makes\n// it easy to know when it has really changed to something significant.\nfunction ensureString(s) {\n return !s ? '' : s;\n}\n\nvar initialState = {\n longDescription: null,\n validationError: null,\n isCurrentDescriptionFromDraft: false,\n fromDraftCounter: 0\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_LONG_DESCRIPTION_FROM_DRAFT':\n return {\n ...state,\n isCurrentDescriptionFromDraft: true,\n longDescription: ensureString(action.payload),\n validationError: validate(action.payload),\n fromDraftCounter: state.fromDraftCounter + 1\n };\n case 'SET_LONG_DESCRIPTION':\n return {\n ...state,\n isCurrentDescriptionFromDraft: false,\n longDescription: ensureString(action.payload),\n validationError: validate(action.payload)\n };\n case 'RESET_LONG_DESCRIPTION': {\n const defaultValue = null;\n return {\n ...state,\n isCurrentDescriptionFromDraft: false,\n longDescription: defaultValue,\n validationError: validate(defaultValue)\n };\n }\n default:\n return state;\n }\n};\n","var initialState = {\n scrollY: {}\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_SCROLL_Y': {\n const scrollY = { ...state.scrollY };\n scrollY[action.key] = action.value;\n return { ...initialState, scrollY };\n }\n default:\n return state;\n }\n};\n","const initialState = {\n charityId: null,\n forceFreeShipping: false,\n name: null,\n description: null,\n isSchenkerPaidBySchenker: false\n};\n\nfunction isSchenkerPaying(campaignCode) {\n const code = campaignCode.toUpperCase();\n return (\n code == 'MHO20' ||\n code == 'MHF20' ||\n code == 'MH20' ||\n code == 'MHTEST' ||\n code == 'MHTESTF'\n );\n}\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'RESET_CHARITY_CAMPAIGN':\n return { ...initialState };\n case 'SET_CHARITY_CAMPAIGN':\n return {\n ...state,\n charityId: action.charityCampaign.charityId,\n forceFreeShipping: action.charityCampaign.forceFreeShipping,\n name: action.charityCampaign.name,\n description: action.charityCampaign.description,\n isSchenkerPaidBySchenker: isSchenkerPaying(action.campaignCode),\n allowZeroDayAuctions:\n action.charityCampaign.allowZeroDayAuctions\n };\n\n default:\n return state;\n }\n};\n","export const filterSelectableSuggestions = (\n incomingSuggestedAttributes,\n categoryAttributes\n) => {\n const selectableSuggestions = [];\n incomingSuggestedAttributes.forEach(sa => {\n const categoryAttribute = categoryAttributes.find(a => a.id === sa.id);\n if (categoryAttribute) {\n const suggestedAttribute = { id: sa.id, values: [] };\n sa.values.forEach(v => {\n const isSelectableSuggestion = categoryAttribute.options.some(\n o => o.value === v\n );\n const isMaxReached =\n suggestedAttribute.values.length >=\n categoryAttribute.maxNumberOfValues;\n if (isSelectableSuggestion && !isMaxReached) {\n suggestedAttribute.values.push(v);\n }\n });\n selectableSuggestions.push(suggestedAttribute);\n }\n });\n return selectableSuggestions;\n};\n\nexport const filterCombinedSelectableSuggestions = (\n primarySuggestedAttributes,\n secondarySuggestedAttributes,\n categoryAttributes\n) => {\n const selectableSuggestions = [];\n categoryAttributes.forEach(categoryAttribute => {\n const primarySuggestedAttribute = primarySuggestedAttributes.find(\n psa => psa.id == categoryAttribute.id\n );\n const secondarySuggestedAttribute = secondarySuggestedAttributes.find(\n ssa => ssa.id == categoryAttribute.id\n );\n const suggestedAttributeValues = [];\n if (primarySuggestedAttribute) {\n primarySuggestedAttribute.values.forEach(v => {\n const isSelectableSuggestion = categoryAttribute.options.some(\n o => o.value === v\n );\n const isMaxReached =\n suggestedAttributeValues.length >=\n categoryAttribute.maxNumberOfValues;\n if (isSelectableSuggestion && !isMaxReached) {\n suggestedAttributeValues.push(v);\n }\n });\n }\n if (secondarySuggestedAttribute) {\n secondarySuggestedAttribute.values.forEach(v => {\n const isSelectableSuggestion = categoryAttribute.options.some(\n o => o.value === v\n );\n const isAlreadySuggested = suggestedAttributeValues.some(\n o => o === v\n );\n const isMaxReached =\n suggestedAttributeValues.length >=\n categoryAttribute.maxNumberOfValues;\n if (\n isSelectableSuggestion &&\n !isMaxReached &&\n !isAlreadySuggested\n ) {\n suggestedAttributeValues.push(v);\n }\n });\n }\n if (suggestedAttributeValues.length > 0) {\n selectableSuggestions.push({\n id: categoryAttribute.id,\n values: suggestedAttributeValues\n });\n }\n });\n return selectableSuggestions;\n};\n","import {\n filterSelectableSuggestions,\n filterCombinedSelectableSuggestions\n} from './attributes-helpers';\n\nvar initialState = {\n // The attributes for the current category\n categoryAttributes: [],\n // The attributes of the draft.\n /**\n draftAttributes: {\n termAttributeValues: [\n {\n id: 1,\n backingField: 'clothes_size',\n userGenerated: true,\n values: [\n 'b'\n ]\n }\n ],\n numberAttributeValues: []\n }\n */\n draftAttributes: {},\n // A list of the selected attributes (draftAttributes) for display on the page.\n // Exists for ease of use in views.\n // Format:\n /**\n {\n title: 'Klädstorlek',\n value: 'L'\n }\n */\n selectableSuggestedAttributes: [],\n selectableCategorySuggestedAttributes: [],\n selectableImageToColorSuggestedAttributes: [],\n // Attribute suggestions from the image-to-color service.\n imageToColorSuggestedAttributes: [],\n validationErrors: {}\n};\n\nconst setCategoryAttributesSuggestions = (state, action) => {\n const { payload } = action;\n const newState = {\n ...state,\n categorySuggestedAttributes: payload.suggestedAttributes,\n selectableCategorySuggestedAttributes: filterSelectableSuggestions(\n payload.suggestedAttributes,\n state.categoryAttributes\n ),\n suggestionsExtractorType: payload.suggestionsExtractorType\n };\n updateSelectableSuggestedAttributes(newState);\n return newState;\n};\n\nconst setImageToColorSuggestions = (state, action) => {\n const { payload } = action;\n const newState = {\n ...state,\n imageToColorSuggestedAttributes: payload.suggestedAttributes\n };\n updateSelectableImageToColorSuggestedAttributes(newState);\n return newState;\n};\n\nconst updateSelectableSuggestedAttributes = newState => {\n newState.selectableSuggestedAttributes = filterCombinedSelectableSuggestions(\n newState.selectableCategorySuggestedAttributes,\n newState.selectableImageToColorSuggestedAttributes,\n newState.categoryAttributes\n );\n};\n\nconst updateSelectableImageToColorSuggestedAttributes = newState => {\n newState.selectableImageToColorSuggestedAttributes = filterSelectableSuggestions(\n newState.imageToColorSuggestedAttributes,\n newState.categoryAttributes\n );\n updateSelectableSuggestedAttributes(newState);\n};\n\nconst setCategoryAttributeOption = (state, action) => {\n const { payload } = action;\n const attribute = state.categoryAttributes.find(\n a => a.id === payload.attributeId\n );\n let options = attribute.options;\n if (\n !attribute.isMultiSelect ||\n (!payload.optionValue && !payload.activate)\n ) {\n options = options.map(o =>\n !o.isActive ? o : { ...o, isActive: false }\n );\n }\n if (payload.optionValue) {\n options = options.map(o =>\n o.value !== payload.optionValue\n ? o\n : { ...o, isActive: payload.activate }\n );\n }\n const numberOfValuesSelected = options.filter(o => o.isActive).length;\n return {\n ...state,\n categoryAttributes: state.categoryAttributes.map(a =>\n a.id !== payload.attributeId\n ? a\n : { ...attribute, options, numberOfValuesSelected }\n )\n };\n};\n\nconst updateCategoryAttributesOptionsStatuses = state => {\n const categoryAttributes = state.categoryAttributes.map(a => {\n const draftAttributeValues =\n state.draftAttributes.termAttributeValues?.find(\n tav => a.id === tav.id\n )?.values || [];\n const options = a.options.map(o => {\n const isActive = draftAttributeValues.includes(o.value);\n return o.isActive === isActive ? o : { ...o, isActive };\n });\n const numberOfValuesSelected = options.filter(o => o.isActive).length;\n return { ...a, options, numberOfValuesSelected };\n });\n return { ...state, categoryAttributes };\n};\n\nconst setDraftAttributes = (state, action) => {\n const newState = {\n ...state,\n draftAttributes: {\n ...action.payload\n }\n };\n return newState;\n};\n\nconst setCategoryAttributes = (state, action) => {\n const newState = {\n ...state,\n categoryAttributes: [...action.payload]\n };\n updateSelectableImageToColorSuggestedAttributes(newState);\n return newState;\n};\n\nconst resetAttributes = state => {\n return {\n ...initialState,\n // Resetting image-to-color suggested attributes is done separately\n imageToColorSuggestedAttributes: state.imageToColorSuggestedAttributes,\n selectableImageToColorSuggestedAttributes:\n state.selectableImageToColorSuggestedAttributes\n };\n};\n\nconst resetSelectedAttributes = state => {\n return updateCategoryAttributesOptionsStatuses({\n ...state,\n draftAttributes: {}\n });\n};\n\nconst resetImageAttributeSuggestions = state => {\n const newState = {\n ...state,\n imageToColorSuggestedAttributes:\n initialState.imageToColorSuggestedAttributes\n };\n updateSelectableImageToColorSuggestedAttributes(newState);\n return newState;\n};\n\nconst validate = state => {\n const validationErrors = {};\n state.categoryAttributes.forEach(attribute => {\n if (attribute.minNumberOfValues === 0) {\n return;\n }\n if (attribute.options.length === 0) {\n // There were no options to choose from.\n // May not happen when backend implementation is done,\n // we should not get an empty list of options.\n return;\n }\n const values = attribute.options.reduce((acc, option) => {\n if (option.isActive) {\n acc.push(option.value);\n }\n return acc;\n }, []);\n if (values.length === 0) {\n validationErrors[\n attribute.backingField\n ] = `attributes:::syi_validation_missing_attribute_${attribute.backingField}`;\n }\n });\n\n return { ...state, validationErrors };\n};\n\nconst reducers = {\n RESET_ATTRIBUTES: resetAttributes,\n RESET_SELECTED_ATTRIBUTES: resetSelectedAttributes,\n RESET_IMAGE_ATTRIBUTES_SUGGESTIONS: resetImageAttributeSuggestions,\n SET_CATEGORY_ATTRIBUTES: setCategoryAttributes,\n SET_DRAFT_ATTRIBUTES: setDraftAttributes,\n SET_CATEGORY_ATTRIBUTE_OPTION: setCategoryAttributeOption,\n UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES: updateCategoryAttributesOptionsStatuses,\n SET_CATEGORY_ATTRIBUTES_SUGGESTIONS: setCategoryAttributesSuggestions,\n SET_IMAGE_ATTRIBUTES_SUGGESTIONS: setImageToColorSuggestions\n};\n\nexport default (state, action) => {\n state = state || initialState;\n const reducer = reducers[action.type];\n if (reducer) {\n return validate(reducer(state, action));\n }\n return state;\n};\n","import { createReducer } from '@reduxjs/toolkit';\nimport userData from 'tradera-apps/syi/script/app_react/services/user-data';\nimport config from 'tradera-apps/syi/script/app_react/services/config';\n\nconst createInitalState = () => {\n if (!userData || !userData.consent || !userData.braintree) {\n // seems syi is not loaded, return empty object\n return {};\n }\n const shouldGiveConsent =\n config.isSyiMemberConsentEnabled && userData.braintree.isBraintreeOnly;\n\n return {\n hasTraderaPayConsent: !!userData.consent.hasTraderaPayConsent,\n shouldGiveConsent,\n hasValidationError:\n shouldGiveConsent && !userData.consent.hasTraderaPayConsent\n };\n};\n\nconst initialState = createInitalState();\n\nexport default createReducer(initialState, {\n SET_TRADERAPAY_CONSENT: (state, action) => {\n state.hasTraderaPayConsent = action.payload;\n state.hasValidationError = !action.payload;\n }\n});\n","import { mapItemDetails } from 'tradera-state/views/view-item/reducer';\n\nvar initialState = {\n itemDetails: null,\n bidInfo: null,\n hasLoaded: false,\n\n viewItemState: null,\n isBidding: false,\n itemState: null,\n placeBidResponse: {\n info: null,\n isSuccessful: null,\n validationResult: null,\n error: null\n },\n myMaxBidAmount: null,\n initialBidFormValue: null,\n serverSecondsLeft: null\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_PREVIEW_ITEM_DETAILS': {\n return {\n ...state,\n itemDetails: mapItemDetails(action.payload)\n };\n }\n case 'SET_PREVIEW_BID_INFO': {\n const { bidInfo, memberId } = action.payload;\n\n return {\n ...state,\n bidInfo: {\n bidId: bidInfo.bidId || 0,\n leadingBidAmount: bidInfo.leadingBidAmount || 0,\n leadingBidderMemberId:\n bidInfo.leadingBidderMemberId || null,\n leadingBidMemberAlias:\n bidInfo.leadingBidMemberAlias || null,\n nextValidBidAmount: bidInfo.nextValidBidAmount,\n transactionType: bidInfo.transactionType || null,\n bidCount: bidInfo.bidCount,\n reservePriceReached: bidInfo.reservePriceReached || false,\n hasLeadingBid:\n !!memberId &&\n memberId === bidInfo.leadingBidderMemberId,\n hasLostLeadingBid: false\n }\n };\n }\n case 'SET_PREVIEW_ITEM_STATE':\n return { ...state, itemState: action.payload };\n case 'SET_PREVIEW_SERVER_SECONDS_LEFT':\n return { ...state, serverSecondsLeft: action.payload };\n case 'SET_PREVIEW_IS_LOADING':\n return { ...state, hasLoaded: action.payload };\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport draft from './reducers/draft';\nimport category from './reducers/category';\nimport payment from './reducers/payment';\nimport syi from './reducers/syi';\nimport errors from './reducers/errors';\nimport shipping from './reducers/shipping';\nimport templates from './reducers/templates';\nimport template from './reducers/template';\nimport buyerRegion from './reducers/buyer-region';\nimport itemCondition from './reducers/item-condition';\nimport campaignCode from './reducers/campaign-code';\nimport fees from './reducers/fees';\nimport itemDuration from './reducers/item-duration';\nimport shortDescription from './reducers/short-description';\nimport extraFeatures from './reducers/extra-features';\nimport images from './reducers/images';\nimport price from './reducers/price';\nimport edit from './reducers/edit';\nimport longDescription from './reducers/long-description';\nimport scroll from './reducers/scroll';\nimport charityCampaign from './reducers/charity-campaign';\nimport drafts from './reducers/drafts';\nimport attributes from './reducers/attributes';\nimport language from './reducers/language';\nimport traderaStateBankId from 'tradera-state/bank-id/reducer';\nimport memberConsent from './reducers/member-consent';\nimport preview from './reducers/preview';\nimport charity from './reducers/charity';\n\nexport default combineReducers({\n attributes,\n bankId: traderaStateBankId,\n buyerRegion,\n campaignCode,\n category,\n charity,\n charityCampaign,\n draft,\n drafts,\n edit,\n errors,\n extraFeatures,\n fees,\n images,\n itemCondition,\n itemDuration,\n language,\n longDescription,\n memberConsent,\n payment,\n preview,\n price,\n scroll,\n shipping,\n shortDescription,\n syi,\n templates,\n template\n});\n","var initialState = null;\n\nexport default (state, action) => {\n state = state || initialState;\n\n switch (action.type) {\n case 'SET_DRAFTS':\n if (action.payload) {\n state = [...action.payload];\n } else {\n state = null;\n }\n break;\n }\n return state;\n};\n","import { getLanguage } from 'tradera-apps/syi/script/app_react/utils/language';\n\nexport default state => {\n state = state || {\n preferredLanguage: getLanguage()\n };\n\n return state;\n};\n","var initialState = null;\n\nexport default (state, action) => {\n state = state || initialState;\n\n switch (action.type) {\n case 'SET_TEMPLATES':\n if (action.payload) {\n state = [...action.payload];\n } else {\n state = null;\n }\n break;\n case 'UPDATE_TEMPLATE_IN_LIST':\n if (state) {\n state = [...state];\n let index = state.findIndex(\n template =>\n template.templateId == action.template.templateId\n );\n if (index > -1) {\n const images = action.template.images;\n const image = images.length > 0 ? images[0] : {};\n state[index].templateId = action.template.templateId;\n state[index].name = action.template.templateName;\n state[index].shortDescription =\n action.template.shortDescription;\n state[index].imageUrl = image.imageUrl;\n state[index].imageRotationDegrees =\n image.draftImage && image.draftImage.rotationDegrees;\n }\n }\n break;\n }\n return state;\n};\n","import { actionTypes as purchaseOrderActionTypes } from '../action-types/purchase-order';\nimport myTraderaItemActions from '../actions/my-tradera-items';\n\nconst initialState = {\n purchaseOrders: []\n};\n\nconst updatePurchaseOrderPaidBySeller = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isPaid: action.payload.isPaid\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderPaidByBuyer = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isMarkedAsPaidByBuyer:\n action.payload.isMarkedAsPaidByBuyer\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShipped = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isShipped: action.payload.isShipped\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderRequestCombinedShipping = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n combinedShippingInformation: {\n ...purchaseOrder.combinedShippingInformation,\n buyerRequestedCombinedShippingPriceDate: Date.now(),\n hasBuyerRequestedCombinedShippingPrice:\n action.payload\n .hasBuyerRequestedCombinedShippingPrice\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShippingPrice = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.purchaseOrderId\n ? {\n ...purchaseOrder,\n ...(purchaseOrder.combinedShippingInformation\n ? {\n combinedShippingInformation: {\n ...purchaseOrder.combinedShippingInformation,\n sellerSetCombinedShippingPriceDate: Date.now()\n }\n }\n : null),\n shippingAmount: action.newPrice,\n totalAmount:\n parseInt(action.newPrice) +\n parseInt(purchaseOrder.totalItemAmount),\n shipping: {\n ...purchaseOrder.shipping,\n shippingDiscount: {\n shippingCost: action.newPrice,\n shippingType: action.shippingProvider\n }\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShipment = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n hasUnpaidShipping: false\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShippedBooked = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isShippingBooked: false\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrders = (state, action) => {\n return {\n ...state,\n paging: {\n ...action.payload.paging\n },\n statistics: action.payload.statistics,\n purchaseOrders: action.payload.purchaseOrders.map(purchaseOrder => {\n const { rows, ...filteredPurchaseOrder } = purchaseOrder;\n return {\n ...filteredPurchaseOrder\n };\n })\n };\n};\n\nconst checkHaveGivenFeedBackTo = (action, purchaseOrder) => {\n const itemsToGiveFeedBackTo = purchaseOrder.itemsToGiveFeedBackTo\n .map(itemToGiveFeedBackTo => {\n const haveGivenFeedBackTo = action.payload.submittables.filter(\n submittable => {\n return submittable.transactionId === itemToGiveFeedBackTo;\n }\n ).length;\n if (haveGivenFeedBackTo) {\n return null;\n }\n return itemToGiveFeedBackTo;\n })\n .filter(Boolean);\n return itemsToGiveFeedBackTo;\n};\n\nconst updatePurchaseOrderFeedback = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n itemsToGiveFeedBackTo: checkHaveGivenFeedBackTo(\n action,\n purchaseOrder\n )\n }\n : purchaseOrder\n )\n };\n};\n\n// Updating hidden always hides the order from the current list\nconst updatePurchaseOrderHidden = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.filter(\n purchaseOrder =>\n purchaseOrder.purchaseOrderId !== action.payload.purchaseOrderId\n )\n };\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER:\n return updatePurchaseOrderPaidBySeller(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isPaid: true\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER:\n return updatePurchaseOrderPaidBySeller(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isPaid: false\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER:\n return updatePurchaseOrderPaidByBuyer(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isMarkedAsPaidByBuyer: true\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER:\n return updatePurchaseOrderPaidByBuyer(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isMarkedAsPaidByBuyer: false\n }\n });\n case purchaseOrderActionTypes.PURCHASE_ORDER_RESET:\n return initialState;\n case purchaseOrderActionTypes.PURCHASE_ORDERS_SHIPPING_BOOKED:\n return updatePurchaseOrderShippedBooked(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING:\n return updatePurchaseOrderRequestCombinedShipping(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_SHIPPED:\n return updatePurchaseOrderShipped(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_PAID_BY_BUYER:\n return updatePurchaseOrderPaidByBuyer(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_PAID_BY_SELLER:\n return updatePurchaseOrderPaidBySeller(state, action);\n case myTraderaItemActions.actionTypes.SET_NEW_SHIPPING_PRICE:\n return updatePurchaseOrderShippingPrice(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_LIST:\n return updatePurchaseOrders(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_DELETE_SHIPMENT:\n return updatePurchaseOrderShipment(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER:\n case purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER:\n return updatePurchaseOrderFeedback(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_HIDDEN:\n return updatePurchaseOrderHidden(state, action);\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport cookies from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport filters from 'tradera-apps/my-tradera/app/state/reducers/filters';\nimport myTradera from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport myTraderaItems from 'tradera-apps/my-tradera/app/state/reducers/my-tradera-items';\nimport payments from 'tradera-apps/my-tradera/app/state/reducers/payments-reducer';\nimport payout from 'tradera-apps/my-tradera/app/state/payouts/reducer';\nimport purchaseOrder from 'tradera-apps/my-tradera/app/state/reducers/purchase-order';\n\nexport default combineReducers({\n cookies,\n filters,\n myTradera,\n myTraderaItems,\n payments,\n payout,\n purchaseOrder\n});\n","import { mapItemDetails } from '../view-item/reducer';\nimport actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...action.payload\n };\n case actionTypes.SET_IS_LOADING:\n return { ...state, loading: action.payload };\n case actionTypes.SET_ITEM_DETAILS:\n return { ...state, itemDetails: mapItemDetails(action.payload) };\n case actionTypes.SET_PRODUCT:\n return { ...state, product: action.payload };\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport viewItem from './view-item/reducer';\nimport { reducer as reportItem } from './report-item/reducer';\nimport profile from './profile/reducer';\nimport startPage from './start-page/reducer';\nimport checkout from './checkout/reducer';\nimport syi from './syi/reducer';\nimport myTradera from './my-tradera/reducer';\nimport shippingCalculator from './shipping-calculator/reducer';\nimport cart from './cart/reducer';\nimport traderaShop from './tradera-shop/reducer';\nimport shippingCheckout from './shipping-checkout/reducer';\nimport initData from 'init-data';\n\nconst reducers = {\n checkout,\n myTradera,\n profile,\n cart,\n reportItem,\n shippingCalculator,\n startPage,\n viewItem,\n traderaShop,\n shippingCheckout\n};\nif (initData.pageName === 'SellItem') {\n reducers.syi = syi;\n}\n\nexport default combineReducers(reducers);\n","import { combineReducers } from 'redux';\n\nimport ads from './ads/reducer';\nimport bankId from './bank-id/reducer';\nimport categories from './categories/reducer';\nimport discover from 'tradera-state/discover/reducer';\nimport { reducer as environment } from './environment/reducer';\nimport initData from './init-data/reducer';\nimport items from './items/reducer';\nimport internationalShipping from './international-shipping/reducer';\nimport language from './language/reducer';\nimport member from './member/reducer';\nimport multiCurrency from './multi-currency/reducer';\nimport page from './page/reducer';\nimport personalisation from './personalisation/reducer';\nimport pushNotifications from './push-notifications/push-notifications-slice';\nimport shippingRegion from './shipping-region/reducer';\nimport ui from './ui/reducer';\nimport views from './views/reducer';\nimport { connectRouter } from 'connected-react-router';\nimport { reducer as status } from './status/reducer';\n\nexport default history =>\n combineReducers({\n ads,\n bankId,\n categories,\n discover,\n environment,\n initData,\n internationalShipping,\n items,\n language,\n member,\n multiCurrency,\n page,\n personalisation,\n pushNotifications,\n shippingRegion,\n ui,\n views,\n router: connectRouter(history),\n status\n });\n","import fetch from '../utils/fetch';\nimport URLS from '../constants/urls';\nexport const types = {\n LINK: 'LINK',\n EXTERNAL_LINK: 'EXTERNAL_LINK',\n DISPATCH: 'DISPATCH',\n DISABLED: 'DISABLED'\n};\n\n/**\n * Converts Array to string for FormData;\n * @param {array} ids array of ids to send to backend\n */\nconst getBodyStringFromIDs = ids => {\n let bodyString = '';\n if (ids) {\n ids.forEach((id, pos) => {\n bodyString += `${pos > 0 ? '&' : ''}ids=${id}`;\n });\n }\n return bodyString;\n};\n\n/**\n * Headers to be set on 'fetch' requests for FormData\n * We should remove FormData posts\n */\nconst formHeaders = {\n 'X-Requested-With': 'XmlHtpRequest',\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'Content-Disposition': 'form-data'\n};\n\n/**\n * Get Restart Items Summary\n * @param {array} ids\n * @returns {promise} fetch promise returned;\n */\nexport const restartItemsSummary = ids =>\n fetch(URLS.ACTIVE_ITEMS_RESTART_SUMMARY, {\n body: JSON.stringify({ ids: ids })\n });\n\n/**\n * End Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const endItems = ids =>\n fetch(URLS.ACTIVE_END_ITEMS, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Show Items in Purchases list\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const showPurchases = ids =>\n fetch(URLS.BUYER_SHOW, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Show Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const showActive = ids =>\n fetch(URLS.BUYER_ACTIVE_ITEMS_SHOW, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Hide Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const hideActive = ids =>\n fetch(URLS.BUYER_ACTIVE_ITEMS_HIDE, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Restart Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const restartItems = ids =>\n fetch(URLS.UNSOLD_RESTART_ITEMS, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Mark Paid\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const markPaid = ids =>\n fetch(URLS.BUYER_MARK_PAID, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n","import React from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport { BREAKPOINT_SIZES } from 'tradera-constants/breakpoints';\n\nconst useIsMobile = () =>\n useMediaQuery({\n minWidth: BREAKPOINT_SIZES.XS.min,\n maxWidth: BREAKPOINT_SIZES.SM.max\n });\n\nexport const withIsMobile = WrappedComponent => {\n const WithIsMobile = props => {\n const isMobile = useIsMobile();\n return ;\n };\n\n WithIsMobile.displayName = `withIsMobile(${WrappedComponent.displayName ||\n WrappedComponent.name}`;\n\n return WithIsMobile;\n};\n\nexport default useIsMobile;\n","export const selectFiltersState = state => state.views.myTradera.filters;\n","import {\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError,\n API_ERRORS\n} from 'tradera-utils/api';\nimport { toLocalizedUrl } from 'tradera-utils/url';\n\nexport const getTraderaShopProductData = async (id, preferredLanguageCode) => {\n return axiosWithTokenRefresh()\n .get(toLocalizedUrl(`/tradera-shop/${id}.json`, preferredLanguageCode))\n .then(finalizeResponse())\n .then(response => response.data)\n .catch(\n handleError({\n // Ignore 400 & 401 errors that slip through token refresh\n 400: API_ERRORS.IGNORE_ME,\n 401: API_ERRORS.IGNORE_ME\n })\n );\n};\n","import { mapItemDetails } from '../view-item/reducer';\n\nexport default initData => {\n if (!initData.traderaShopProduct) {\n return {};\n }\n\n const { product, item } = initData.traderaShopProduct;\n\n return {\n product,\n itemDetails: mapItemDetails(item.itemDetails),\n loading: false\n };\n};\n","import actionTypes from './action-types';\nimport adsActions from 'tradera-state/ads/actions';\nimport { selectPreferredLanguageCode } from 'tradera-state/language/selectors';\nimport { getTraderaShopProductData } from './api';\nimport logger from 'packages/logger';\nimport getInitialState from './initial-state';\n\nexport const initialize = initData => ({\n type: actionTypes.INITIALIZE,\n payload: getInitialState(initData)\n});\n\nexport const fetchTraderaShopProductData = urlSlug => async (\n dispatch,\n getState\n) => {\n const preferredLanguageCode = selectPreferredLanguageCode(getState);\n dispatch(setIsLoading(true));\n try {\n const { product, item } = await getTraderaShopProductData(\n urlSlug,\n preferredLanguageCode\n );\n dispatch(setItemDetails(item.itemDetails));\n dispatch(setProduct(product));\n dispatch(adsActions.setAds(item.reduxContainer.ads));\n dispatch(setIsLoading(false));\n } catch (error) {\n const status = error.response && error.response.status;\n if (status === 404) {\n // Handle server side.\n window.location.reload();\n } else {\n logger(error);\n }\n }\n};\n\nconst setProduct = product => dispatch => {\n dispatch({ type: actionTypes.SET_PRODUCT, payload: product });\n};\n\nconst setItemDetails = itemDetails => dispatch => {\n dispatch({ type: actionTypes.SET_ITEM_DETAILS, payload: itemDetails });\n};\n\nconst setIsLoading = isLoading => dispatch => {\n dispatch({ type: actionTypes.SET_IS_LOADING, payload: isLoading });\n};\n","export default {\n ADD: 'ITEMS/ADD',\n ADD_RECENTLY_VIEWED: 'ITEMS/ADD_RECENTLY_VIEWED',\n INITIALIZE: 'ITEMS/INITIALIZE',\n WISHLIST: 'ITEMS/WISHLIST',\n WISHLIST_ADD_RANGE: 'ITEMS/WISHLIST_ADD_RANGE',\n SETTINGS: 'ITEMS/SETTINGS',\n UPDATE_ITEM: 'ITEMS/UPDATE_ITEM'\n};\n","import { logger } from 'packages';\nimport * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\nimport { getReturnUrl } from 'tradera-utils/login';\nimport { DEFAULT_COOKIES } from 'tradera-constants/cookies';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { cache, CACHE_KEYS } from 'tradera-utils/cache';\nimport cookieUtil from 'tradera-utils/cookie';\nimport actionTypes from './action-types';\nimport {\n getSystemMessages,\n getMessagingNotifications,\n getDismissSwish\n} from './api';\nimport itemActions from '../items/actions';\nimport { getItem } from '../items/api';\n\nconst initialize = initialState => ({\n type: actionTypes.INITIALIZE,\n payload: initialState\n});\n\nconst toggleHeaderSearch = payload => ({\n type: actionTypes.TOGGLE_HEADER_SEARCH,\n payload\n});\n\nconst openGdprModal = payload => ({\n type: actionTypes.OPEN_GDPR_MODAL,\n payload\n});\n\nconst closeGdprModal = payload => ({\n type: actionTypes.CLOSE_GDPR_MODAL,\n payload\n});\n\nconst openGdprSettings = payload => ({\n type: actionTypes.OPEN_GDPR_SETTINGS,\n payload\n});\n\nconst closeGdprSettings = payload => ({\n type: actionTypes.CLOSE_GDPR_SETTINGS,\n payload\n});\n\nconst openQuickView = payload => (dispatch, getState) => {\n const { openedFrom, ...restOfPayload } = payload;\n\n if (getState().ui.quickView.loading) {\n return;\n }\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: true\n });\n\n return getItem(restOfPayload.itemId)\n .then(({ data }) => {\n if (data) {\n const updatedData = {\n ...data,\n imageFormats: data.imageFormats?.map(i => ({\n ...i,\n alt: i.alt || data.shortDescription\n }))\n };\n dispatch(itemActions.add([updatedData]));\n }\n dispatch({\n type: actionTypes.OPEN_QUICK_VIEW,\n payload: restOfPayload\n });\n gtm.trackAction('Quick View', `Open: from ${openedFrom}`);\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: false\n });\n return data;\n })\n .catch(error => {\n dispatch(closeQuickView());\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: false\n });\n logger(error);\n });\n};\n\nconst closeQuickView = payload => ({\n type: actionTypes.CLOSE_QUICK_VIEW,\n payload\n});\n\nconst openVideoModal = payload => ({\n type: actionTypes.OPEN_VIDEO_MODAL,\n payload\n});\n\nconst closeVideoModal = payload => ({\n type: actionTypes.CLOSE_VIDEO_MODAL,\n payload\n});\n\nconst openYoutubeVideoModal = payload => ({\n type: actionTypes.OPEN_YOUTUBE_VIDEO_MODAL,\n payload\n});\n\nconst closeYoutubeVideoModal = payload => ({\n type: actionTypes.CLOSE_YOUTUBE_VIDEO_MODAL,\n payload\n});\n\n/**\n * signIn\n * @param {object} payload\n * @param {string} payload.redirectUrl - where to send the user after login completes\n */\nconst signIn = payload => (dispatch, getStore) => {\n const {\n environment: { featureSwitches }\n } = getStore();\n\n if (!featureSwitches['login-anywhere']) {\n window.location = `/login${getReturnUrl(payload.redirectUrl)}`;\n } else {\n dispatch(openProfileMenu(payload.redirectUrl));\n }\n};\n\n/*\n Changes made to messaging modal will affect My Tradera as well!\n*/\nconst openMessagingModal = payload => ({\n type: actionTypes.OPEN_MESSAGING_MODAL,\n payload\n});\n\nconst closeMessagingModal = payload => ({\n type: actionTypes.CLOSE_MESSAGING_MODAL,\n payload\n});\n\n/**\n * Open a notification optin modal\n *\n * @param {boolean} type - type of notifications to show modal for\n * @returns {function(*, *): boolean}\n */\nconst openNotificationOptinModal = (\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n) => async (dispatch, getState) => {\n const { pushNotifications } = getState();\n if (!pushNotifications.enabled) {\n return;\n }\n if (pushNotifications.shownModals[modalType] === true) {\n return;\n }\n dispatch({\n type: actionTypes.OPEN_NOTIFICATION_OPTIN_MODAL,\n payload: {\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n }\n });\n};\n\nconst closeNotificationOptinModal = payload => ({\n type: actionTypes.CLOSE_NOTIFICATION_OPTIN_MODAL,\n payload\n});\n\nconst openProfileMenu = payload => ({\n type: actionTypes.OPEN_PROFILE_MENU,\n payload\n});\n\nconst closeProfileMenu = payload => ({\n type: actionTypes.CLOSE_PROFILE_MENU,\n payload\n});\n\nconst openCategoryDropdownMenu = payload => ({\n type: actionTypes.OPEN_CATEGORY_DROPDOWN_MENU,\n payload\n});\n\nconst closeCategoryDropdownMenu = payload => ({\n type: actionTypes.CLOSE_CATEGORY_DROPDOWN_MENU,\n payload\n});\n\nconst openSearchForm = payload => ({\n type: actionTypes.OPEN_SEARCH_FORM,\n payload\n});\n\nconst closeSearchForm = payload => ({\n type: actionTypes.CLOSE_SEARCH_FORM,\n payload\n});\n\nconst updateItemLayout = value => {\n const defaultCookie = DEFAULT_COOKIES['ITEM_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n return {\n type: actionTypes.ITEM_LAYOUT,\n payload: value\n };\n};\n\nconst updateSiteLayout = value => {\n const defaultCookie = DEFAULT_COOKIES['SITE_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n return {\n type: actionTypes.SITE_LAYOUT,\n payload: value\n };\n};\n\nconst updateSystemMessages = systemMessages => ({\n type: actionTypes.UPDATE_SYSTEM_MESSAGES,\n payload: systemMessages\n});\n\nconst fetchSystemMessages = () => async (dispatch, getState) => {\n const {\n environment: { featureSwitches },\n member: { isLoggedIn }\n } = getState();\n if (featureSwitches && featureSwitches['mytradera-alerts'] && isLoggedIn) {\n try {\n let systemMessages = cache.read(CACHE_KEYS.SYSTEM_MESSAGES);\n if (!systemMessages) {\n const fetchedMessages = await getSystemMessages();\n systemMessages = {};\n if (fetchedMessages && 'items' in fetchedMessages.data) {\n fetchedMessages.data.items.forEach(({ type }) => {\n systemMessages[type] = true;\n });\n cache.write(CACHE_KEYS.SYSTEM_MESSAGES, systemMessages);\n }\n }\n dispatch(updateSystemMessages(systemMessages));\n } catch (error) {\n // Invalidate cache to fetch fresh again next action\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n await dispatch(logOut());\n window.location = '/login/logout';\n break;\n case API_ERRORS.IGNORE_ME:\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n break;\n default:\n logger(error);\n break;\n }\n }\n }\n};\n\nconst updateMessagingNotifications = payload => ({\n type: actionTypes.UPDATE_MESSAGING_NOTIFICATIONS,\n payload\n});\n\nconst fetchMessagingNotifications = () => async dispatch => {\n try {\n let messagingNotifications = cache.read(CACHE_KEYS.MESSAGING_BADGES);\n if (!messagingNotifications) {\n const { data } = await getMessagingNotifications();\n messagingNotifications = data;\n }\n dispatch(updateMessagingNotifications(messagingNotifications));\n } catch (error) {\n // Fail silently\n }\n};\n\nconst dismissSwish = () => dispatch => {\n dispatch({\n type: actionTypes.UPDATE_SYSTEM_MESSAGES,\n payload: {\n SwishNumberMissing: false\n }\n });\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n getDismissSwish().catch(() => {\n // Fail silently\n });\n};\n\nconst logOut = () => async dispatch => {\n cache.remove(CACHE_KEYS.MESSAGING_BADGES);\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n dispatch({\n type: actionTypes.LOG_OUT,\n payload: {}\n });\n};\n\nconst openItemSettings = payload => ({\n type: actionTypes.OPEN_ITEM_SETTINGS,\n payload: { item: payload }\n});\n\nconst closeItemSettings = payload => ({\n type: actionTypes.CLOSE_ITEM_SETTINGS,\n payload\n});\n\nexport const openModal = ({ modalId, data }) => ({\n type: actionTypes.OPEN_MODAL,\n payload: { modalId, data }\n});\n\nexport const closeModal = () => ({\n type: actionTypes.CLOSE_MODAL\n});\n\nexport const openShareModal = payload => ({\n type: actionTypes.OPEN_SHARE_MODAL,\n payload\n});\n\nexport const closeShareModal = () => ({\n type: actionTypes.CLOSE_SHARE_MODAL,\n payload: false\n});\n\nexport const openHelpSection = payload => ({\n type: actionTypes.OPEN_HELP_SECTION,\n payload\n});\n\nexport const closeHelpSection = () => ({\n type: actionTypes.CLOSE_HELP_SECTION,\n payload: false\n});\n\nexport default {\n initialize,\n toggleHeaderSearch,\n openGdprModal,\n closeGdprModal,\n openGdprSettings,\n closeGdprSettings,\n openQuickView,\n closeQuickView,\n openVideoModal,\n closeVideoModal,\n openYoutubeVideoModal,\n closeYoutubeVideoModal,\n signIn,\n openMessagingModal,\n closeMessagingModal,\n openNotificationOptinModal,\n closeNotificationOptinModal,\n updateItemLayout,\n updateSiteLayout,\n updateSystemMessages,\n fetchSystemMessages,\n updateMessagingNotifications,\n fetchMessagingNotifications,\n dismissSwish,\n openProfileMenu,\n closeProfileMenu,\n openCategoryDropdownMenu,\n closeCategoryDropdownMenu,\n openSearchForm,\n closeSearchForm,\n openItemSettings,\n closeItemSettings,\n logOut\n};\n","import axios from 'axios';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n API_ERRORS,\n axiosConfigs,\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\nimport { touchWebClient } from 'tradera-utils/http';\n\nfunction getSystemMessages() {\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.MEMBER_SYSTEM_MESSAGES, {\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(\n handleError({\n // Ignore 400 & 401 errors that slip through token refresh\n 400: API_ERRORS.IGNORE_ME,\n 401: API_ERRORS.IGNORE_ME\n })\n );\n}\n\nfunction getMessagingNotifications() {\n return touchWebClient.get('api/messaging/stats', {\n cancelTokenId: 'fetchMessagingNotifications',\n ...axiosConfigs.authenticated\n });\n}\n\nfunction getDismissSwish() {\n return axios\n .get(ENDPOINTS.PAYMENT_SWISH_OPTOUT, {\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nexport { getSystemMessages, getMessagingNotifications, getDismissSwish };\n","const getJSValue = {\n True: true,\n False: false,\n All: 'All'\n};\n\nconst setJSValue = {\n true: 'True',\n false: 'False',\n All: 'All'\n};\n\nexport const setEnum = value => setJSValue[value];\nexport const getEnum = value => getJSValue[value];\n","import { createSlice } from '@reduxjs/toolkit';\nimport { assertNoUndefinedProperties } from 'tradera-utils/assert';\nimport { getItemState } from '../view-item/item-state-helper';\nimport { getAmountDetails } from 'tradera-apps/tradera/components/vip/bidding/bid-details'; // TODO put getAmountDetails somewhere else\nimport { VIEW_STATES } from './constants';\n\nexport const initialState = {\n amount: 0,\n breadCrumbs: [],\n categoryId: 0,\n categoryNames: [],\n categories: [],\n categoryLevel: 0,\n description: null,\n hasEnded: false,\n images: [],\n itemId: 0,\n itemUrl: null,\n paymentOptions: [],\n paymentTerms: null,\n reasons: [],\n resultMessage: null,\n shippingOptions: [],\n shippingTerms: [],\n sellerMemberId: 0,\n title: null,\n viewState: VIEW_STATES.LOADING,\n itemDetails: null\n};\n\nconst slice = createSlice({\n name: 'reportItem',\n initialState,\n reducers: {\n resetInitialState: () => {\n return initialState;\n },\n setReportItem: (state, { payload: { item, itemUrl, reasons } }) => {\n const itemDetails = item.itemDetails;\n const bidInfo = item.bidInfo;\n const itemState = getItemState(\n itemDetails.hasEnded,\n itemDetails.itemType,\n bidInfo.bidCount,\n bidInfo.reservePriceReached,\n itemDetails.openingBid,\n bidInfo.nextValidBidAmount,\n bidInfo.transactionType,\n bidInfo.leadingBidderMemberId\n );\n const amountDetails = getAmountDetails(\n () => '', // We are currently not interested in displaying what the amount means in the current UX.\n itemState,\n itemDetails.fixedPrice,\n bidInfo.leadingBidAmount,\n itemDetails.openingBid,\n bidInfo.bidCount > 0\n );\n state.amount = amountDetails.amount;\n state.allowedBuyerRegion = itemDetails.allowedBuyerRegion;\n state.breadCrumbs = item.breadCrumbs;\n state.categoryId = itemDetails.categoryId;\n state.categoryNames = item.breadCrumbs.map(\n breadCrumb => breadCrumb.text\n );\n state.description = itemDetails.description;\n state.endDate = itemDetails.endDate;\n state.hasEnded = itemDetails.hasEnded;\n state.images = itemDetails.images;\n state.itemId = itemDetails.itemId;\n state.itemUrl = itemUrl;\n state.paymentOptions = itemDetails.paymentOptions;\n state.reasons = reasons;\n state.shippingOptions = itemDetails.shippingOptions;\n state.shippingTerms = itemDetails.shippingTerms;\n state.sellerMemberId = itemDetails.sellerMemberId;\n state.title = itemDetails.title;\n state.viewState = itemDetails.hasEnded\n ? VIEW_STATES.ITEM_ENDED\n : VIEW_STATES.FORM;\n state.itemDetails = itemDetails;\n assertNoUndefinedProperties(state);\n },\n setViewState: (state, { payload }) => {\n state.viewState = payload;\n },\n setCategories: (state, { payload: categories, categoryLevel }) => {\n state.categories = categories;\n state.categoryLevel = categoryLevel;\n }\n }\n});\n\nexport const {\n resetInitialState,\n setReportItem,\n setViewState,\n setCategories\n} = slice.actions;\nexport const reducer = slice.reducer;\n","export default ({ displayAllowedBuyerRegionFilter }) => {\n return {\n activeBrands: [],\n activeFilters: [],\n attributeFilters: [],\n categoryPath: [],\n currentCategoryId: 0,\n displayAllowedBuyerRegionFilter,\n endpoint: null,\n error: null,\n fallbackItemsById: [],\n filterCategories: {},\n filterPrice: {},\n filters: {},\n hasResult: false,\n headerText: null,\n internalSearch: {},\n introText: null,\n isFetchingGeolocation: false,\n isSavedSearchEmailEnabled: false,\n isShopOwnedByCurrentMember: false,\n itemsById: [],\n itemsOnDisplayById: [],\n mainText: null,\n pagination: null,\n queryParams: {},\n totalItems: 0,\n discoverTranslationResult: {},\n reduxContainer: {}\n };\n};\n","import { logger } from 'packages';\n\nimport { getSearchResults } from './api';\nimport actionTypes from './action-types';\nimport itemActions from '../items/actions';\nimport pageActions from '../page/actions';\nimport adsActions from '../ads/actions';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { reload } from 'tradera-utils/location';\nimport initialState from './initial-state';\nimport * as discoverTracking from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\nimport {\n isSwedenCountryCodeOrUndefined,\n isSwedenCountryNameOrUndefined\n} from 'tradera-utils/countrycode';\nimport { selectShippingRegionCountryCodeIso2 } from 'tradera-state/shipping-region/selectors';\nimport {\n selectIsLoggedIn,\n selectMemberCountryCodeIso2\n} from 'tradera-state/member/selectors';\n\nconst requestSearchResults = () => {\n return {\n type: actionTypes.REQUEST_SEARCH_RESULTS\n };\n};\n\nconst updatePageMetaForSearchResults = () => (dispatch, getState) => {\n const discover = getState().discover;\n const { reduxContainer } = discover;\n const { ads, pageMeta } = reduxContainer;\n dispatch(\n pageActions.setPageMeta({\n ...pageMeta\n })\n );\n if (ads) dispatch(adsActions.setAds(ads));\n};\n\n/**\n *\n * @param {object} payload the normalized version of the response\n * @param {object} payload.result\n * @param {object} payload.result.categoryPath\n * @param {object[]} [payload.result.fallbackItems]\n * @param {object[]} [payload.result.items]\n * @param {object} [payload.result.itemsOnDisplay]\n * @param {object[]} [payload.result.itemsOnDisplay.items]\n * @param {object} [payload.result.reduxContainer]\n * @param {object} [payload.result.reduxContainer.ads]\n * @param {object} [payload.result.reduxContainer.pageMeta]\n */\nconst receiveSearchResults = payload => dispatch => {\n const {\n result: { fallbackItems, items, itemsOnDisplay }\n } = payload;\n\n const itemsToAdd = [];\n if (fallbackItems?.length > 0) {\n itemsToAdd.push(...fallbackItems);\n }\n if (items?.length > 0) {\n itemsToAdd.push(...items);\n }\n if (itemsOnDisplay?.items?.length > 0) {\n itemsToAdd.push(...itemsOnDisplay.items);\n }\n if (itemsToAdd.length > 0) {\n dispatch(itemActions.add(itemsToAdd));\n }\n\n dispatch({\n type: actionTypes.RECEIVE_SEARCH_RESULTS,\n payload\n });\n};\n\nconst fetchSearchResults = (endpoint, queryParams, pageType, onLoaded) => {\n return async (dispatch, getState) => {\n dispatch(requestSearchResults());\n const {\n environment: { version }\n } = getState();\n return getSearchResults(endpoint, queryParams, '', version)\n .then(({ data: result }) => {\n const searchResults = { result, endpoint, queryParams };\n dispatch(receiveSearchResults(searchResults));\n return searchResults;\n })\n .catch(error => {\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n break;\n case API_ERRORS.VERSION_MISMATCH:\n reload(true);\n break;\n default:\n dispatch(handleSearchResultsError(error.message));\n break;\n }\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n case API_ERRORS.VERSION_MISMATCH:\n break;\n default:\n logger(error);\n break;\n }\n })\n .finally(() => {\n dispatch(afterReceiveSearchResults(pageType, onLoaded));\n });\n };\n};\n\nconst afterReceiveSearchResults = (pageType, onLoaded) => (\n dispatch,\n getState\n) => {\n dispatch(updatePageMetaForSearchResults(pageType));\n dispatch(() => {\n trackNewSearch(getState);\n onLoaded();\n });\n};\n\nconst handleSearchResultsError = payload => ({\n type: actionTypes.HANDLE_SEARCH_RESULTS_ERROR,\n payload\n});\n\nconst setSingleFilterValue = (filter, value) => {\n return {\n type: actionTypes.SET_SINGLE_FILTER,\n payload: {\n filter,\n value\n }\n };\n};\n\nconst addItemOnDisplay = payload => ({\n type: actionTypes.ADD_ITEM_ON_DISPLAY,\n payload\n});\n\nconst removeItemOnDisplay = payload => ({\n type: actionTypes.REMOVE_ITEM_ON_DISPLAY,\n payload\n});\n\nconst setCategoryPath = categoryPath => {\n return {\n type: actionTypes.SET_CATEGORY_PATH,\n payload: categoryPath\n };\n};\n\nconst setCurrentCategoryId = categoryId => {\n return {\n type: actionTypes.SET_CURRENT_CATEGORY_ID,\n payload: categoryId\n };\n};\n\nconst reset = () => (dispatch, getState) => {\n const state = getState();\n return dispatch({\n type: actionTypes.RESET,\n payload: {\n initialState: initialState(state.initData)\n }\n });\n};\n\nconst initialize = () => (dispatch, getState) => {\n const shippingCountry = selectShippingRegionCountryCodeIso2(getState());\n const isLoggedIn = selectIsLoggedIn(getState());\n const memberCountry = selectMemberCountryCodeIso2(getState());\n const displayAllowedBuyerRegionFilter =\n !isSwedenCountryCodeOrUndefined(shippingCountry) ||\n (isLoggedIn && !isSwedenCountryNameOrUndefined(memberCountry));\n dispatch({\n type: actionTypes.INITIALIZE,\n payload: initialState({\n displayAllowedBuyerRegionFilter\n })\n });\n};\n\nconst trackNewSearch = getState => {\n const state = getState();\n const { categoryPath, itemsById, metaTitle } = state.discover;\n discoverTracking.trackNewSearch(categoryPath, itemsById, metaTitle);\n};\n\nexport default {\n afterReceiveSearchResults,\n addItemOnDisplay,\n fetchSearchResults,\n initialize,\n receiveSearchResults,\n removeItemOnDisplay,\n requestSearchResults,\n reset,\n setCategoryPath,\n setCurrentCategoryId,\n setSingleFilterValue\n};\n","import { logger } from 'packages';\nimport TRANSACTION_TYPES from 'tradera-constants/transaction-types';\nimport ITEM_TYPES from 'tradera-constants/item-types';\nimport { ITEM_STATES } from './constants';\n\nconst getEndedItemState = (\n itemType,\n bidCount,\n reservePriceReached,\n openingBid,\n nextValidBidAmount,\n transactionType,\n leadingBidMemberId\n) => {\n const isAuction = itemType === ITEM_TYPES.AUCTION;\n const isAuctionBin = itemType === ITEM_TYPES.AUCTION_BIN;\n const isBuyItNow = itemType === ITEM_TYPES.PURE_BIN;\n const isShopItem = itemType === ITEM_TYPES.SHOP_ITEM;\n\n // transactionType may not be set if feature-toggle 'always-enrich-with-transactiontype' is off in WebApi.\n if (transactionType === TRANSACTION_TYPES.BIN) {\n return ITEM_STATES.ENDED_AUCTION_BIN_BOUGHT_AS_BIN;\n }\n\n // When transactionType is not available (feature toggle is off), we can still figure out\n // that the item was bought with buy-it-now price if there are no bids and a leading bidder exist.\n if (\n !transactionType &&\n isAuctionBin &&\n bidCount === 0 &&\n reservePriceReached &&\n leadingBidMemberId > 0\n ) {\n return ITEM_STATES.ENDED_AUCTION_BIN_BOUGHT_AS_BIN;\n }\n\n if ((isAuction || isAuctionBin) && bidCount === 0) {\n return ITEM_STATES.ENDED_AUCTION_WITHOUT_BID;\n }\n if (bidCount > 0 && !reservePriceReached) {\n return ITEM_STATES.ENDED_AUCTION_WITHOUT_WINNING_BID;\n }\n if (bidCount > 0 && reservePriceReached) {\n return ITEM_STATES.ENDED_AUCTION_WITH_WINNING_BID;\n }\n if (isBuyItNow || isShopItem) {\n return ITEM_STATES.ENDED_FIXED_PRICE;\n }\n logger(\n `Unknown ended state for parameters: ${JSON.stringify({\n itemType,\n bidCount,\n reservePriceReached,\n openingBid,\n nextValidBidAmount\n })}`\n );\n return ITEM_STATES.UNKNOWN;\n};\n\nconst getOngoingItemState = itemType => {\n if (itemType === ITEM_TYPES.AUCTION) {\n return ITEM_STATES.ONGOING_AUCTION;\n }\n if (ITEM_TYPES.AUCTION_BIN) {\n return ITEM_STATES.ONGOING_AUCTION_BIN;\n }\n if (itemType === ITEM_TYPES.PURE_BIN || itemType === ITEM_TYPES.SHOP_ITEM) {\n return ITEM_STATES.ONGOING_FIXED_PRICE;\n }\n logger(\n `Unknown ongoing state for parameters: ${JSON.stringify({\n itemType\n })}`\n );\n return ITEM_STATES.UNKNOWN;\n};\n\nexport const getItemState = (\n hasEnded,\n itemType,\n bidCount,\n reservePriceReached,\n openingBid,\n nextValidBidAmount,\n transactionType,\n leadingBidMemberId\n) => {\n if (hasEnded) {\n return getEndedItemState(\n itemType,\n bidCount,\n reservePriceReached,\n openingBid,\n nextValidBidAmount,\n transactionType,\n leadingBidMemberId\n );\n }\n return getOngoingItemState(itemType);\n};\n","export const selectRouterState = state => state.router;\n","export const VIEW_STATES = {\n FORM: 'FORM',\n ITEM_ENDED: 'ITEM_ENDED',\n LOADING: 'LOADING',\n SUBMIT_FAILED: 'SUBMIT_FAILED',\n SUBMIT_SUCCESS: 'SUBMIT_SUCCESS',\n SUBMITTING: 'SUBMITTING'\n};\n\nexport const REASONS = {\n NONE: '0',\n SUSPECTED_FRAUD: '1',\n ITEM_IS_A_COUNTERFEIT: '2',\n BRAND_NAME_MISUSE: '3',\n WRONG_CATEGORY: '4',\n PROHIBITED_SHIPPINGvOR_PAYMEN_TMETHOD: '5',\n OTHER_PROHIBITED_ITEM: '6',\n OTHER_PROHIBITED_SETUP: '7',\n OTHER: '8'\n};\n","export default initData => {\n return {\n breadcrumbs: '',\n canonicalLink: '',\n metaDescription: initData.description || '',\n metaRobots: '',\n metaTitle: initData.title || '',\n type: initData.pageName || null\n };\n};\n","//jshint module : true\nimport actionTypes from './action-types';\nimport getInitialState from './initial-state';\n\nconst initialize = initData => ({\n type: actionTypes.INITIALIZE,\n payload: getInitialState(initData)\n});\n\nconst setPageMeta = meta => {\n return {\n type: actionTypes.SET_PAGE_META,\n payload: meta\n };\n};\n\nexport default {\n initialize,\n setPageMeta\n};\n","export default {\n ACTIVE_FILTER_STATES: [\n 'New',\n 'Used',\n 'Private',\n 'Company',\n 'Ended',\n 'Auction',\n 'FixedPrice',\n 'Blekinge',\n 'Dalarna',\n 'Gavleborg',\n 'Gotland',\n 'Halland',\n 'Jamtland',\n 'Jonkoping',\n 'Kalmar',\n 'Kronoberg',\n 'Norrbotten',\n 'Skane',\n 'Sodermanland',\n 'Stockholm',\n 'Uppsala',\n 'Varmland',\n 'Vasterbotten',\n 'Vasternorrland',\n 'Vastmanland',\n 'VastraGotaland',\n 'Orebro',\n 'Ostergotland',\n 'eu;international',\n 'nordic;international',\n 'international'\n ],\n MODALS: {\n FILTER_MODAL: 'filterModal',\n CATEGORY_MODAL: 'categoryModal'\n },\n ITEM_LAYOUT: {\n GRID: 'layout-grid',\n LIST: 'layout-list'\n }\n};\n","import { createSlice } from '@reduxjs/toolkit';\n\nconst isNewDraft = window.location.pathname?.endsWith('new');\nconst queryParams = new URLSearchParams(window.location.search);\nconst queryParamCharityId = queryParams.get('charityId');\nconst preselectCharity = isNewDraft && queryParamCharityId;\n\nconst initialStateShipping = {\n forceFreeShipping: false,\n isFreeShippingPaidByProvider: false,\n freeShippingPaidByProviderName: null\n};\n\nconst initialState = {\n anonymous: true,\n charityId: preselectCharity ? Number(queryParamCharityId) : null,\n description: null,\n logoUrl: null,\n name: null,\n percentageToDonate: preselectCharity ? 100 : 0,\n ...initialStateShipping\n};\n\nconst charitySlice = createSlice({\n name: 'charity',\n initialState,\n reducers: {\n setCharityId: (state, { payload }) => {\n state.charityId = payload.charityId;\n if (payload.charityId) {\n state.percentageToDonate = 100;\n } else {\n state.percentageToDonate = 0;\n }\n },\n setCharityInfo: (\n state,\n { payload: { name, description, logoUrl } }\n ) => {\n return { ...state, name, description, logoUrl };\n },\n setCharityAnonymous: (state, { payload }) => {\n state.anonymous = payload.anonymous;\n },\n setCharityFromDraft: (state, { payload }) => {\n state.charityId = payload.charityId;\n state.percentageToDonate = payload.percentageToDonate;\n state.anonymous = payload.anonymous;\n },\n resetCharity: () => {\n return { ...initialState };\n },\n setCharityShippingInfo: (state, { payload }) => {\n return { ...state, ...payload };\n }\n }\n});\n\nexport const {\n resetCharity,\n setCharityAnonymous,\n setCharityFromDraft,\n setCharityId,\n setCharityInfo,\n setCharityShippingInfo\n} = charitySlice.actions;\n\nexport default charitySlice.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\nimport { Analytics } from 'packages';\nimport dayjs from 'dayjs';\nimport { VIEW_ITEM_STATES } from './constants';\nimport TRANSACTION_TYPES from 'tradera-constants/transaction-types';\nimport { getItemApi, placeBidApi } from './api';\nimport logger from 'packages/logger';\nimport * as analytics from '../../../apps/tradera/components/vip/helpers/analytics';\nimport itemActions from '../../items/actions';\nimport { assertNoUndefinedProperties } from 'tradera-utils/assert';\nimport adsActions from 'tradera-state/ads/actions';\nimport pageActions from 'tradera-state/page/actions';\nimport { selectPreferredLanguageCode } from 'tradera-state/language/selectors';\nimport {\n selectBidInfo,\n selectItemId,\n selectItemDetails,\n selectBreadcrumbs,\n selectViewItem\n} from './selectors';\nimport gtm from 'static/script/app/ui/google-tagmanager-service';\nimport { getItemState } from './item-state-helper';\nimport { getHistory } from 'tradera-utils/history';\nimport { BID_VALIDATION_RESULTS } from 'tradera-apps/tradera/components/vip/api/vip-api-constants';\n\nconst initialPlaceBidResponse = {\n info: null,\n isSuccessful: null,\n validationResult: null,\n error: null\n};\n\nexport const translatedDescriptionStates = {\n DEFAULT: 'DEFAULT',\n LOADING: 'LOADING',\n SERVER_ERROR: 'SERVER_ERROR',\n TRANSLATION_ON_DEMAND_DISABLED: 'TRANSLATION_ON_DEMAND_DISABLED'\n};\n\nexport const initialState = {\n initialBidFormValue: null,\n bidInfo: null,\n breadCrumbs: [],\n isBidding: false,\n itemDetails: {},\n itemState: null,\n viewItemState: null,\n myMaxBidAmount: null,\n placeBidResponse: initialPlaceBidResponse,\n serverSecondsLeft: null,\n translatedDescription: null,\n translatedDescriptionState: translatedDescriptionStates.DEFAULT,\n reduxContainer: null\n};\n\nconst viewItemSlice = createSlice({\n name: 'viewItem',\n initialState,\n reducers: {\n resetPlaceBidResponse: state => {\n state.placeBidResponse = initialPlaceBidResponse;\n },\n resetInitialState: () => {\n return initialState;\n },\n setInitialBidFormValue: (state, { payload }) => {\n state.initialBidFormValue = payload;\n },\n setIsRestricted: (state, { payload }) => {\n state.itemDetails.isRestricted = payload;\n },\n setIsInternationalWacko: (state, { payload }) => {\n state.itemDetails.isWackoViewModel.isInternationalWacko = payload;\n },\n setItemDetails: (state, { payload: itemDetails }) => {\n state.itemDetails = mapItemDetails(itemDetails);\n },\n setPurchaseInfo: (state, { payload: purchaseInfo }) => {\n state.purchaseInfo = purchaseInfo || null;\n },\n setBreadCrumbs: (state, { payload: breadCrumbs }) => {\n state.breadCrumbs = breadCrumbs.map(({ href, text }, index) => ({\n id: index,\n url: href,\n name: text\n }));\n },\n setIsBidding: (state, { payload: isBidding }) => {\n state.isBidding = isBidding;\n },\n setPlaceBidResponse: (\n state,\n { payload: { isSuccessful, validationResult, bidError } }\n ) => {\n state.placeBidResponse.isSuccessful = isSuccessful;\n state.placeBidResponse.validationResult = validationResult;\n state.placeBidResponse.error = bidError;\n },\n setBidInfo: (state, { payload: { bidInfo, itemId, memberId } }) => {\n // Ensure bid is for current item.\n if (state.itemDetails?.itemId !== itemId) {\n logger(new Error(`setBidInfo was not for current item`), {\n contexts: {\n items: {\n currentItemId: state.itemDetails?.itemId,\n bidInfoItemId: itemId\n }\n }\n });\n return;\n }\n\n // Ensure incoming data is for latest bid. It is possible to get stale data in\n // the response from place bid due to eventual consistency. When that happens\n // we should have received the latest bid before via web socket. For items where\n // web socket updates are not enabled (too long time left of auction) the effect\n // is considered acceptable. Just make sure to not overwrite newer data here.\n const isFirstBidInfo = !state.bidInfo;\n const isBinPurchase =\n bidInfo.transactionType === TRANSACTION_TYPES.BIN;\n const isLatestBid =\n isFirstBidInfo ||\n isBinPurchase ||\n state.bidInfo.bidId <= bidInfo.bidId;\n if (!isLatestBid) return;\n\n const bidStatus = getLeadingBidStatus(\n bidInfo,\n memberId,\n state.bidInfo\n );\n\n const existingBidCount = state.bidInfo?.bidCount || 0;\n const incomingBidCount = bidInfo.bidCount || 0;\n const newBidInfo = {\n bidId: bidInfo.bidId || 0,\n leadingBidAmount: bidInfo.leadingBidAmount || 0,\n leadingBidderMemberId: bidInfo.leadingBidderMemberId || null,\n leadingBidMemberAlias: bidInfo.leadingBidMemberAlias || null,\n nextValidBidAmount: bidInfo.nextValidBidAmount,\n transactionType: state.bidInfo?.transactionType\n ? state.bidInfo.transactionType\n : bidInfo.transactionType || null,\n\n // Never update with a lower bidCount. Can happen if place-bid-response comes before WebSocket event.\n bidCount:\n incomingBidCount > existingBidCount\n ? incomingBidCount\n : existingBidCount,\n\n // Never reset if reservePriceReached was true. Can happen if place-bid-response comes before WebSocket event.\n reservePriceReached:\n state.bidInfo?.reservePriceReached ||\n bidInfo.reservePriceReached ||\n false\n };\n\n assertNoUndefinedProperties(newBidInfo);\n\n state.bidInfo = { ...newBidInfo, ...bidStatus };\n },\n setMyMaxBidAmount: (state, { payload }) => {\n state.myMaxBidAmount = payload;\n },\n setItemState: (state, { payload }) => {\n state.itemState = payload;\n },\n setViewItemState: (state, { payload: viewItemState }) => {\n state.viewItemState = viewItemState;\n },\n setServerSecondsLeft: (state, { payload }) => {\n state.serverSecondsLeft = payload;\n },\n setTranslatedDescription: (state, { payload }) => {\n state.translatedDescription = { ...payload };\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n setTranslationOnDemandDisabled: state => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.TRANSLATION_ON_DEMAND_DISABLED;\n },\n resetTranslatedDescription: {\n reducer: state => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n prepare: payload => {\n Analytics.trackEvent({\n category: 'View Item Page',\n action: 'Translation',\n label: 'Hide'\n });\n return { payload };\n }\n },\n beginLoadingTranslatedDescription: state => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.LOADING;\n },\n failedLoadingTranslatedDescription: state => {\n state.translatedDescriptionState =\n translatedDescriptionStates.SERVER_ERROR;\n },\n setSellerItems: (state, { payload }) => {\n state.sellerItems = payload;\n },\n setReduxContainer: (state, { payload }) => {\n state.reduxContainer = payload;\n }\n }\n});\n\nexport default viewItemSlice.reducer;\n\nexport const mapItemDetails = itemDetails => ({\n ...itemDetails,\n descriptionLanguageCodeIso2: itemDetails.descriptionLanguageCodeIso2.toLowerCase(),\n images: itemDetails.images.map(img => ({\n thumbnail: img.thumbnail,\n multiThumbnail: img.thumbnail,\n medium: img.medium || img.small,\n normal: img.normal,\n smallFit: img.smallFit,\n mediumFit: img.mediumFit,\n largeFit: img.largeFit,\n alt: img.alt || img.altText || null,\n video: img.video || null\n }))\n});\n\nexport const handleItemModel = (itemModel, memberId) => (\n dispatch,\n getState\n) => {\n const previousItemId = selectItemId(getState());\n dispatch(viewItemSlice.actions.setItemDetails(itemModel.itemDetails));\n dispatch(viewItemSlice.actions.setPurchaseInfo(itemModel.purchaseInfo));\n\n dispatch(\n itemActions.setItemWishList(\n itemModel.itemDetails.itemId,\n itemModel.itemDetails.inWishList\n )\n );\n dispatch(viewItemSlice.actions.setBreadCrumbs(itemModel.breadCrumbs));\n dispatch(\n viewItemSlice.actions.setBidInfo({\n bidInfo: itemModel.bidInfo,\n itemId: itemModel.itemDetails.itemId,\n memberId\n })\n );\n\n if (itemModel.bidInfo.maxBidAmount) {\n dispatch(\n viewItemSlice.actions.setMyMaxBidAmount(\n itemModel.bidInfo.maxBidAmount\n )\n );\n }\n\n const isSafeToShowWinnerStatus =\n itemModel.itemDetails.hasEnded && !itemModel.hasBidsWinnerToBeConfirmed;\n\n const viewItemState = isSafeToShowWinnerStatus\n ? VIEW_ITEM_STATES.ENDED\n : VIEW_ITEM_STATES.ACTIVE;\n\n dispatch(viewItemSlice.actions.setViewItemState(viewItemState));\n dispatch(\n updateItemState(\n selectItemDetails(getState()),\n selectBidInfo(getState()),\n viewItemState\n )\n );\n\n dispatch(viewItemSlice.actions.setReduxContainer(itemModel.reduxContainer));\n dispatch(\n viewItemSlice.actions.setServerSecondsLeft(itemModel.serverSecondsLeft)\n );\n\n const isNewPage = previousItemId != selectItemId(getState());\n if (isNewPage) {\n dispatch(handleNewPage);\n }\n};\n\nexport const handleNewPage = (dispatch, getState) => {\n const reduxContainer = selectViewItem(getState()).reduxContainer;\n\n dispatch(adsActions.setAds(reduxContainer.ads));\n dispatch(pageActions.setPageMeta(reduxContainer.pageMeta));\n\n const currentItemDetails = selectItemDetails(getState());\n const currentBidInfo = selectBidInfo(getState());\n const breadCrumbs = selectBreadcrumbs(getState());\n const swedishCategoryPath = breadCrumbs.map(b => b.name).join(' > ');\n\n const getAuctionState = () => {\n const hasWon =\n currentItemDetails.hasEnded && currentBidInfo.hasLeadingBid;\n const isLeading =\n !currentItemDetails.hasEnded && currentBidInfo.hasLeadingBid;\n if (hasWon) return 'won';\n if (isLeading) return 'leading';\n return currentItemDetails.hasEnded ? 'ended' : 'normal';\n };\n\n const contentGroup = `${currentItemDetails.itemType}-${getAuctionState()}`;\n gtm.trackGtmEvent('viewItem', {\n page: {\n itemState: contentGroup,\n 'content-group-2': swedishCategoryPath,\n 'content-group-3': contentGroup\n },\n itemType: currentItemDetails.itemType,\n itemId: currentItemDetails.itemId,\n itemFixedPrice: currentItemDetails.fixedPrice || 0,\n itemCategory: swedishCategoryPath,\n itemStatus: currentItemDetails.hasEnded ? 'inactive' : 'active',\n itemEndDate: dayjs(currentItemDetails.endDate).format('YYYYMMDD')\n });\n};\n\nconst updateItemState = (itemDetails, bidInfo, viewItemState) => dispatch => {\n const itemState = getItemState(\n viewItemState === VIEW_ITEM_STATES.ENDED,\n itemDetails.itemType,\n bidInfo.bidCount,\n bidInfo.reservePriceReached,\n itemDetails.openingBid,\n bidInfo.nextValidBidAmount,\n bidInfo.transactionType,\n bidInfo.leadingBidderMemberId\n );\n dispatch(viewItemSlice.actions.setItemState(itemState));\n};\n\n/**\n * It is possible that we need to update the URL\n * when an auction that expires is automatically\n * restarted and gets a new itemId. Without this,\n * we could end up in an endless recursion of\n * trying to fetch data for the itemId in the URL.\n * @param {*} currentItemId\n * @param {*} itemModel\n */\nexport const ensureCorrectUrlForItem = (expectedItemId, itemModel) => {\n const incomingItemId = itemModel.itemDetails.itemId;\n if (expectedItemId !== incomingItemId) {\n // Restarted item, update URL\n getHistory().replace({\n pathname: itemModel.reduxContainer.pageMeta.canonicalLink,\n search: window.location.search\n });\n }\n};\n\nexport const fetchItemAndBidInfo = (\n itemId,\n shouldResetInititalState,\n setLoading,\n setLoaded\n) => async (dispatch, getState) => {\n setLoading && setLoading();\n const { memberId = 0 } = getState().member;\n const preferredLanguageCode = selectPreferredLanguageCode(getState());\n if (shouldResetInititalState) {\n dispatch(viewItemSlice.actions.resetInitialState());\n }\n try {\n const itemModel = (await getItemApi(itemId, preferredLanguageCode))\n .data;\n dispatch(handleItemModel(itemModel, memberId));\n setLoaded && setLoaded();\n ensureCorrectUrlForItem(itemId, itemModel);\n } catch (error) {\n const status = error.response && error.response.status;\n if (status === 404) {\n // Handle server side.\n window.location.reload();\n } else {\n logger(error);\n }\n }\n};\n\nconst getLeadingBidStatus = (bidInfo, memberId, previousBidInfo = null) => {\n const hadLeadingBid = !!previousBidInfo?.hasLeadingBid;\n const hasLeadingBid =\n !!memberId && memberId === bidInfo.leadingBidderMemberId;\n const hadLostLeadingBid = !!previousBidInfo?.hasLostLeadingBid;\n const hasLostLeadingBid =\n (hadLostLeadingBid || hadLeadingBid) && !hasLeadingBid;\n return {\n // ...bidInfo,\n hasLostLeadingBid,\n hasLeadingBid\n };\n};\n\nexport const toggleWishList = (itemId, forceAdd = false) => (\n dispatch,\n getState\n) => {\n const shouldNotTrackWishlistEventBecauseNeedsToBeSameAsLegacyVip = true;\n const inWishListOldValue = getState().items.wishListItemIds.includes(\n itemId\n );\n const inWishListNewValue = !inWishListOldValue || forceAdd;\n\n const itemDetails = getState().views.viewItem.itemDetails;\n const wishListCountOldValue = itemDetails.wishListCount;\n let wishListCountNewValue = wishListCountOldValue;\n if (Number.isInteger(wishListCountNewValue)) {\n if (inWishListOldValue && !inWishListNewValue) {\n wishListCountNewValue--;\n } else if (!inWishListOldValue && inWishListNewValue) {\n wishListCountNewValue++;\n }\n }\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...itemDetails,\n inWishList: inWishListNewValue,\n wishListCount: wishListCountNewValue\n })\n );\n\n return dispatch(\n itemActions.wishlist(\n itemId,\n inWishListNewValue,\n shouldNotTrackWishlistEventBecauseNeedsToBeSameAsLegacyVip\n )\n ).then(inWishListNewValue => {\n if (inWishListNewValue !== undefined) {\n analytics.trackWishlist(itemId, inWishListNewValue);\n } else {\n //Restore previous value;\n const itemDetails = getState().views.viewItem.itemDetails;\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...itemDetails,\n inWishList: inWishListOldValue,\n wishListCount: wishListCountOldValue\n })\n );\n }\n return inWishListNewValue;\n });\n};\n\nexport const placeBid = (itemId, memberId, amount, onLoggedOut) => async (\n dispatch,\n getState\n) => {\n dispatch(viewItemSlice.actions.setIsBidding(true));\n const preferredLanguageCode = selectPreferredLanguageCode(getState());\n try {\n const result = await placeBidApi(\n itemId,\n amount,\n onLoggedOut,\n preferredLanguageCode\n );\n\n if (!result) {\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful: false,\n validationResult: {\n code: BID_VALIDATION_RESULTS.OFFLINE\n }\n })\n );\n dispatch(viewItemSlice.actions.setInitialBidFormValue(amount));\n dispatch(viewItemSlice.actions.setIsBidding(false));\n return;\n }\n\n const {\n analyticsData,\n bidInfo,\n isSuccessful,\n item: updatedItem,\n validationResult,\n myMaxBidAmount,\n serverSecondsLeft\n } = result;\n\n if (isSuccessful) {\n dispatch(\n viewItemSlice.actions.setBidInfo({ bidInfo, itemId, memberId })\n );\n dispatch(viewItemSlice.actions.setMyMaxBidAmount(myMaxBidAmount));\n dispatch(\n viewItemSlice.actions.setInitialBidFormValue(\n bidInfo.nextValidBidAmount\n )\n );\n } else {\n // suggest next valid bid to user\n dispatch(\n viewItemSlice.actions.setInitialBidFormValue(\n bidInfo.nextValidBidAmount\n )\n );\n }\n\n analytics.trackBidPlaced(\n itemId,\n validationResult.code,\n analyticsData.isMaxBid,\n analyticsData.potentialBidChange,\n analyticsData.bidId,\n analyticsData.transactionTotal,\n analyticsData.weightedBidValue\n );\n\n const currentItemDetails = getState().views.viewItem.itemDetails;\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...currentItemDetails,\n ...updatedItem\n })\n );\n\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful,\n validationResult,\n bidError: null\n })\n );\n\n dispatch(viewItemSlice.actions.setServerSecondsLeft(serverSecondsLeft));\n } catch (error) {\n logger(error);\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful: false,\n validationResult: null,\n error\n })\n );\n }\n dispatch(viewItemSlice.actions.setIsBidding(false));\n};\n\nexport const setNotValidToBidOrBuyNow = () => dispatch => {\n return dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful: false,\n validationResult: {\n code: BID_VALIDATION_RESULTS.BIDDING_OR_BUYING_OWN_ITEM\n }\n })\n );\n};\n\nexport const {\n beginLoadingTranslatedDescription,\n failedLoadingTranslatedDescription,\n resetPlaceBidResponse,\n resetTranslatedDescription,\n setBidInfo,\n setIsRestricted,\n setIsInternationalWacko,\n setViewItemState,\n setTranslatedDescription,\n setTranslationOnDemandDisabled,\n setSellerItems\n} = viewItemSlice.actions;\n","export const scrollToInitialScroll = () => {\n const initialScrollEls = document.querySelectorAll('[data-initial-scroll]');\n if (initialScrollEls.length > 0) {\n window.scrollTo(0, initialScrollEls[0].offsetTop || 0);\n }\n};\n","import qs from 'qs';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport initData from 'init-data';\n\nconst checkUserMessagingParticipation = sellerId => {\n return fetch(ENDPOINTS.TOUCHWEB_URL + 'messaging/participation/' + sellerId)\n .then(sellerResponse => sellerResponse.json())\n .then(data => 'participates' in data && data.participates);\n};\n\nconst setUserMessagingParticipation = async messagingSettings => {\n return fetch(\n ENDPOINTS.TOUCHWEB_URL + 'my/profile/messaging-participation',\n {\n method: 'POST',\n credentials: 'same-origin',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(messagingSettings)\n }\n )\n .then(userResponse => userResponse.json())\n .then(data => data);\n};\n\nconst getUserMessagingEmailSetting = async () => {\n return fetch(ENDPOINTS.TOUCHWEB_URL + 'api/messaging/emailnotify', {\n credentials: 'include'\n })\n .then(userResponse => userResponse.json())\n .then(data => data);\n};\n\nconst setUserMessagingEmailSetting = async setting => {\n return fetch(\n ENDPOINTS.TOUCHWEB_URL +\n 'api/messaging/emailnotify?emailNotify=' +\n setting,\n {\n method: 'POST',\n credentials: 'same-origin',\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n .then(userResponse => userResponse.json())\n .then(data => data);\n};\n\n/**\n * Returns base path for a thread\n *\n * @param {number} u1\n * @param {number} u2\n * @param {number} l\n * @param {object} [options]\n * @param {boolean} [options.singleThread] - Open in single thread mode\n * @param {boolean} [options.openForm] - Open message form right away\n * @param {string} [options.source] - Message source info for tracking\n * @returns {string}\n */\nconst getMessagingThreadLink = (u1, u2, l, options) => {\n const optionsWithDefaults = {\n singleThread: false,\n openForm: false,\n ...options\n };\n const { singleThread, ...queryParams } = optionsWithDefaults;\n return (\n (singleThread ? '/thread/' : '/threads/') +\n 'u' +\n Math.min(u1, u2) +\n '_u' +\n Math.max(u1, u2) +\n '_l' +\n l +\n qs.stringify(queryParams, { addQueryPrefix: true })\n );\n};\n\n/**\n * Returns the path to a thread on Tradera's messaging page\n *\n * @param {number} u1\n * @param {number} u2\n * @param {number} l\n * @param {object} [options]\n * @returns {string}\n */\nconst getMessagingPageLink = (u1, u2, l, options) => {\n return (\n ENDPOINTS.TOUCHWEB_URL +\n 'messaging' +\n (u1 && u2 && l ? getMessagingThreadLink(u1, u2, l, options) : '')\n );\n};\n\n/**\n * Get messaging url\n *\n * @returns {string}\n */\nconst getMessagingRemoteUrl = () => {\n return initData.messagingIframeUrl;\n};\n\nexport {\n checkUserMessagingParticipation,\n setUserMessagingParticipation,\n getUserMessagingEmailSetting,\n setUserMessagingEmailSetting,\n getMessagingPageLink,\n getMessagingThreadLink,\n getMessagingRemoteUrl\n};\n","/**\n * @param {string} redirectURL\n */\nexport const getReturnUrl = redirectURL =>\n `?returnUrl=${encodeURIComponent(\n redirectURL\n ? redirectURL\n : window.location.pathname + window.location.hash\n )}`;\n","export default {\n DEFAULT_ACTION: 'initData/default',\n INITIALIZE: 'initData/INITIALIZE'\n};\n","//jshint module : true\nimport payments from '../actions/payments-actions';\n\nconst initState = {\n bankIdVerification: {\n type: '',\n shouldInitBankID: false,\n bankIdInProgress: false,\n isAutoStartAllowed: false,\n autoStartToken: '',\n completeText: '',\n verificationText: '',\n bankIdErrorMessage: '',\n errorCount: 0,\n requireBankIdVerification: true\n },\n swishDetails: {\n newNumber: '',\n verifyCode: '',\n isValid: false,\n errorMessage: '',\n isCompany: false\n },\n bankAccountDetails: {\n newClearingNumber: '',\n newAccountNumber: '',\n bankAccountSaved: false,\n bankUnknown: false,\n errorMessage: '',\n hasFailedPayouts: false,\n isMemberSetForPayout: false\n },\n tink: {\n tinkOnboarding: false,\n iframeUrl: '',\n shouldInitTink: false,\n accounts: null,\n account: null,\n errorMessage: ''\n },\n payouts: [],\n pagination: {},\n paginationLinks: []\n};\n\nexport default (state = initState, action) => {\n switch (action.type) {\n // Init\n case payments.actionTypes.INIT_DATA_LOADED:\n var swishApp2AppMember =\n action.payload.initData.pageSpecificData.swishApp2AppMember;\n var braintreeMember =\n action.payload.initData.pageSpecificData.braintreeMember;\n var onboardToHyperwalletProblems =\n action.payload.initData.pageSpecificData\n .onboardToHyperwalletProblems;\n var isAutoStartAllowed =\n action.payload.initData.pageSpecificData.isAutoStartAllowed;\n var requireBankIdVerification =\n action.payload.initData.pageSpecificData\n .requireBankIdVerification;\n var isCompany = action.payload.initData.pageSpecificData.isCompany;\n var tinkLink = action.payload.initData.pageSpecificData.tinkLink;\n var tinkOnboarding =\n action.payload.initData.featureSwitches['tink-onboarding'];\n var hyperwalletPayeeVerification =\n action.payload.initData.pageSpecificData\n .hyperwalletPayeeVerification;\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n isAutoStartAllowed: isAutoStartAllowed,\n requireBankIdVerification: requireBankIdVerification\n },\n swishDetails: {\n ...state.swishDetails,\n number: swishApp2AppMember.phoneNumber,\n newNumber:\n swishApp2AppMember.phoneNumber ||\n swishApp2AppMember.suggestedPhoneNumber,\n enabled: swishApp2AppMember.enabled,\n state: swishApp2AppMember.state,\n isCompany: isCompany,\n checkMark:\n swishApp2AppMember.state == 'Step3' ? 'Completed' : ''\n },\n bankAccountDetails: {\n ...state.bankAccountDetails,\n maskedBankAccountNumber:\n braintreeMember.maskedBankAccountNumber,\n isBankAccountSupplied:\n braintreeMember.isBankAccountSupplied,\n hasFailedPayouts: braintreeMember.hasFailedPayouts,\n isMemberSetForPayout: braintreeMember.isMemberSetForPayout,\n onboardToHyperwalletProblems: onboardToHyperwalletProblems,\n checkMark:\n !braintreeMember.hasFailedPayouts &&\n braintreeMember.isBankAccountSupplied\n ? 'Completed'\n : ''\n },\n tink: {\n ...state.tink,\n tinkOnboarding: tinkOnboarding,\n iframeUrl: tinkLink\n },\n hyperwalletPayeeVerification\n };\n // Swish\n case payments.actionTypes.SAVE_PHONENUMBER:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n number: action.payload,\n enabled: false,\n verifyCode: '',\n state: 'Step2',\n checkMark: '',\n errorMessage: ''\n }\n };\n case payments.actionTypes.DELETE_PHONENUMBER:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n enabled: false,\n number: '',\n verifyCode: '',\n state: 'Step1',\n checkMark: '',\n errorMessage: ''\n }\n };\n case payments.actionTypes.UPDATE_PHONENUMBER:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n newNumber: action.payload.number,\n checkMark: '',\n errorMessage: ''\n }\n };\n case payments.actionTypes.UPDATE_VERIFYCODE:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n verifyCode: action.payload,\n checkMark: '',\n errorMessage: ''\n }\n };\n case payments.actionTypes.SWISH_ENABLED:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n enabled: true,\n state: 'Step3',\n checkMark: 'Completed',\n errorMessage: ''\n }\n };\n case payments.actionTypes.INVALID_PHONENUMBER:\n case payments.actionTypes.INVALID_VERIFYCODE:\n case payments.actionTypes.SWISH_ERROR:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n errorMessage: action.payload\n }\n };\n // BankAccount\n case payments.actionTypes.UPDATE_CLEARING_NUMBER:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n newClearingNumber: action.payload.newClearingNumber,\n checkMark: '',\n bankUnknown: false,\n errorMessage: ''\n }\n };\n case payments.actionTypes.UPDATE_ACCOUNT_NUMBER:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n newAccountNumber: action.payload.newAccountNumber,\n checkMark: '',\n bankUnknown: false,\n errorMessage: ''\n }\n };\n case payments.actionTypes.DELETE_BANK_ACCOUNT:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n maskedBankAccountNumber: '',\n isBankAccountSupplied: false,\n newClearingNumber: '',\n newAccountNumber: '',\n checkMark: '',\n errorMessage: ''\n }\n };\n case payments.actionTypes.INVALID_CLEARINGNUMBER:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n errorMessage: action.payload\n }\n };\n case payments.actionTypes.INVALID_BANKACCOUNTNUMBER:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n errorMessage: action.payload\n }\n };\n case payments.actionTypes.BANK_ERROR:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n errorMessage: action.payload\n }\n };\n case payments.actionTypes.BANK_ACCOUNT_SAVED:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankAccountSaved: true,\n isBankAccountSupplied: true,\n maskedBankAccountNumber: action.payload,\n checkMark: 'Completed',\n errorMessage: ''\n }\n };\n case payments.actionTypes.BANK_NOT_MATCHED:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankUnknown: true\n }\n };\n case payments.actionTypes.IGNORE_BANK_NOT_MATCHED:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankUnknown: false\n }\n };\n // Tink\n case payments.actionTypes.INIT_TINK:\n return {\n ...state,\n tink: {\n ...state.tink,\n shouldInitTink: true,\n errorMessage: ''\n }\n };\n case payments.actionTypes.CANCEL_TINK:\n return {\n ...state,\n tink: {\n ...state.tink,\n shouldInitTink: false,\n accounts: null\n }\n };\n case payments.actionTypes.SHOW_BANK_ACCOUNTS:\n return {\n ...state,\n tink: {\n ...state.tink,\n accounts: action.payload\n }\n };\n case payments.actionTypes.SELECT_BANK_ACCOUNT:\n return {\n ...state,\n tink: {\n ...state.tink,\n account: action.payload\n }\n };\n case payments.actionTypes.TINK_COMPLETED:\n return {\n ...state,\n tink: {\n ...state.tink,\n shouldInitTink: false,\n accounts: null\n },\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankAccountSaved: true,\n isBankAccountSupplied: true,\n maskedBankAccountNumber: action.payload,\n checkMark: 'Completed'\n }\n };\n case payments.actionTypes.TINK_ERROR:\n return {\n ...state,\n tink: {\n ...state.tink,\n errorMessage: action.payload\n }\n };\n // BankId\n case payments.actionTypes.SKIP_BANKID_AUTH:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n type: action.payload.type,\n shouldInitBankID: false,\n bankIdCompleted: true,\n completeText: action.payload.completeText,\n verificationText: action.payload.verificationText,\n bankIdErrorMessage: '',\n requireBankIdVerification: false\n }\n };\n case payments.actionTypes.BEGIN_BANKID_AUTH:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n type: action.payload.type,\n shouldInitBankID: true,\n bankIdCompleted: false,\n completeText: action.payload.completeText,\n verificationText: action.payload.verificationText,\n bankIdErrorMessage: ''\n }\n };\n case payments.actionTypes.CANCEL_BANKID_AUTH:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n type: '',\n shouldInitBankID: false,\n bankIdInProgress: false,\n bankIdCompleted: false,\n bankIdErrorMessage: ''\n }\n };\n case payments.actionTypes.BANKID_IN_PROGRESS:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n bankIdInProgress: true,\n autoStartToken: action.payload.autoStartToken\n }\n };\n case payments.actionTypes.BANKID_ERROR:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n bankIdErrorMessage: action.payload,\n bankIdInProgress: false,\n bankIdCompleted: false\n }\n };\n case payments.actionTypes.BANKID_COMPLETED:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n shouldInitBankID: false,\n bankIdInProgress: false,\n bankIdCompleted: true\n }\n };\n // Payouts\n case payments.actionTypes.PAYOUTS_LOADED:\n return {\n ...state,\n payouts: action.payload.list,\n pagination: action.payload.pagination,\n paginationLinks: action.payload.paginationLinks\n };\n case payments.actionTypes.PAYOUTS_ERROR:\n return {\n ...state\n };\n // Default\n default:\n return state;\n }\n};\n\nexport const selectPaymentsState = state => state.views.myTradera.payments;\n","import { isServer } from 'tradera-utils/nextjs';\n\nconst config =\n !isServer && window.sellingGlobalConfig\n ? { ...window.sellingGlobalConfig }\n : {};\n\nconfig.maxTemplates = 100;\nconfig.domainNameCategoryId = 344477;\n\nexport default config;\n"],"sourceRoot":""}