{"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/shipping-checkout/initial-state.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/components/payment-method/payment-method-logo.module.scss","webpack:///./src/frontend/components/payment-method/payment-method-logo.jsx","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/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/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/syi/script/app_react/components/info-tooltip.module.scss","webpack:///./src/frontend/apps/syi/script/app_react/components/info-tooltip.jsx","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/views/shipping-checkout/utils.js","webpack:///./src/frontend/helpers/checkout-errors.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/apps/tradera/components/vip/api/vip-api-constants.js","webpack:///./src/frontend/apps/my-tradera/shipping-checkout/payment/braintree-drop-in.jsx","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/state/views/shipping-checkout/api.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/status/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/apps/tradera/components/checkout/payment/buyer-protection-info.jsx","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/hooks/use-fetch-data.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","MODAL_TYPE","BANK_ID","SWISH_HANDEL","MODAL_STATUS","START","COMPLETE","ERROR","PAYMENT_OPTIONS","CARD","PAYPAL","APPLEPAY","GOOGLEPAY","VISA_MASTERCARD","INVOICE","PAYMENT_OPTION_STATUS","AVAILABLE","UNAVAILABLE_DUE_TO_AMOUNT","shipments","isFetching","hasError","isDeleting","isUpdating","isCreating","ongoingPaymentAttempt","ongoingPaymentAttemptId","ongoingPaymentMethod","payment","paymentOptions","selectedPayment","paymentMethodData","modal","status","checkoutSummary","totalCost","termsAccepted","itemWithoutShipment","buyerContactDetails","nonIntegrated","provider","markedAsBooked","markedAsShipped","shipping","isShippingFetching","hasShippingError","shippingConfirmation","isLongPolling","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","breakpoint","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","shippingDiscount","url","trackingLink","bookedShipment","isPaymentExpired","paidShipmentCheckoutId","shipmentCheckoutId","shipmentId","hasUnpaidShipping","isRefundAllowed","isDiscountAllowed","isPaidWithIntegratedPaymentOption","isPaidWithIntegratedPayment","hasBuyerProtection","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","markAsShippingBooked","webApiClient","booked","then","PURCHASE_ORDERS_SHIPPING_BOOKED","isBooked","catch","myTraderaItemsActions","handleError","updateShippingBooked","URLS","UNMARK_BOOKED","ids","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","COMPLETED","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","finalizeResponse","BREAKPOINTS","XS","SM","MD","LG","XL","BREAKPOINT_SIZES","BPOINT","bp","index","entries","min","max","checkoutSlice","receiveCheckout","shippingInfo","combinedShippingInfo","shippingFeeRule","orderNumber","shippingPriceRange","selectedCollectionPoint","collectionPointId","created","shippingOptionsLoading","setShippingOptionsLoading","isLoading","receivePaymentOptions","receiveCollectionPoints","collectionPoints","setFetching","paymentAttemptId","cancelPayment","showDisableOverlay","closeModal","setHasError","setPaymentFetching","setPaymentHasError","setPaymentMethodData","setCheckoutSummaryFetching","setCheckoutSummaryHasError","setSelectedPayment","setOrderCalculation","orderCalculation","setBuyerProtection","buyerProtection","setSelectedShipping","setShowDisableOverlay","setOngoingPaymentAttempt","setCombinedShippingInfo","setBuyerMember","setBuyerMemberAddress","address","setCollectionPoint","setShippingInfoFetching","setCollectionPointSaving","savingCollectionPoint","setBraintreeDropinLoading","braintreeDropinLoading","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","PaymentMethodLogo","paymentMethod","displayText","visaLogo","className","style","padding","mastercardLogo","marginRight","alt","shippingCalculator","selectFilterValue","selectWeightUnit","selectWeightSliderValue","selectNormalizedWeight","selectWeightString","selectAvailableShippingProviders","shippingProducts","selectShippingProducts","includedProviders","some","x","shippingProvider","p","selectIsDifferentFromDefaultBox","selectSelectedCountries","selectAvailableCountryCodes","selectShowError","MultiCurrency","amountInSek","TagName","tagName","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","selectShippingConfirmation","shippingCheckout","selectShippingCheckout","selectShipping","selectItemWithoutShipment","selectShipment","shipment","selectShippingPayment","selectCheckoutSummary","shippingCheckoutSlice","openNonIntegratedModal","providerId","closeNonIntegratedModal","openPaymentModal","closePaymentModal","setTermsAccepted","builder","addCase","createShipmentCheckout","fulfilled","sellerPhoneNumber","sellerPhone","hasFetchError","totalShippingCost","memo","shippingPrice","pending","rejected","hasDeleteError","isChangingProvider","updateShipment","arg","meta","buyerAddress","cleanedBuyerAddress","streetName","receiver","street","mostPreciseErrorKey","isUpdatingShipment","translationKey","createShipment","productId","hasUnSupportedProduct","getItemWithoutShipment","errorCode","getShippingOptions","bringEnabled","postnordEnabled","dhlEnabled","schenkerEnabled","productsDecorated","productsPerWeightSpan","weightClass","filteredProductsWithDecoration","products","outage","uuid","utils","getUuid","markAsBooked","markAsShipped","getPaymentOptions","getShippingConfirmation","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","addMediaQueries","matchMedia","matches","handleMediaChange","addListener","removeMediaQueries","removeListener","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","Sad","Caption","color","styles","right","Figure","imageUrl","captionText","captionColor","figure","_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","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","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","Product","ValidationErrorType","Missing","WrongFormat","NotReal","ZipcodeRouting","NotSupported","DefaultSenderAddressError","Name","Agent","createAsyncThunk","thunkAPI","api","rejectWithValue","_","fromCountry","toCountry","shipmentDetails","setShipmentDetails","responseStatus","mostPreciseTranslationKeys","updateShippingProvider","shippingPayload","buildShippingPayload","updateShippingAddress","city","zipCode","fullName","town","mostPreciseTranslationKey","setShippingAsBooked","setShippingAsShipped","getMemberSoldItemShippingInfo","shippingCheckoutId","pollBookingUrl","pollShippingConfirmationStatus","reject","iterations","poller","setInterval","clearInterval","getShippingConfirmationStatus","isBookingComplete","shippingProductId","PAYMENT_STATUS","initBraintreePayment","paymentOption","onComplete","currentState","emailAddress","selectMemberEmail","requestOptions","threeDSecure","email","paymentInstance","requestPaymentMethod","CHECKOUT_ERRORS","NO_PAYMENT_METHOD","initPayment","formData","shipmentPaymentAttemptId","initializePayment","checkPaymentStatus","completePayment","googleAnalyticsData","analytics","poll","getPaymentStatus","paymentStatus","DECLINED","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","InfoTooltip","customIcon","containerClassName","tabIndex","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","uuidv4","BANK_ID_CANCEL","DECLINED_PAYNOVA","PERSONAL_ID_INVALID","EMAIL_ADDRESS_INVALID","NotSpecifiedShippingOption","CHECKOUT_ERROR_STRINGS","getCheckoutErrorMessage","reduxStore","configureStore","browserHistory","createStore","rootReducer","middlewares","ReduxThunk","routerMiddleware","compose","applyMiddleware","getComposer","observe","select","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","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","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","DropInSelected","onPaymentMethodRequestable","fetchParams","useMemo","useFetchData","getBraintreeToken","isRejected","isResolved","retryFetch","dropIn","clientToken","initDropIn","paymentProvider","updateConfiguration","callback","err","dropinInstance","isPaymentMethodRequestable","paymentMethodRequestable","getDropInOptions","authorization","container","locale","vaultManager","dataCollector","kount","card","vault","allowVaultCardOverride","vaultCard","dropin","applePay","googlePay","paypal","flow","paymentRequest","requiredBillingContactFields","googlePayVersion","merchantId","transactionInfo","totalPriceStatus","totalPrice","allowedPaymentMethods","parameters","billingAddressRequired","billingAddressParameters","BraintreeDropIn","isNativeAppWithApplyPaySupport","searchParams","getName","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","SETTINGS","SingleFeedbackDialog","isSeller","ui","SWISH_APP_2_APP","PAYNOVA","PAYNOVA_DIRECT_INVOICE","PAYNOVA_INSTALLMENTS","getAvailableQueryParams","filtersState","checkModifiersExist","getDefaultFilters","datatype","field","processState","properties","scope","searchType","userIs","locationQuery","check","checkItem","shippingDetails","getExternalAuthData","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","setUnsoldItemHiddenState","removeFromList","setFeedback","setShippingBookedState","markAsPaidBySellerReducer","stateItems","updateChangedItems","findUpdatedKeysByPurchaseOrderId","updatedItems","updatedItem","unmarkAsPaidBySellerReducer","markAsShippedReducer","findUpdatedKeysByTransactionId","unmarkAsShippedReducer","markTransactionAsHiddenBySellerReducer","markTransactionAsShownBySellerReducer","markItemAsHiddenReducer","findUpdatedKeysByItemId","markItemAsShownReducer","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","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","setIsActionsPerFullPageLoadDone","isActionsPerFullPageLoadDone","setIsHumanyScriptLoaded","isHumanyScriptLoaded","discover","internationalShipping","personalisation","shippingRegion","connectRouter","getBodyStringFromIDs","bodyString","pos","formHeaders","restartItemsSummary","showPurchases","showActive","hideActive","restartItems","markPaid","withIsMobile","WithIsMobile","BuyerProtectionInfo","dangerouslySetInnerHTML","__html","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","fetchReducer","apiFunction","apiParameter","apiName","handleFetch","isIdle","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","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.42ff490311.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","export const MODAL_TYPE = {\n BANK_ID: 'BANK_ID',\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 PAYPAL: 'PayPal',\n APPLEPAY: 'ApplePay',\n GOOGLEPAY: 'GooglePay',\n SWISH_HANDEL: 'SwishHandel',\n VISA_MASTERCARD: 'VisaMasterCard',\n INVOICE: 'Invoice'\n};\n\nexport const PAYMENT_OPTION_STATUS = {\n AVAILABLE: 'Available',\n UNAVAILABLE_DUE_TO_AMOUNT: 'UnavailableDueToAmount'\n};\n\nexport default () => ({\n shipments: [],\n isFetching: false,\n hasError: false,\n error: null,\n isDeleting: false,\n isUpdating: false,\n isCreating: false,\n ongoingPaymentAttempt: {\n ongoingPaymentAttemptId: null,\n ongoingPaymentMethod: null\n },\n payment: {\n hasError: false,\n isFetching: false,\n paymentOptions: null,\n selectedPayment: null,\n paymentMethodData: null,\n modal: {\n open: '',\n status: MODAL_STATUS.START\n }\n },\n checkoutSummary: {\n hasError: false,\n isFetching: false,\n totalCost: null,\n termsAccepted: true\n },\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 shippingConfirmation: {\n data: null,\n isFetching: false,\n isLongPolling: false,\n hasError: false\n }\n});\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.breakpoint = 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';\nimport { webApiClient } from 'tradera-utils/http';\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 markAsShippingBooked = (\n purchaseOrderId,\n listViewType\n) => async 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 type: actionTypes.PURCHASE_ORDERS_SHIPPING_BOOKED,\n payload: {\n purchaseOrderId,\n listViewType,\n isBooked: true\n }\n });\n dispatch(searching(false));\n return;\n })\n .catch(error => myTraderaItemsActions.handleError(dispatch, error));\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 isBooked: false\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 markAsShippingBooked,\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.checkoutSummary.hasError = false;\n },\n setOrderCalculation: (state, { payload }) => {\n state.payment.orderCalculation = payload;\n },\n setBuyerProtection: (state, { payload }) => {\n state.payment.buyerProtection = payload;\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 setBraintreeDropinLoading: (state, { payload }) => {\n state.payment.braintreeDropinLoading = 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 setOrderCalculation,\n setSelectedShipping,\n setShowDisableOverlay,\n setOngoingPaymentAttempt,\n setCombinedShippingInfo,\n setBuyerMember,\n setBuyerMemberAddress,\n setCollectionPoint,\n setShippingInfoFetching,\n setCollectionPointSaving,\n setBuyerProtection,\n setBraintreeDropinLoading\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","// extracted by mini-css-extract-plugin\nexport default {\"logo-with-border\":\"logo-with-border--1WqhL\",\"logoWithBorder\":\"logo-with-border--1WqhL\",\"narrow\":\"narrow--2MmQI\",\"logo-without-border\":\"logo-without-border--8i8PY\",\"logoWithoutBorder\":\"logo-without-border--8i8PY\"};","import React from 'react';\nimport MaestroLogo from '@tradera/blueprint/theme/logos/maestro_vertical.svg?jsx';\nimport MasterCardLogo from '@tradera/blueprint/theme/logos/mastercard_vertical.svg?jsx';\nimport PaynovaLogo from '@tradera/blueprint/theme/logos/paynova.svg?jsx';\nimport PaypalLogo from '@tradera/blueprint/theme/logos/paypal.svg?jsx';\nimport SwishLogo from '@tradera/blueprint/theme/logos/swish_horizontal.svg?jsx';\nimport VisaLogo from '@tradera/blueprint/theme/logos/visa.svg?jsx';\nimport GooglePayLogo from '@tradera/blueprint/theme/logos/google-pay.svg?jsx';\nimport ApplePayLogo from '@tradera/blueprint/theme/logos/apple-pay.svg?jsx';\n\nimport style from './payment-method-logo.module.scss';\n\nconst PaymentMethodLogo = ({ paymentMethod, displayText }) => {\n const visaLogo = (\n \n \n \n );\n const mastercardLogo = (\n \n \n \n \n );\n switch (paymentMethod) {\n case 'Visa':\n return visaLogo;\n case 'Mastercard':\n return mastercardLogo;\n case 'VisaMasterCard':\n return (\n
\n
{visaLogo}
\n {mastercardLogo}\n
\n );\n case 'Paynova':\n return (\n \n \n \n );\n case 'PayPal':\n return (\n \n \n \n );\n case 'SwishApp2App':\n case 'SwishHandel':\n return (\n \n \n \n );\n case 'ApplePay':\n return (\n \n );\n case 'GooglePay':\n return (\n \n );\n default:\n return null;\n }\n};\n\nexport default PaymentMethodLogo;\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 selectShippingConfirmation = state =>\n state.views.shippingCheckout.shippingConfirmation;\n\nexport 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\nexport const selectShippingPayment = state =>\n state.views.shippingCheckout.payment;\n\nexport const selectCheckoutSummary = state =>\n state.views.shippingCheckout.checkoutSummary;\n","import { createSlice } from '@reduxjs/toolkit';\nimport getInitialState, { MODAL_STATUS } from './initial-state';\nimport utils from './utils';\nimport {\n deleteShipment,\n createShipmentCheckout,\n getShippingOptions,\n updateShipment,\n markAsBooked,\n markAsShipped,\n getItemWithoutShipment,\n getPaymentOptions,\n createShipment,\n getShippingConfirmation\n} from './actions';\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 setSelectedPayment: (state, { payload }) => {\n state.payment.selectedPayment = payload;\n state.payment.paymentMethodData = null;\n state.checkoutSummary.hasError = 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 state.isUpdating = payload;\n },\n setCheckoutSummaryHasError: (state, { payload }) => {\n state.checkoutSummary.hasError = payload;\n state.checkoutSummary.isFetching = false;\n state.isUpdating = false;\n state.payment.modal.status = MODAL_STATUS.ERROR;\n },\n openPaymentModal: (state, { payload }) => {\n const { open, status, paymentAttemptId } = payload;\n state.payment.modal = {\n open,\n status,\n paymentAttemptId\n };\n },\n closePaymentModal: state => {\n state.payment.modal = {\n open: '',\n status: MODAL_STATUS.START\n };\n },\n setTermsAccepted: (state, { payload }) => {\n state.checkoutSummary.termsAccepted = payload;\n },\n setOngoingPaymentAttempt: (state, { payload }) => {\n state.ongoingPaymentAttempt = payload;\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 ...state.payment,\n shipmentCheckoutId: payload.shipmentCheckoutId\n };\n state.sellerPhoneNumber = payload.sellerPhone;\n state.ongoingPaymentAttempt = {\n ...state.ongoingPaymentAttempt,\n ...payload.ongoingPaymentAttempt\n };\n\n state.isFetching = false;\n state.hasFetchError = false;\n\n const totalShippingCost = payload.shipments.reduce(\n (memo, item) => memo + item.shippingPrice,\n 0\n );\n\n state.checkoutSummary.totalCost = totalShippingCost;\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 hasUnSupportedProduct: payload?.hasUnSupportedProduct\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: utils.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 // get payment options\n builder.addCase(getPaymentOptions.fulfilled, (state, { payload }) => {\n const { paymentOptions } = payload;\n state.payment = {\n ...state.payment,\n paymentOptions: paymentOptions\n };\n });\n builder.addCase(getPaymentOptions.pending, state => {\n state.payment = {\n ...state.payment,\n isFetching: true,\n hasError: null\n };\n });\n builder.addCase(getPaymentOptions.rejected, state => {\n state.payment = {\n ...state.payment,\n isFetching: false,\n hasError: true\n };\n });\n // Get shipping confirmation\n builder.addCase(\n getShippingConfirmation.fulfilled,\n (state, { payload }) => {\n state.shippingConfirmation.data = payload;\n state.shippingConfirmation.isFetching = false;\n state.shippingConfirmation.hasError = false;\n }\n );\n builder.addCase(getShippingConfirmation.pending, state => {\n state.shippingConfirmation.isFetching = true;\n state.shippingConfirmation.hasError = false;\n });\n builder.addCase(\n getShippingConfirmation.rejected,\n (state, { payload }) => {\n state.shippingConfirmation.isFetching = false;\n\n if (payload.isLongPolling) {\n state.shippingConfirmation.isLongPolling =\n payload.isLongPolling;\n } else {\n state.shippingConfirmation.hasError = true;\n }\n }\n );\n }\n});\n\nexport const {\n openNonIntegratedModal,\n closeNonIntegratedModal,\n setSelectedPayment,\n setPaymentMethodData,\n setCheckoutSummaryFetching,\n setCheckoutSummaryHasError,\n openPaymentModal,\n closePaymentModal,\n setTermsAccepted\n} = shippingCheckoutSlice.actions;\n\nexport default shippingCheckoutSlice.reducer;\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: 'Markera som bokad',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_markAsShippingBooked'),\n dispatch: dispatch => {\n dispatch(\n purchaseOrderActions.markAsShippingBooked(\n purchaseOrder.purchaseOrderId,\n listViewType\n )\n );\n },\n gaLabel: 'MarkAsShippingBooked',\n isVisible: () =>\n !purchaseOrder.shipping.shipping?.url &&\n !purchaseOrder.state.isShippingBooked &&\n !purchaseOrder.state.isShipped,\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: purchaseOrder.state.isPaymentExpired\n ? types.DISPATCH\n : types.LINK,\n label: 'Betala',\n getTranslatedLabel: t => t('myt_itemCard_actions_pay'),\n dispatch: dispatch => {\n dispatch(showModal('myt_orderinfo_paymentExpired'));\n },\n url: `/Shopping/Checkout/SelectPayment?purchaseOrderId=${purchaseOrder.purchaseOrderId}`,\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","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};\n\nexport const isUnSupportedProduct = error =>\n error.message ===\n `${Shipment}:${ValidatedProperty.Product}:${ValidationErrorType.NotSupported}`;\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 Product: 'Product'\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 utils from './utils';\nimport {\n selectShipment,\n selectItemWithoutShipment,\n selectShippingPayment,\n selectCheckoutSummary,\n selectShippingCheckout\n} from './selector';\nimport {\n resolveMostPreciseTranslationKey,\n getDefaultErrorKey,\n isUnSupportedProduct\n} from 'tradera-helpers/shipping-validation-errors';\nimport {\n setCheckoutSummaryFetching,\n openPaymentModal,\n closePaymentModal,\n setPaymentMethodData\n} from './reducer';\nimport { CHECKOUT_ERRORS } from 'tradera-helpers/checkout-errors';\nimport {\n MODAL_TYPE,\n MODAL_STATUS,\n PAYMENT_OPTIONS\n} from 'tradera-state/views/shipping-checkout/initial-state';\nimport * as analytics from 'tradera-apps/tradera/components/vip/helpers/analytics';\nimport { paymentInstance } from 'tradera-apps/my-tradera/shipping-checkout/payment/braintree-drop-in';\nimport { selectMemberEmail } from 'tradera-state/member/selectors';\nimport { setOngoingPaymentAttempt } from '../checkout/reducer';\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 // Can happen i combined shipping when seller sets custom shipping price and changes product\n // in that case we want to let the seller choose a product from shipping selector\n if (isUnSupportedProduct(errors[0])) {\n return thunkAPI.rejectWithValue({\n hasUnSupportedProduct: true\n });\n }\n\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 'shippingCheckout/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\nexport const getShippingConfirmation = createAsyncThunk(\n 'shippingCheckout/getShippingConfirmation',\n async (shippingCheckoutId, thunkAPI) => {\n try {\n const { data } = await api.getShippingConfirmation(\n shippingCheckoutId\n );\n\n if (!data.pollBookingUrl) return data;\n\n const isBookingComplete = await pollShippingConfirmationStatus(\n data.pollBookingUrl,\n shippingCheckoutId\n );\n\n if (!isBookingComplete) {\n logger(\n `Booking was not completed after 10 retries. shippingCheckoutId ${shippingCheckoutId}`\n );\n return thunkAPI.rejectWithValue({ isLongPolling: true });\n }\n\n const response = await api.getShippingConfirmation(\n shippingCheckoutId\n );\n return response.data;\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nconst pollShippingConfirmationStatus = async pollBookingUrl =>\n new Promise((resolve, reject) => {\n let iterations = 0;\n const poller = setInterval(async () => {\n if (iterations === 10) {\n clearInterval(poller);\n return resolve(false);\n }\n\n try {\n const { data } = await api.getShippingConfirmationStatus(\n pollBookingUrl\n );\n\n if (data.isBookingComplete) {\n clearInterval(poller);\n return resolve(true);\n }\n } catch (error) {\n clearInterval(poller);\n logger(error);\n\n return reject(error);\n }\n\n iterations++;\n }, 2000);\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\n// Payment\n\nexport const getPaymentOptions = createAsyncThunk(\n 'shippingCheckout/getPaymentOptions',\n async (shipmentCheckoutId, thunkAPI) => {\n try {\n const { data } = await api.getPaymentOptions(shipmentCheckoutId);\n return data;\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nconst sleep = delay => new Promise(resolve => setTimeout(resolve, delay));\n\nconst PAYMENT_STATUS = {\n AUTHORIZED: 'Authorized',\n AWAITING_SWISH: 'AwaitingExternalAuthentication',\n CANCELLED: 'Cancelled',\n CANCELLING: 'Cancelling',\n CANCELLING_FAILED: 'CancellingFailed',\n COMPLETING: 'Completing',\n COMPLETING_FAILED: 'CompletingFailed',\n DECLINED: 'Declined',\n FAILED: 'Failed',\n INIT: 'Initializing',\n INIT_COMPLETE: 'Initialized',\n INIT_FAILED: 'InitializationFailed',\n SETTLED: 'Settled'\n};\n\nexport const initBraintreePayment = (paymentOption, onComplete) => async (\n dispatch,\n getState\n) => {\n const currentState = getState();\n const { totalCost } = selectCheckoutSummary(currentState);\n const emailAddress = selectMemberEmail(currentState);\n\n let requestOptions = {};\n\n if (\n paymentOption === PAYMENT_OPTIONS.VISA_MASTERCARD ||\n paymentOption === PAYMENT_OPTIONS.GOOGLEPAY\n ) {\n requestOptions = {\n threeDSecure: {\n amount: totalCost,\n email: emailAddress\n }\n };\n }\n\n dispatch(setCheckoutSummaryFetching(true));\n\n try {\n if (paymentInstance) {\n const data = await paymentInstance.requestPaymentMethod(\n requestOptions\n );\n dispatch(setPaymentMethodData(data));\n } else {\n throw { message: CHECKOUT_ERRORS.NO_PAYMENT_METHOD };\n }\n return dispatch(initPayment(onComplete));\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\nexport const initPayment = onComplete => async (dispatch, getState) => {\n const currentState = getState();\n\n const { ongoingPaymentAttempt } = selectShippingCheckout(currentState);\n const payment = selectShippingPayment(currentState);\n const { shipmentCheckoutId, selectedPayment, paymentMethodData } = payment;\n\n dispatch(closePaymentModal());\n dispatch(setCheckoutSummaryFetching(true));\n\n try {\n const { ongoingPaymentAttemptId } = ongoingPaymentAttempt;\n const paymentAttemptId = ongoingPaymentAttemptId || utils.getUuid();\n\n if (!ongoingPaymentAttemptId) {\n const formData = {\n shipmentPaymentAttemptId: paymentAttemptId,\n shipmentCheckoutId,\n paymentMethod: selectedPayment,\n paymentMethodData\n };\n await api.initializePayment(formData);\n }\n\n //POST successful? then start polling:\n return dispatch(\n checkPaymentStatus(paymentAttemptId, selectedPayment, onComplete)\n );\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\nexport const cancelPayment = async paymentAttemptId => {\n const formData = {\n paymentAttemptId\n };\n\n try {\n await api.cancelPayment(formData);\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\nexport const completePayment = (\n paymentAttemptId,\n paymentMethod,\n onComplete\n) => async dispatch => {\n const formData = {\n paymentAttemptId,\n googleAnalyticsData: analytics.getGaTrackingData()\n };\n\n try {\n await api.completePayment(formData);\n\n //POST successful? then start polling again:\n return dispatch(\n checkPaymentStatus(paymentAttemptId, paymentMethod, onComplete)\n );\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\nexport const checkPaymentStatus = (\n paymentAttemptId,\n paymentMethod,\n onComplete\n) => async (dispatch, getState) => {\n const { modal } = selectShippingPayment(getState());\n\n let poll = true;\n\n try {\n const paymentStatus = await api.getPaymentStatus(paymentAttemptId);\n\n const { data } = paymentStatus;\n\n switch (data?.status) {\n case PAYMENT_STATUS.AUTHORIZED:\n case PAYMENT_STATUS.COMPLETING:\n case PAYMENT_STATUS.INIT:\n case PAYMENT_STATUS.CANCELLING:\n poll = true;\n break;\n case PAYMENT_STATUS.AWAITING_SWISH:\n poll = true;\n if (!modal.open) {\n dispatch(\n openPaymentModal({\n open: MODAL_TYPE.SWISH_HANDEL,\n status: MODAL_STATUS.START,\n paymentAttemptId\n })\n );\n }\n break;\n case PAYMENT_STATUS.INIT_COMPLETE:\n poll = false;\n return dispatch(\n completePayment(paymentAttemptId, paymentMethod, onComplete)\n );\n case PAYMENT_STATUS.SETTLED:\n poll = false;\n dispatch(setCheckoutSummaryFetching(false));\n onComplete();\n break;\n case PAYMENT_STATUS.DECLINED:\n poll = false;\n dispatch(closePaymentModal());\n dispatch(setOngoingPaymentAttempt(null));\n dispatch(setCheckoutSummaryFetching(false));\n return Promise.reject(new Error(CHECKOUT_ERRORS.DECLINED));\n case PAYMENT_STATUS.CANCELLED:\n poll = false;\n dispatch(closePaymentModal());\n dispatch(setOngoingPaymentAttempt(null));\n dispatch(setCheckoutSummaryFetching(false));\n break;\n case PAYMENT_STATUS.COMPLETING_FAILED:\n case PAYMENT_STATUS.FAILED:\n case PAYMENT_STATUS.INIT_FAILED:\n case PAYMENT_STATUS.CANCELLING_FAILED:\n poll = false;\n dispatch(closePaymentModal());\n dispatch(setOngoingPaymentAttempt(null));\n dispatch(setCheckoutSummaryFetching(false));\n return Promise.reject(\n new Error(`Payment error: ${data?.status}`)\n );\n default:\n poll = false;\n }\n } catch (error) {\n poll = false;\n return Promise.reject(error);\n }\n\n if (poll) {\n await sleep(1500);\n return dispatch(\n checkPaymentStatus(paymentAttemptId, paymentMethod, onComplete)\n );\n }\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","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"container--3_reZ\",\"target\":\"target--2S-Ew\",\"arrow\":\"arrow--1tkPu\",\"tooltip\":\"tooltip--1b7b2\"};","import React from 'react';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport styles from './info-tooltip.module.scss';\n\nexport const InfoTooltip = ({\n customIcon,\n className = '',\n containerClassName = '',\n children\n}) => (\n \n \n {customIcon || }\n\n \n \n {children}\n \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 { v4 as uuidv4 } from 'uuid';\n\nexport const getUuid = () => uuidv4();\n\n// Export object for Sinon stubbing\nexport default {\n getUuid\n};\n","const CHECKOUT_ERRORS = {\n BANK_ID_CANCEL: 'BANK_ID_CANCEL',\n DECLINED: 'DECLINED',\n DECLINED_PAYNOVA: 'DECLINED_PAYNOVA',\n GENERIC: 'GENERIC',\n PERSONAL_ID_INVALID: 'PERSONAL_ID_INVALID',\n EMAIL_ADDRESS_INVALID: 'EMAIL_ADDRESS_INVALID',\n NotSpecifiedShippingOption: 'NotSpecifiedShippingOption',\n NO_PAYMENT_METHOD: 'No payment method is available.'\n};\n\nconst CHECKOUT_ERROR_STRINGS = {\n [CHECKOUT_ERRORS.DECLINED_PAYNOVA]:\n 'checkout_summary_error_declined_paynova',\n [CHECKOUT_ERRORS.DECLINED]: 'checkout_summary_error_declined',\n [CHECKOUT_ERRORS.GENERIC]: 'checkout_summary_error',\n [CHECKOUT_ERRORS.PERSONAL_ID_INVALID]:\n 'checkout_summary_error_personal_id_invalid',\n [CHECKOUT_ERRORS.EMAIL_ADDRESS_INVALID]: 'checkout_paynova_email_invalid',\n [CHECKOUT_ERRORS.NotSpecifiedShippingOption]:\n 'checkout_summary_error_shipping_non_spec',\n [CHECKOUT_ERRORS.NO_PAYMENT_METHOD]:\n 'checkout_summary_error_no_payment_method'\n};\n\nconst getCheckoutErrorMessage = type => {\n return (\n CHECKOUT_ERROR_STRINGS[type] ||\n CHECKOUT_ERROR_STRINGS[CHECKOUT_ERRORS.GENERIC]\n );\n};\n\nexport { CHECKOUT_ERRORS, getCheckoutErrorMessage };\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","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 React, { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setSelectedPayment } from 'tradera-state/views/shipping-checkout/reducer';\nimport { LocalLoader } from 'tradera-components/loader';\nimport { useCurrentLanguage, useTranslator } from 'tradera-lang/translate';\nimport { PAYMENT_OPTIONS } from 'tradera-state/views/shipping-checkout/initial-state';\nimport {\n selectCheckoutSummary,\n selectShippingCheckout,\n selectShippingPayment\n} from 'tradera-state/views/shipping-checkout/selector';\nimport PaymentMethodLogo from 'tradera-components/payment-method/payment-method-logo';\nimport BuyerProtectionInfo from 'tradera-apps/tradera/components/checkout/payment/buyer-protection-info';\nimport api from 'tradera-state/views/shipping-checkout/api';\n\nimport './braintree-drop-in.scss';\n\nimport { useFetchData } from 'tradera-hooks/use-fetch-data';\n\n// Testing card number for dev environment: 4111111111111111\n\nexport var paymentInstance = null;\n\nconst BraintreeDropIn = ({\n paymentOptions,\n selected,\n onPaymentMethodRequestable\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslator();\n const isNativeAppWithApplyPaySupport = useSelector(\n state => state.environment.isNativeAppWithApplyPaySupport\n );\n\n const { isUpdating } = useSelector(selectShippingCheckout);\n\n const { paymentOption } = paymentOptions;\n\n const handlePaymentSelected = () => {\n const url = new URL(window.location.href);\n if (!selected) {\n if (isNativeAppWithApplyPaySupport) {\n url.searchParams.set('payment-option', paymentOption);\n return (window.location = url.toString());\n }\n dispatch(setSelectedPayment(paymentOption));\n }\n };\n\n const getName = () => {\n switch (paymentOption) {\n case PAYMENT_OPTIONS.VISA_MASTERCARD:\n return t('syi_payment_option_VisaMasterCard');\n case PAYMENT_OPTIONS.PAYPAL:\n return t('syi_payment_option_PayPal');\n case PAYMENT_OPTIONS.APPLEPAY:\n return t('syi_payment_option_ApplePay');\n case PAYMENT_OPTIONS.GOOGLEPAY:\n return t('syi_payment_option_GooglePay');\n default:\n return null;\n }\n };\n\n return (\n <>\n
\n \n \n
\n {getName()}\n \n
\n
\n {paymentOption === PAYMENT_OPTIONS.VISA_MASTERCARD &&\n t('payment_method_info_visaMasterCard')}\n {paymentOption === PAYMENT_OPTIONS.PAYPAL && (\n \n )}\n {paymentOption === PAYMENT_OPTIONS.APPLEPAY &&\n t('payment_method_info_applePay')}\n {paymentOption === PAYMENT_OPTIONS.GOOGLEPAY &&\n t('payment_method_info_googlePay')}\n
\n \n
\n {selected && (\n
\n \n
\n )}\n \n );\n};\n\nconst DropInSelected = ({ paymentOption, onPaymentMethodRequestable }) => {\n const { language } = useCurrentLanguage();\n const { t } = useTranslator();\n const { shipmentCheckoutId } = useSelector(selectShippingPayment);\n const { totalCost } = useSelector(selectCheckoutSummary);\n\n const fetchParams = useMemo(() => {\n return {\n shipmentCheckoutId: shipmentCheckoutId,\n paymentOption: paymentOption\n };\n }, [shipmentCheckoutId, paymentOption]);\n\n //Fetch Braintree Token\n const {\n data,\n isLoading,\n isRejected,\n isResolved,\n retryFetch\n } = useFetchData(\n api.getBraintreeToken,\n fetchParams,\n 'Shipping Checkout Braintree token'\n );\n\n useEffect(() => {\n const dropIn = async () => {\n if (isResolved && !paymentInstance) {\n const { clientToken } = data;\n await initDropIn(\n clientToken,\n language,\n paymentOption,\n totalCost,\n onPaymentMethodRequestable\n );\n }\n };\n dropIn();\n }, [\n data,\n isResolved,\n language,\n paymentOption,\n totalCost,\n onPaymentMethodRequestable\n ]);\n\n // Update amount in configuration for PayPal, Apple Pay, Google Pay\n useEffect(() => {\n let paymentProvider = null;\n if (paymentInstance) {\n switch (paymentOption) {\n case PAYMENT_OPTIONS.PAYPAL:\n paymentProvider = 'paypal';\n break;\n case PAYMENT_OPTIONS.APPLEPAY:\n paymentProvider = 'applepay';\n break;\n case PAYMENT_OPTIONS.GOOGLEPAY:\n paymentProvider = 'googlepay';\n break;\n default:\n paymentProvider = null;\n break;\n }\n }\n if (paymentProvider) {\n paymentInstance.updateConfiguration(\n paymentProvider,\n 'amount',\n totalCost\n );\n }\n }, [paymentOption, totalCost]);\n\n // Effect to reset paymentIntance when switching payment option\n useEffect(() => {\n return () => {\n paymentInstance = null; // Reset paymentInstance when unmounting\n };\n }, [paymentOption]);\n\n return (\n
\n {isRejected && (\n
\n
\n

{t('error_somethingWentWrong')}

\n
\n retryFetch()}>\n {t('error_reloadPage')}\n \n
\n )}\n {isLoading && (\n \n \n
\n )}\n \n
\n
\n \n );\n};\n\nconst initDropIn = async (\n clientToken,\n language,\n paymentOption,\n totalCost,\n onPaymentMethodRequestable\n) => {\n const callback = (err, dropinInstance) => {\n if (err) {\n return null;\n }\n\n if (dropinInstance.isPaymentMethodRequestable()) {\n onPaymentMethodRequestable(null, true);\n }\n\n dropinInstance.on('paymentMethodRequestable', function(\n paymentMethodRequestable\n ) {\n onPaymentMethodRequestable(paymentMethodRequestable, true);\n });\n\n dropinInstance.on('noPaymentMethodRequestable', function() {\n onPaymentMethodRequestable(null, false);\n });\n\n paymentInstance = dropinInstance;\n };\n\n const paymentOptions = getDropInOptions(paymentOption, totalCost);\n var options = {\n authorization: clientToken,\n container: '#dropin-container',\n locale: language,\n vaultManager: true,\n dataCollector: {\n kount: true // Required if Kount fraud data collection is enabled\n },\n card: {\n vault: {\n allowVaultCardOverride: true,\n vaultCard: false\n }\n },\n ...paymentOptions\n };\n\n const dropin = await import(\n /* webpackChunkName: \"braintree-web-drop-in\" */ 'braintree-web-drop-in'\n );\n await dropin.create(options, callback);\n};\n\nconst getDropInOptions = (paymentOption, totalCost) => {\n switch (paymentOption) {\n case PAYMENT_OPTIONS.VISA_MASTERCARD:\n return {\n threeDSecure: true\n };\n case PAYMENT_OPTIONS.PAYPAL:\n return {\n card: false,\n applePay: false,\n googlePay: false,\n paypal: {\n flow: 'checkout',\n amount: totalCost,\n currency: 'SEK'\n }\n };\n case PAYMENT_OPTIONS.APPLEPAY:\n return {\n card: false,\n paypal: false,\n googlePay: false,\n applePay: {\n displayName: 'Tradera',\n paymentRequest: {\n total: {\n label: 'Tradera',\n amount: totalCost.toString()\n },\n requiredBillingContactFields: ['postalAddress']\n }\n }\n };\n case PAYMENT_OPTIONS.GOOGLEPAY:\n return {\n card: false,\n paypal: false,\n applePay: false,\n threeDSecure: true,\n googlePay: {\n googlePayVersion: 2,\n merchantId: 'BCR2DN6TU7KPRDTQ',\n transactionInfo: {\n totalPriceStatus: 'FINAL',\n totalPrice: totalCost.toString(),\n currencyCode: 'SEK'\n },\n allowedPaymentMethods: [\n {\n type: 'CARD',\n parameters: {\n billingAddressRequired: true,\n billingAddressParameters: {\n format: 'FULL'\n }\n }\n }\n ]\n }\n };\n default:\n return {};\n }\n};\n\nexport default BraintreeDropIn;\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 buyerProtection: false,\n orderCalculation: 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 { touchWebClient, webApiClient } from 'tradera-utils/http';\n\nexport const createShipmentCheckout = async () =>\n webApiClient.post('/mytradera/shipmentcheckout/createshipmentcheckout');\n\nexport const deleteShipment = async shipmentId =>\n touchWebClient.post('/my/shipping/checkout/delete', { shipmentId });\n\nexport const getShippingOptions = (fromCountry, toCountry) =>\n webApiClient.get(\n `/selling/shipmentcheckout/shipping-products-for-country-by-weight-span?fromCountryCode=${fromCountry}&toCountryCode=${toCountry}`\n );\n\nexport const setShipmentDetails = async payload =>\n webApiClient.post('/mytradera/shipmentcheckout/shipment', {\n shippingDetails: payload\n });\n\nexport const setShippingAsBooked = async purchaseOrderId =>\n webApiClient.post('/member/selling/item-shipping-booked', {\n purchaseOrderId: purchaseOrderId,\n booked: true\n });\n\nexport const setShippingAsShipped = async purchaseOrderId =>\n webApiClient.post('/member/selling/item-shipped', {\n purchaseOrderId: purchaseOrderId,\n shipped: true\n });\n\nexport const getMemberSoldItemShippingInfo = purchaseOrderId =>\n webApiClient.get(\n `/member/selling/sold-item/shipping-info-v2/${purchaseOrderId}`\n );\n\nexport const getPaymentOptions = async shipmentCheckoutId =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentpaymentoptions/${shipmentCheckoutId}`\n );\n\nexport const initializePayment = async formData =>\n webApiClient.post(\n '/mytradera/shipmentcheckout/initializeshipmentpaymentattempt',\n formData\n );\n\nexport const getPaymentStatus = async paymentAttemptId =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentpaymentattemptstatus/${paymentAttemptId}`\n );\n\nexport const completePayment = async formData =>\n webApiClient.post(\n '/mytradera/shipmentcheckout/completeshipmentpaymentattempt',\n formData\n );\n\nexport const cancelPayment = async formData =>\n webApiClient.post(\n '/mytradera/shipmentcheckout/cancelshipmentpaymentattempt',\n formData\n );\n\nexport const getExternalAuthData = async paymentAttemptId =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentpaymentattemptauthenticationdata/${paymentAttemptId}`\n );\n\nexport const getBraintreeToken = async ({\n shipmentCheckoutId,\n paymentOption\n}) =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentbraintreeclienttoken/${shipmentCheckoutId}`,\n {\n params: {\n paymentMethod: paymentOption\n },\n withCredentials: true\n }\n );\n\n// Export object for Sinon stubbing\nconst getShippingConfirmation = shippingCheckoutId =>\n touchWebClient.get(`/my/shipping/confirmation/${shippingCheckoutId}/data`);\n\nconst getShippingConfirmationStatus = url => touchWebClient.get(url);\n\nexport default {\n createShipmentCheckout,\n deleteShipment,\n getShippingOptions,\n setShipmentDetails,\n setShippingAsBooked,\n setShippingAsShipped,\n getMemberSoldItemShippingInfo,\n getPaymentOptions,\n initializePayment,\n getPaymentStatus,\n completePayment,\n cancelPayment,\n getExternalAuthData,\n getBraintreeToken,\n getShippingConfirmation,\n getShippingConfirmationStatus\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 = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_SHIPPING_BOOKED,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsUnmarkAsShippingBooked = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED,\n payload: {\n ids: transactionIds,\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 transactionIds\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(transactionIds, listViewType)\n );\n dispatch(searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingMarkAsShippingBooked = (\n purchaseOrderId,\n listViewType,\n transactionIds\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(transactionIds, listViewType)\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 [item.transaction.transactionId]\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 [item.transaction.transactionId]\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: item.transaction.isPaymentExpired\n ? types.DISPATCH\n : types.LINK,\n label: 'Betala',\n getTranslatedLabel: t => t('myt_itemCard_actions_pay'),\n dispatch: dispatch => {\n dispatch(showModal('myt_orderinfo_paymentExpired'));\n },\n url: `/Shopping/Checkout/SelectPayment?purchaseOrderId=${item.transaction.purchaseOrderId}`,\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\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 unmarkAsShippingBooked = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippingBookedState(\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 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: action.payload.isBooked\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 { 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","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 React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport ShieldIcon from '@tradera/blueprint/theme/icons2/shield.svg?jsx';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport { InfoTooltip } from 'tradera-apps/syi/script/app_react/components/info-tooltip';\n\nconst BuyerProtectionInfo = ({ className }) => {\n const { t } = useTranslator();\n\n return (\n \n \n {t('payment_method_info_hasBuyerProtection')}\n \n }>\n
\n \n
\n
\n \n
\n );\n};\n\nexport default BuyerProtectionInfo;\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 { useCallback, useEffect, useReducer } from 'react';\nimport { logger } from 'packages';\n\nfunction fetchReducer(state, action) {\n switch (action.type) {\n case 'error': {\n return {\n ...state,\n status: 'rejected',\n error: action.error\n };\n }\n case 'success': {\n return {\n ...state,\n status: 'resolved',\n data: action.data\n };\n }\n case 'started': {\n return {\n ...state,\n status: 'fetching'\n };\n }\n default: {\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n }\n}\n\n/**\n * Fetch data hook\n * @param {Function} apiFunction Function which makes the async API request\n * @param {String} apiParameter (Optional) Variable that could be passed to apiFunction\n * @param {String} apiName (Optional) The name of the API request for logging purposes\n * @return {Object} Object containing the data, status and retry function for the request.\n */\n\nexport function useFetchData(apiFunction, apiParameter, apiName) {\n const [state, dispatch] = useReducer(fetchReducer, {\n status: apiFunction ? 'idle' : 'resolved',\n data: {},\n error: null\n });\n\n const handleFetch = useCallback(async () => {\n dispatch({ type: 'started' });\n apiFunction(apiParameter)\n .then(({ data }) => {\n dispatch({ type: 'success', data });\n return;\n })\n .catch(error => {\n dispatch({ type: 'error', error });\n logger(\n new Error(\n `Fetch ${apiName || apiParameter} failed ${error}`\n )\n );\n });\n }, [apiFunction, apiParameter, apiName]);\n\n useEffect(() => {\n if (apiFunction) {\n handleFetch();\n }\n }, [handleFetch, apiFunction]);\n\n const retryFetch = () => {\n handleFetch();\n };\n\n return {\n isLoading: state.status === 'idle' || state.status === 'fetching',\n isIdle: state.status === 'idle',\n isFetching: state.status === 'fetching',\n isResolved: state.status === 'resolved',\n isRejected: state.status === 'rejected',\n retryFetch,\n ...state\n };\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":""}