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

{getShippingLabelWithPrice(shippingItem)}

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

\n {amountDetails.title}\n

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

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

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

\n ) : (\n

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

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

\n ) : (\n

\n \n

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

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

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

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

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

\n {ratingDescription}\n

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

{t('leaveFeedback_inrText')}

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

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

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

\n {t(translationKey)}\n

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

\n \n {title}\n \n

\n
\n

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

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

{title}

\n
{icon}
\n

{text}

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

\n {group.label}\n

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

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

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