{"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/apps/my-tradera/app/pages/routes.js","webpack:///./src/frontend/apps/tradera/helpers/optional-lang.js","webpack:///./src/frontend/state/language/selectors.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/actions/my-tradera.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/my-tradera.js","webpack:///./src/frontend/constants/cookies.js","webpack:///./src/frontend/state/ui/action-creators.js","webpack:///./src/frontend/utils/gdpr-settings.js","webpack:///./src/frontend/utils/languagecode.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/utils/location.js","webpack:///./src/frontend/state/shipping-region/actions.js","webpack:///./src/frontend/state/shipping-region/api.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/apps/my-tradera/app/constants/routes.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/constants/page-types.js","webpack:///./src/frontend/state/discover/action-types.js","webpack:///./src/frontend/state/member/index.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/state/language/api.js","webpack:///./src/frontend/state/language/actions.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/utils/date.js","webpack:///./src/frontend/apps/my-tradera/app/state/action-types/purchase-order.js","webpack:///./src/frontend/state/multi-currency/helpers.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/components/hoc/large-screens.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/hoc/medium-screens.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/hoc/medium-screens-up.jsx","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/state/language/reducer.js","webpack:///./src/frontend/state/language/initial-state.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/state/multi-currency/action-types.js","webpack:///./src/frontend/state/shipping-region/selectors.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/list-helper.js","webpack:///./src/frontend/components/toasts/simple-toast.jsx","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/EbaySweden.TouchWeb/static/script/utils/logger.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/selectors/filters.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/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/shipping-region/initial-state.js","webpack:///./src/frontend/state/shipping-region/reducer.js","webpack:///./src/frontend/state/member/action-types.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/state/environment/selectors.js","webpack:///./src/frontend/state/member/selectors.js","webpack:///./src/frontend/utils/history.js","webpack:///./src/frontend/constants/item-types.js","webpack:///./src/frontend/state/member/api.js","webpack:///./src/frontend/state/member/initial-state.js","webpack:///./src/frontend/state/member/actions.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/constants/list-types.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/utils/countrycode.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/utils/cookie.js","webpack:///./src/frontend/state/member/reducer.js","webpack:///./src/frontend/state/items/api.js","webpack:///./src/frontend/state/multi-currency/initial-state.js","webpack:///./src/frontend/state/multi-currency/actions.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/multi-currency/reducer.js","webpack:///./src/frontend/state/page/reducer.js","webpack:///./src/frontend/state/personalisation/initial-state.js","webpack:///./src/frontend/state/personalisation/reducer.js","webpack:///./src/frontend/state/views/syi/reducers/draft.js","webpack:///./src/frontend/state/views/syi/reducers/category.js","webpack:///./src/frontend/state/views/syi/reducers/payment.js","webpack:///./src/frontend/state/views/syi/reducers/syi.js","webpack:///./src/frontend/state/views/syi/reducers/errors.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/ensure-good-shipping-options.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/validate.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/validate-valid-shipping-price.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/get-selected-shipping-options.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/index.js","webpack:///./src/frontend/state/views/syi/reducers/template.js","webpack:///./src/frontend/state/views/syi/reducers/item-condition.js","webpack:///./src/frontend/state/views/syi/reducers/campaign-code.js","webpack:///./src/frontend/state/views/syi/reducers/fees.js","webpack:///./src/frontend/state/views/syi/reducers/item-duration.js","webpack:///./src/frontend/state/views/syi/reducers/extra-features.js","webpack:///./src/frontend/state/views/syi/reducers/images.js","webpack:///./src/frontend/state/views/syi/reducers/price.js","webpack:///./src/frontend/state/views/syi/reducers/edit.js","webpack:///./src/frontend/state/views/syi/reducers/long-description.js","webpack:///./src/frontend/state/views/syi/reducers/scroll.js","webpack:///./src/frontend/state/views/syi/reducers/charity-campaign.js","webpack:///./src/frontend/state/views/syi/reducers/attributes-helpers.js","webpack:///./src/frontend/state/views/syi/reducers/attributes.js","webpack:///./src/frontend/state/views/syi/reducers/member-consent.js","webpack:///./src/frontend/state/views/syi/reducers/preview.js","webpack:///./src/frontend/state/views/syi/reducer.js","webpack:///./src/frontend/state/views/syi/reducers/drafts.js","webpack:///./src/frontend/state/views/syi/reducers/language.js","webpack:///./src/frontend/state/views/syi/reducers/templates.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/purchase-order.js","webpack:///./src/frontend/state/views/my-tradera/reducer.js","webpack:///./src/frontend/state/views/tradera-shop/reducer.js","webpack:///./src/frontend/state/views/reducer.js","webpack:///./src/frontend/state/root-reducer.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/item-actions-helper.js","webpack:///./src/frontend/state/multi-currency/selectors.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/utils/breakpoints.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/cookies.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":["initData","gdpr","modalOpen","cookieUtil","readCookie","GDPR_CONSENT_ALERT_DISMISSED","settingsOpen","hasSearch","itemLayout","DEFAULT_COOKIES","key","default","messagingBadges","cache","read","CACHE_KEYS","MESSAGING_BADGES","threads","threadsUnread","siteLayout","systemMessages","SYSTEM_MESSAGES","nullifyUndefinedProperties","categoryDropdownMenu","open","CONSTANTS","MODAL","CLOSED","badges","messaging","system","itemSettings","item","messagingModal","title","src","participating","recipientId","modals","currentModal","notificationOptinModal","modalType","gaLabel","description","tagGroups","profileMenu","redirectUrl","quickView","items","itemIds","currentItem","loading","showHeaderSearch","pageName","includes","showSearchForm","BankAccountMissing","InvoiceOverdue","InvoiceUnpaid","PayoutFailed","PayoutReadyBankAccountMissing","SwishNumberMissing","videoModal","video","youtubeVideoModal","shareModal","isOpen","settings","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","dispatch","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","myTradera","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","loadPayouts","page","params","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","myTraderaUrls","overview","buyerOverview","sellerOverview","accountOverview","wishlist","activeItems","itemsLost","active","sold","unsold","purchases","savedSearches","favouriteSellers","sellerList","pickList","leaveFeedback","buyerFeedback","sellerFeedback","myFeedback","invoices","payments","payments2","traderaPay","payouts","selling","settingsAccount","settingsEmail","settingsSelling","settingsNotifications","settingsSecurity","settingsPayouts","buyShippingBags","payeeVerification","hyperwalletPayeeVerificationCompleted","notFound","getMyTraderaUrls","mapObject","url","myTraderaRouteUrls","OPTIONAL_LANG","myTraderaRoutes","SellerListPage","path","PayeeVerificationPage","HyperwalletPayeeVerificationCompletedPage","TraderaPayPage","BuyerActiveItemsPage","PurchasesPage","ItemsLostPage","ActivePage","SoldPage","UnsoldPage","PaymentsPage","PayoutsPage","SettingsPage","exact","SettingsAccountPage","SettingsEmailPage","SettingsNotificationsPage","SettingsSellingPage","SettingsSecurityPage","SettingsPayoutsPage","LeaveFeedbackPage","NotFoundPage","route","pageType","PAGE_TYPES","MY_TRADERA_PAGE","SUPPORTED_LANGUAGES","join","selectAvailableLanguages","state","language","available","selectPreferredLanguage","preferred","selectLocale","languageCodeIso2","country","memberCountryCodeIso2","selectIsForeignLanguageActivated","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","SEARCHING","CHANGE_URL_PARAMS","ERROR","HIDE_NOTIFICATIONS","OPEN_MODAL","SET_BREAKPOINT","MOBILE_MENU","MOBILE_ACTIONS","SET_MEMBER_MESSAGING_PARTICIPATION","OPEN_MESSAGING_MODAL","uiActionTypes","CLOSE_MESSAGING_MODAL","SET_TRANSLATED_ROUTE_INFORMATION","OPEN_CHANGE_SHIPPING","CLOSE_CHANGE_SHIPPING","OPEN_SET_DICOUNT","CLOSE_SET_DICOUNT","SET_COMBINED_SHIPPING_ENABLED","hideActualNotification","notification","setTranslatedRouteInformation","whenInitialized","then","t","routeInformationFactory","setCombinedShippingEnabled","isEnabled","myTraderaItemActions","handleError","hideNotification","notificationName","expires","setMonth","getMonth","setCookie","changeListViewType","myTraderaItemsState","selectMyTraderaItemsState","purchaseOrderActions","resetPurchaseOrder","resetMyTraderaItems","listType","itemsByID","rebuildList","scrollToInitialScroll","initialScrollEls","document","querySelectorAll","scrollTo","offsetTop","openModal","options","setBreakPoint","breakpoint","TEXT_STRINGS","ERRORS","GENERIC","mobileMenu","forceClose","mobileActions","setMemberMessagingParticipation","toggle","openMessagingModal","uiActions","closeMessagingModal","openChangeShipping","closeChangeShipping","openSetDiscount","closeSetDiscount","openShareModal","OPEN_SHARE_MODAL","closeShareModal","CLOSE_SHARE_MODAL","defaultState","isCombinedShippingEnabled","isSearching","environment","version","splitTests","memberAlias","memberFirstName","memberId","memberLastName","memberMessagingParticipation","changeShippingModal","purchaseOrderId","setDiscountModal","action","hideNotifications","uiReducers","def","reducers","actions","selectMyTraderaState","ITEM_LAYOUT","SITE_LAYOUT","MYTRADERA_DEFAULT_COOKIES","LIST_VIEW_TYPE","ITEMS_PER_PAGE","SHOW_FILTERS","LIST_VIEW_TYPE_BUYER_ACTIVE_ITEMS","PAGE_LIST_TYPES","BUYER_ACTIVE_ITEMS","LIST_VIEW_TYPE_BUYER_PURCHASES","BUYER_PURCHASES","LIST_VIEW_TYPE_BUYER_ITEMS_LOST","BUYER_ITEMS_LOST","LIST_VIEW_TYPE_SELLER_ACTIVE","SELLER_ACTIVE","LIST_VIEW_TYPE_SELLER_SOLD","SELLER_SOLD","LIST_VIEW_TYPE_SELLER_NOT_SOLD","SELLER_NOT_SOLD","GDPR_CONSENT_COOKIE","FORCE_GEO_DEV","PREFERRED_LANGUAGE","REGION_PICKER_DISMISSED","SHIPPING_COUNTRY","CART_ID","COOKIE_CATEGORIES","Essential","Performance","Functional","Marketing","CATEGORIZED_COOKIES","COOKIE_DEFAULT_CATEGORY","closeModal","CLOSE_MODAL","isCategoryEnabled","cookieCategory","decodedCookie","decodeURI","CookieUtil","RegExp","test","isPerformanceEnabled","this","isFunctionalEnabled","isMarketingEnabled","set","performance","functional","marketing","cookie","createCookie","dayjs","add","toDate","isSwedishOrUndefined","toLowerCase","getLanguageFromCountryCode","countryCodeIso2","se","dk","de","getCountryCodeFromLanguage","languageCode","en","da","areLanguageCodesIso2Equal","first","second","toUpperCase","defaultCookies","Object","keys","forEach","value","val","e","SET","selectCookiesState","cookies","initialPayloadItems","purchaseOrders","purchaseOrder","rows","row","sellerState","haveMultipleRows","haveCombinedShipping","combinedShippingInformation","isArchived","itemUrl","restart","endDate","formatted","formatDate","buying","seller","sellerMember","id","shipping","shippingDiscount","trackingLink","bookedShipment","isPaymentExpired","paidShipmentCheckoutId","shipmentCheckoutId","shipmentId","hasUnpaidShipping","isRefundAllowed","isDiscountAllowed","isPaidWithIntegratedPaymentOption","isPaidWithIntegratedPayment","hasBuyerProtection","payment","buyerState","paid","isPaid","isMarkedAsPaidByBuyer","shippingBooked","isShippingBooked","shipped","isShipped","hidden","isHiddenForBuyer","inr","isInrSubmitted","upiSubmitted","isUpiSubmitted","feedbackLeft","isHiddenForSeller","transactionDate","buyer","buyerMember","initialPayloadPurchaseOrders","transactionIds","transactionId","itemsToGiveFeedBackTo","filter","Boolean","PURCHASE_ORDER_RESET","feedbackLeftBySeller","submittables","PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER","feedbackLeftByBuyer","PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER","updateShippingBooked","myTraderaActions","URLS","UNMARK_BOOKED","ids","PURCHASE_ORDERS_SHIPPING_BOOKED","myTraderaItemsActions","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","toast","success","lokaliseKey","SELLER_UNMARK_PAID","purchaseOrdersUnmarkAsPaidBySeller","PURCHASE_ORDER_PAID_BY_SELLER","updatePurchaseOrderPaidByBuyer","BUYER_MARK_PAID","purchaseOrdersMarkAsPaidByBuyer","BUYER_UNMARK_PAID","purchaseOrdersUnmarkAsPaidByBuyer","PURCHASE_ORDER_PAID_BY_BUYER","runPurchaseOrders","waitForBackend","dontModifyHistory","endPoint","searchUrlNormalView","currentMemberId","member","search","modifiers","selectFiltersState","PageNumber","paging","PageSize","size","changeParamsForBackend","UPDATE_ITEMS","PURCHASE_ORDER_LIST","from","totalPages","totalNumberOfPages","totalItems","totalNumberOfPurchaseOrders","statistics","updateURL","updatePurchaseOrderHiddenForSeller","isHidden","sellerHideTransaction","sellerUnhideTransaction","PURCHASE_ORDER_HIDDEN","updatePurchaseOrderHiddenForBuyer","buyerHideTransaction","buyerUnhideTransaction","modalState","START","COMPLETED","IN_PROGRESS","defaultBox","height","width","weight","defaultCountry","shippingCalculatorSlice","createSlice","initialState","box","selectedToCountry","selectedFromCountry","availableFromCountryCodes","availableToCountryCodes","weightUnit","isLoadingShippingProducts","shippingProviders","providerName","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","lengthInMillimeters","heightInMillimeters","widthInMillimeters","weightInGrams","axiosConfigs","authenticated","finalizeResponse","catch","reload","force","reloadLocalized","href","updateShippingRegion","expireDate","setShippingCountry","removeShippingCountryCookieIfSwedish","geolocation","isoCode","hasCookie","eraseCookie","setDefaultShippingCountry","getAvailableShippingCountries","selectIsLoadingAvailableShippingCountries","selectHasLoadedAvailableShippingCountries","beginLoadingAvailableShippingOptions","axios","AVAILABLE_SHIPPING_COUNTRIES","shippingCountries","availableCountries","setAvailableShippingCountries","onLocalizationShippingRegionSelected","currencyCode","Analytics","trackEvent","category","label","setPreferredCurrency","setPreferredLanguage","BREAKPOINTS","XS","SM","MD","LG","XL","BREAKPOINT_SIZES","BPOINT","bp","index","entries","min","max","checkoutSlice","getInitialState","receiveCheckout","shippingInfo","combinedShippingInfo","ongoingPaymentAttempt","shippingFeeRule","isFetching","hasError","orderNumber","shippingPriceRange","created","receivePaymentOptions","paymentOptions","setFetching","status","paymentAttemptId","modal","cancelPayment","checkoutSummary","showDisableOverlay","MODAL_STATUS","setHasError","setPaymentFetching","setPaymentHasError","setPaymentMethodData","paymentMethodData","setCheckoutSummaryFetching","setCheckoutSummaryHasError","setSelectedPayment","selectedPayment","setSelectedShipping","setShowDisableOverlay","setOngoingPaymentAttempt","setCombinedShippingInfo","setBuyerMember","setBuyerMemberAddress","address","PAGE_NAMES","Overview","BuyerActiveItems","BuyerItemsLost","MyTraderaLeaveFeedback","SellerActive","SellerSold","SellerUnsold","BuyerPurchases","Settings","SettingsAccount","SettingsEmail","SettingsNotifications","SettingsSeller","SettingsSecurity","Payouts","CATEGORIES","trackAction","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","selectNormalizedWeight","selectWeightString","selectShippingProviders","provider","domesticProducts","selectShippingProducts","shippingProvider","selectInternationalShippingProviders","p","selectIsDifferentFromDefaultBox","selectSelectedCountries","selectAvailableCountryCodes","selectShowError","MultiCurrency","amountInSek","className","preferredCurrency","TagName","tagName","useCurrentLanguage","isVisible","formattedPrice","rate","currency","maximumFractionDigits","decimals","PropTypes","shape","isRequired","string","symbolPrefix","symbolSuffix","propTypes","defaultProps","featureSwitches","errors","ELASTIC_MYTRADERA","isBuyerOrderInformationEnabled","isDisputesEntranceEnabled","isLeaveFeedbackReactEnabled","isMyTraderaElasticEnabled","isMessagingEnabled","isMessagingBuyerButtonsEnabled","isMessagingSellerButtonsEnabled","downloadCsvPayouts","isInrPurchaseOrderEnabled","isUpiPurchaseOrderEnabled","isPennybridgeCharitiesEnabled","isValuationPageEnabled","isSwishApp2AppCallbackEnabled","isCheckoutConfirmationEnabled","isSwishApp2AppTraderaAppCallbackEnabled","isChangeAddressInCheckoutEnabled","labels","columns","CurrentPrice","TransactionDate","EndDate","ShippingCost","Bids","ItemId","OpeningBid","ReservePrice","BuyItNow","OwnReference","MaxBid","TimeLeft","columnCssClassCore","getCoreCssClass","column","getHeading","cssClass","columnKey","term","getTranslatedColumnKey","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","urls","class","isExternal","icon","showBasedOnInitData","isBuyerPage","searchUrl","buyerActiveItemsColumns","hasLabels","shouldShowCompact","shouldShowListToggle","bulkEditEnabled","noResultsText","buyerItemsLostColumns","sellerActiveColumns","stats","FastPris","Auktioner","Bud","SummaUtropspris","SummaBud","sellerSoldColumns","Butiksobjekt","sellerUnsoldColumns","buyerPurchasesColumns","hasCustomHeader","subTitle","isInternalOverview","paymentSettings","showPayments1Menu","showPayments2Menu","hasWallet","payments2Columns","hideMainNav","INITIALIZE","SET_IS_LOADING","SET_ITEM_DETAILS","SET_PRODUCT","RECENTLY_VIEWED_ITEMS","constructor","store","keyPrefix","cached","getItem","now","removeItem","write","ttl","setItem","remove","removeAll","clearByPrefix","expire","expireAll","caches","getItemsByPrefix","localStore","BidDetails","isEnding","itemState","leadingBidAmount","onShowBids","timeLeftText","isTimeLeftBelowWarningLimit","winningBidAmount","useTranslator","amountDetails","getAmountDetails","amountTitle","amountValue","trigger","formatNumberWithSeparators","timeTitle","timeValue","bidTitle","onClick","preventDefault","showBidCount","hasLeadingBid","hasLostLeadingBid","leadingBid","hasBids","BRAND_PAGE","BRAND_LIST_PAGE","CATEGORY_LIST","CATEGORY_RESULT_PAGE","CUSTOM_RESULT_PAGE","DEFAULT","ENDLESS_RECOMMENDATIONS_PAGE","ERROR_PAGE","FAVOURITE_SELLERS_PAGE","LIVE_SHOPPING","PROFILE_PAGE","REPORT_ITEM_PAGE","SEARCH_RESULT_PAGE","START_PAGE","SYI_PAGE","TRADERA_SHOP_PAGE","VALUATION","VIEW_ITEM_PAGE","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","fromLanguageCodeIso2","utilizeCancelToken","cancel","cancelToken","ITEM_DESCRIPTION","getItemApi","getCurrentLanguage","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","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","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","LOG_OUT","storageKey","rootUrl","service","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","slice","_mergeAndSortStorage","getFeedbackHistory","getStorageKey","submitData","cb","dataType","contentType","failures","saveAutomaticFeedback","comments","SET_PAGE_TYPE","SET_PAGE_META_FROM_SEARCH_RESULT","SET_PAGE_META","selectIsLoggedIn","api","setPreferred","locationUtils","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","CHANNEL_TAG_GROUPS","buyingListingOutbid","buyingListingWon","sellingListingFirstBid","sellingListingAllBids","sellingListingSold","sellingPaymentReceived","date","format","getTimeSpanParts","seconds","optionsWithDefaults","startUnit","endUnit","parts","remaining","started","TIME_SPAN_UNIT_LENGTHS","part","Math","floor","TIME_SPAN_UNITS","DAYS","HOURS","MINUTES","SECONDS","resolveCode","enabled","currencyCodeOrNull","currencies","resolveCurrency","INTERNATIONAL_SHIPPING_MODAL_ID","START_AUTH","SET_ERROR","CLOSE","LoaderComponent","visibleClassName","otherProps","loaderRef","useRef","useEffect","timeout","current","clearTimeout","ref","GlobalLoader","style","PortalLoader","LocalLoader","Loader","usePortal","getSearchResults","endpoint","baseURL","process","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","largeScreens","ComposedComponent","getCurrentBreakpoint","isBreakpointOrHigher","mediumScreens","isBreakpoint","mediumScreensUp","getInitialFilters","filters","newFilters","defaultFilters","defaultSearchParams","parse","replace","getId","showModal","translationKey","bulkAction","isSingleButton","getTranslatedMessage","getActionsForPurchaseOrder","secondaryActions","primaryAction","resolveActions","potentialActions","actionCreator","isPrimaryAction","checkAndAdd","actionsForItem","types","DISPATCH","getTranslatedLabel","LINK","unpaidShipping","EXTERNAL_LINK","hasShipmentReceipt","hasShipmentLabel","modalId","SINGLE_FEEDBACK_DIALOG_ID","featureToggles","soldActions","buttonTheme","cleanedAlias","boughtActions","selectPurchaseOrderState","selectRouterState","pathname","itemsOrderedByID","myTraderaItems","updateditems","modifyHistory","match","history","defaultPayload","query","filterBar","shownFilters","withPageInit","initialPayload","useDispatch","useSelector","sellerEmail","memberEmail","stateCookies","useState","pageListType","setPageListType","listViewTypeWithFallBack","featureToggleErrors","filtersActions","setFiltersForSelectedPage","getPurchaseOrderIdFromHash","hash","removeHashAndSetNormalList","removeHashFromUrl","changeShippingPurchaseOrderId","URL_HASHES","openChangeCombinedShippingModal","shouldOpenChangeCombinedShippingModal","markAsPaidPurchaseOrderId","markAsPaid","shouldMarkAsPaid","setDefaultListViewType","useCallback","getData","shouldWaitForBackend","runSearch","MakeResponsive","Responsive","React","matchMedia","matches","handleMediaChange","addListener","removeMediaQueries","removeListener","addMediaQueries","removeMediaQuery","connect","MakeSticky","sticky","onScroll","onScrollThrottled","throttle","wait","addEventListener","doc","removeEventListener","documentElement","position","getBoundingClientRect","setState","top","zIndex","positions","bottom","wrapperStyles","stickyStyles","getStickyClasses","selectViewItem","viewItem","selectTranslatedDescription","translatedDescription","selectItemDetails","itemDetails","selectBreadcrumbs","breadCrumbs","selectItemId","selectBidInfo","selectTranslatedDescriptionState","translatedDescriptionState","languageSlice","initialize","_state","availableLanguages","defaultLanguage","availableIsoCodes","lang","indexOf","l","formatMe","toLocaleString","symbol","symbolPosition","decimal","comma","formatShippingPrice","nonActiveButtonClasses","activeButtonClasses","_Happy","_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","isCommentInvalid","indexOfShippingTime","findIndex","ratingSetting","showItemNotReceived","indexOfPaymentTime","showUnpaidItem","charsCount","ratingName","rating","setRating","isMobile","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","x","keepUnique","onFetchError","responseJSON","errorCode","fetchNext","fetchAll","fetchByTransactionIds","isInDialog","showItems","itemsExist","downTo","upTo","upiUrl","$","openBiddingModal","saveInWishlist","openBinModal","ignoreQueryPrefix","otherQueryParams","forceRedirect","replaceState","addQueryPrefix","shouldOpenBiddingModal","bidding","substr","shouldSaveInWishlist","shouldOpenBinModal","getBaseRedirectUrl","queryParams","round","random","protocol","host","getBiddingRedirectUrl","getWishlistRedirectUrl","getBinRedirectUrl","SET_PREFERRED_CURRENCY","SET_CURRENCY_IF_NOT_CHOSEN","selectShowRegionSelection","selectIsOutsideSweden","selectAvailableShippingCountries","shippingRegion","availableShippingCountries","selectShippingCountry","shippingCountry","isLoadingAvailableShippingCountries","hasLoadedAvailableShippingCountries","selectShippingRegionCountryCodeIso2","selectIsSwedishVisitor","isSwedenCountryCodeOrUndefined","selectShowLocalizationRegionPicker","localizationRegionPickerEnabled","regionPickerDismissed","geoLocation","selectGeolocation","gpsMatchesLanguage","listActions","selectedFilterBar","isCheckboxActive","bulkCssClass","PAGE_BULK_ACTIONS","ACTIVE_CANCEL","heading","itemCount","confirmButtonText","cancelButtonText","dismissable","idType","hasRestartedChild","UNSOLD_RESTART","wide","headingCSS","messageAlignment","leadingBidRemoved","BUYER_SHOW_ACTIVE","BUYER_HIDE_ACTIVE","PURCHASES_SHOW","SimpleToast","getUrbanSdk","UA","UACache","sdk","isSupported","getTagGroupsFromUrbanAirship","channel","groupTags","tag","tags","isPushEnabled","GdprSettings","isLoggedIn","pushNotificationsSlice","initDone","pushSupported","optedIn","shownModals","setInitDone","setPushSupported","setOptedInValue","setTagGroupsValue","setShownModalTrue","STORAGE_KEYS","WEB_PUSH_SHOWN_MODALS","setAllShownModals","setEnabled","init","canRegister","optIn","register","namedUser","toString","optOut","saveTagsToUrbanAirshipAndUpdateState","tagGroupValue","tagGroupsToSet","pushNotifications","channelTags","addTagGroups","tagGroupsToAdd","removeTagGroups","tagGroupsToRemove","SET_TCF_LOADED","SET_ADS","logInfo","msg","_log","logError","logLevel","eventName","trace","stack","initializeState","adsActions","setTcfLoaded","fetchSystemMessages","pushNotificationActions","initShippingRegion","discoverActions","initEnvironment","initLanguage","initMember","initInitData","initMultiCurrency","itemsActions","pageActions","initStartPage","initTraderaShop","discoverResponse","receiveSearchResults","stripItmFromQueryParameters","formatQueryParams","toQueryParameters","viewItemActions","traderaShopProduct","setAds","reduxContainer","ads","getSystemMessageAlertCount","HyperwalletPayeeVerificationRequired","toggleHeaderSearch","openGdprModal","closeGdprModal","openGdprSettings","closeGdprSettings","openQuickView","OPEN","closeQuickView","loadingQuickView","openVideoModal","videoUrl","closeVideoModal","openYoutubeVideoModal","videoId","closeYoutubeVideoModal","openNotificationOptinModal","closeNotificationOptinModal","currentModalData","updateSystemMessages","updateMessagingNotifications","openProfileMenu","closeProfileMenu","openCategoryDropdownMenu","closeCategoryDropdownMenu","openSearchForm","closeSearchForm","logOut","openItemSettings","closeItemSettings","Breakpoint","desktop","tablet","mobile","is","mediaQuery","minWidth","maxWidth","useMediaQuery","useBreakpoint","innerWidth","setBreakpoint","handleResize","bool","oneOf","withBreakpoint","WrappedComponent","WithBreakpoint","currentBreakpoint","displayName","isTablet","isDesktop","REQUEST_CATEGORY_LIST","RECEIVE_CATEGORY_LIST","HANDLE_CATEGORY_LIST_ERROR","RECEIVE_TOP_LEVEL_CATEGORIES","HANDLE_TOP_LEVEL_CATEGORIES_ERROR","AUCTION","CART","BIN","NO_SELECTED_SHIPPING","internationalShippingSlice","allowedBuyerRegion","messagingLink","ownItem","providers","weights","setInternationalShipping","b","shippingWeight","fetchInternationalShipping","sellerId","WEB_API","buyerId","selectMemberId","source","selected","sellerFilters","setEnum","buyerFilters","resetPageIndex","setPageSize","changeSortValue","sort","sorting","order","sortOrder","changeSortOrder","changeTypeValue","setDateFrom","dateRange","field","setSingleFilter","setDateTo","setFiltersByState","showSelectFiltersDropDown","updatedState","filterSelectors","defaults","values","changePage","updatedPaging","resetDateRangeTo","resetDateRangeFrom","resetFilters","changeSearchQuery","searchQuery","properties","scope","changeReservationPrice","setFiltersForPage","locationChange","showHideFilterToolbar","SET_PAGE_SIZE","CHANGE_SORT_ORDER","CHANGE_TYPE_VALUE","CHANGE_SORTING_TO_BEST_MATCH","SET_DATE_FROM","SET_DATE_TO","SET_FILTERS_BY_STATE","CHANGE_PAGE","RESET_DATE_RANGE_TO","RESET_DATE_RANGE_FROM","RESET_FILTERS","CHANGE_SEARCH_QUERY","CHANGE_RESERVATION_PRICE","SET_FILTERS_FOR_PAGE","SHOW_HIDE_FILTERS","MENU","GRID","LIST","filterNameMappings","itemCondition","sellerType","county","countyBox","itemStatus","shoeTypes","subDepartments","shoeSizes","brandTags","sortBy","trackFilter","trackButton","trackPriceFilter","fromPrice","toPrice","lbl","trackNewSearch","categoryPath","metaTitle","reverseCategoryPath","c","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","notSold","soldLabels","notPaid","done","unsoldLabels","forciblyClosed","restarted","purchasesLabels","itemLostLabels","lost","removed","itemHasBids","getActiveLabel","activityType","getActiveActiveLabel","unSold","getUnsoldLabel","closed","getStates","getBuyerActiveItemsLabel","getSoldLabel","states","getPurchasesLabel","getBuyerItemsLostLabel","Basic","Compact","Normal","defaultDrafts","sellingGlobalData","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","fromCountry","selectedPaymentOptions","buyerRegion","selectedBuyerRegion","campaignCode","campaignCodeId","displayPromoted","extraFeatures","displayHighlighted","charityId","charityCampaign","charity","allowZeroDayAuctions","attributeValues","termAttributeValues","attributes","categoryAttributes","attribute","option","backingField","userGenerated","deleteDraft","profileSlice","isTranslationOnDemandDisabled","loadingModel","model","showTranslatedReviews","translatedReviews","translatedReviewsLoading","translatedReviewsLoadingError","setTranslatedReviews","translatedReviewsProviderName","setTranslationOnDemandIsDisabled","reducer","show","prepare","beginLoadingTranslatedReviews","failedLoadingTranslatedReviews","beginLoadingModel","setModel","some","gradeId","feedbackItems","feedbackItem","setFeedbackComment","feedbackId","newFeedbackItems","hasReply","isReplyAllowed","reply","isTcfLoaded","gpt","gptData","adSenseQuery","adSenseShoppingPublisherId","createInitData","preferredLanguage","shippingRegionSlice","dismissLocalizationRegionPicker","DEFAULT_ACTION","SET_IS_FETCHING_GEOLOCATION","SET_GEOLOCATION","FAILED_LOADING_GEOLOCATION","SET_MEMBER_HERO_IMAGE","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","ProviderWithGlobalStore","assertNoUndefinedProperties","obj","console","wishListItemIds","recent","cacheOrder","setItemWishList","exists","WISHLIST","ADD","addItemsToWishList","WISHLIST_ADD_RANGE","addRecentlyViewed","getStore","ADD_RECENTLY_VIEWED","updateItem","UPDATE_ITEM","shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip","existsInWishList","onSignedOutError","signIn","gtmCore","postWishlistItem","CANCELLED","NETWORK","TIMEOUT","VERSION_MISMATCH","SELECT_RADIO_BAR","GET_SEARCH","SET_FILTERS_FROM_ROUTER","updatePageSize","setFiltersFromRouter","updateFiltersForSelectedPage","selectTypeChange","selectSortChange","changeSortingToBestMatch","setSingleFilterValue","selectReservationPriceChange","pageSize","filterByState","historyLocationDidUpdate","isPrevAndCurrentPathnameEqual","routingState","router","checkStateOfQueryParams","showCookies","selectMemberCountryCodeIso2","showDanishFromCountry","selectFeatureSwitches","createBrowserHistory","AUCTION_BIN","PURE_BIN","SHOP_ITEM","getGeoPublicApiUrl","GEO_PUBLIC_API_URL","forceGeoDevCookie","cleanedMemberAlias","facebookId","memberDetailedSellerRatingAverage","memberCountry","memberHeroImage","memberBirthdate","defaultAction","setIsFetchingGeolocation","isFetchingGeolocation","setMemberHeroImage","getGeolocation","fetchGeolocation","setCurrencyIfNotChosen","ABORTED","AnimateOnValueChange","animate","setAnimate","firstUpdate","onAnimationEnd","config","startPageResponse","trendingBrands","trendingSearches","wishList","sellers","sellerSuggestions","startPageSlice","setStartPageConfigAction","setStartPageConfigStatusAction","setTrendingBrandsAction","setTrendingBrandsStatusAction","setTrendingSearchesAction","setTrendingSearchesStatusAction","setWishListAction","setWishListStatusAction","setFavouriteSellersAction","setFavouriteSellersStatusAction","PICK_LIST","initDataEL","getAttribute","checkStatus","ID","getInitData","tradVersion","reject","parseJSON","res","payoutSlice","receivePayouts","payoutDestination","selectPayoutState","payout","COOKIE_NOTIFICATION","HIDE_WISH_LIST_INFO_CARD","ITEMS_CLICK","SAVE_SEARCH_HINT","SEARCH_RECENT","WEB_PUSH_ACCEPTED","COMBINED_SHIPPING_ALERT_SOLD","COMBINED_SHIPPING_ALERT_BOUGHT","COMBINED_SHIPPING_ALERT_SYI","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","prefix","stringifiedLength","warn","mobileOnlyProps","desktopOnlyProps","allDeviceProps","DialogModal","getDefaultMediaProps","mediaQueryProps","dismissOnOverlayClick","TriotException","triot","create","defineProperties","bus","enumerable","writable","configurable","mixin","on","getLanguage","translate","update","safeMount","selector","opts","mountedComponents","mount","setupTeardown","keepRootTag","unmounted","vdom","unmount","unmountAll","off","isSwedenCountryNameOrUndefined","countryName","areCountryCodesIso2Equal","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","_getGdprSettings","segment","convertToExpiresStr","expiresStr","Number","Infinity","String","toUTCString","cookieKey","cookieValue","domain","secure","encodeURIComponent","decodeURIComponent","med","withCredentials","WISHLIST_ADD","WISHLIST_REMOVE","checkResponseLoggedOut","getItemDiscountQuota","ITEM_DISCOUNT_QUOTA","postItemSettings","onDisplay","discountRate","formData","SETTINGS","initialCurrencyCode","createPreferredCurrencyCookie","SingleFeedbackDialog","isSeller","ui","MODAL_TYPE","BANK_ID","SWISH_APP_2_APP","SWISH_HANDEL","COMPLETE","PAYMENT_OPTIONS","CARD","PAYNOVA","PAYPAL","APPLEPAY","GOOGLEPAY","VISA_MASTERCARD","PAYMENT_OPTION_STATUS","AVAILABLE","UNAVAILABLE_DUE_TO_AMOUNT","getAvailableQueryParams","filtersState","checkModifiersExist","getDefaultFilters","datatype","processState","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","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","selectItem","selectAllItems","contactHighestBidder","modalTitle","messageSubject","itemEnddate","itemImageUrl","main","medium","itemTitle","receiverMemberAlias","receiverMemberId","senderMemberEmail","businessWarning","reloadAfterClose","markPurchaseOrdersAsPaidBySeller","unmarkPurchaseOrdersAsPaidBySeller","existingState","currentTime","purchaseOrdersShownBySeller","purchaseOrdersHiddenBySeller","sellerUnhideUnsold","unsoldItemsShown","sellerHideUnsold","unsoldItemsHidden","sellingMarkAsShipped","sellingUnmarkAsShipped","sellingUnmarkAsShippingBooked","transactionsUnmarkAsShippingBooked","sellingDeleteShipment","transactionDeleteShipment","sellingLeaveFeedback","markPurchaseOrdersAsPaidByBuyer","unmarkPurchaseOrdersAsPaidByBuyer","transactionsShownByBuyer","transactionsHiddenByBuyer","buyingLeaveFeedback","setRestarted","setNewShippingPrice","newPrice","syi","getAllProducts","primaryShippingProviders","secondaryShippingProviders","getAllProviders","products","getPrimaryOrSecondaryProducts","onlyPrimary","getSelectedProduct","getVariant","productId","variants","getAllVariants","variant","getIds","isTakeAway","commonActions","sellSimilar","getMessagingThreadLink","traderaUserId","singleThread","openForm","unpaidShippingUrl","unpaidShippingId","isDiscountAfterPaymentSupported","dateLimit","subtract","isAfter","hasTransactionDateNewerThen60Days","isDiscountBeforePaymentSupported","hide","unshift","itemsFromSeller","getActionsForItem","isLeading","fixedItemUrl","fixItemUrlIfNeeded","activeBuyerActions","dispute","lostActions","hiddenByMember","unsoldActions","isShopItem","common","shareLinkHref","origin","translationKeys","shareHeader","shareMailSubject","shareMailBody","sharePinterestDescription","shareLinkText","DISABLED","tooltip","shareTitle","shareImageUrl","activeSellerActions","labelFunc","columnFunc","getCheapestShippingPrice","substring","actionLabelMap","createReturnObject","hasIncorrectResponse","findKeysByPurchaseOrderId","findKeysByTransactionId","findKeysByItemId","updateStateAndLabels","myTraderaItemsSelector","updateUnsoldLabelsAndActions","setPaidState","flag","setShippedState","setTransactionHiddenState","err","setUnsoldItemHiddenState","removeFromList","setFeedback","markAsPaidBySellerReducer","stateItems","updateChangedItems","findUpdatedKeysByPurchaseOrderId","updatedItems","updatedItem","unmarkAsPaidBySellerReducer","markAsShippedReducer","findUpdatedKeysByTransactionId","unmarkAsShippedReducer","markTransactionAsHiddenBySellerReducer","markTransactionAsShownBySellerReducer","markItemAsHiddenReducer","findUpdatedKeysByItemId","markItemAsShownReducer","unmarkAsShippingBooked","setRestartedReducer","feedbacksLeftBySeller","markAsPaidByBuyerReducer","unmarkAsPaidByBuyerReducer","markTransactionAsHiddenByBuyerReducer","markTransactionAsShownByBuyerReducer","feedbacksLeftByBuyer","poHiddenByBuyer","poShownByBuyer","isSubMenuOpen","bulkChecked","selectedCheckboxes","chosenBoxes","allItemsWithBulk","checkIfActive","isOpenDeleteItem","newItemsOrderedByID","element","purchaseOrderActionTypes","itemKeysForPurchaseOrderId","isAutoStartAllowed","autoStartToken","onCompleteCallback","onCloseCallback","retryCount","list","topLevelCategories","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","addItemOnDisplay","removeItemOnDisplay","setCategoryPath","setCurrentCategoryId","showOrHideAllowedBuyerRegionFilter","displayAllowedBuyerRegionFilter","reset","memberActionTypes","ITEM_CACHE_MAX_SIZE","newCache","newCacheOrder","updatedRecent","recentItem","wishlistAddRange","brands","searches","recentSearches","lastUpdated","isLoading","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","offerTakeaway","offerShipping","globalValidationError","validationErrors","global","validateProviders","hasAnyNonValidOption","hasAnyValidOption","weightIsInvalid","so","isAdvanced","useAdvancedWidget","isWeightValid","weightValidationError","primaryValidations","secondaryValidations","getFirstValidationError","primaryValidationError","secondaryValidationError","secondaryShippingOptionOpen","primary","secondary","getSelectedShippingOptions","selectedVariant","summaryDisplayName","takeAwayOption","showPrimaryShippingCalculator","hasPrimaryCalculatorSuggestions","showSecondaryShippingCalculator","hasSecondaryCalculatorSuggestions","isLoadingProvidersWithProducts","defaultCalculatorDimensions","primaryCalculatorDimensions","secondaryCalculatorDimensions","forceFreeShipping","getProviderByProductType","productType","createReducer","SET_SUGGESTED_SHIPPING_PRODUCTS","suggestedProduct","shippingProducts","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_SELECTED","SET_TAKEAWAY_SELECTED","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_CALCULATOR_DIMENSIONS","dimensions","SET_SHOW_SHIPPING_CALCULATOR","SET_SHIPPING_FROMCOUNTRY","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","locale","makeDaysOptions","maxDays","numberOfDays","days","makeHourOptions","hour","makeMinuteOptions","minute","resolveSummaryText","isChangeItem","localizations","getValidationErrors","customEndTimeError","customHour","customMinute","splitTime","startOf","earliestEndDate","isBefore","uploadError","isUploadingWithApp","imageCount","isUploading","resolveFirstEmpty","foundFirst","firstEmpty","resetUploadError","setImageCount","withUrl","isValidPrice","str","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","selectableImageToColorSuggestedAttributes","imageToColorSuggestedAttributes","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","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","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","summaryText","newStateWithoutCampaignRelatedProps","draftService","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","checkout","profile","cart","startPage","traderaShop","discover","internationalShipping","multiCurrency","personalisation","connectRouter","getBodyStringFromIDs","bodyString","pos","formHeaders","restartItemsSummary","showPurchases","showActive","hideActive","restartItems","markPaid","selectCurrencies","selectPreferredCurrency","selectShowCurrencySelection","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","getInitialCategoryId","updatePageMetaForSearchResults","pageMeta","setPageMeta","itemsToAdd","afterReceiveSearchResults","onLoaded","discoverTracking","fetchSearchResults","searchResults","finally","isBreakpointOrLower","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","allCategories","breadcrumbs","canonicalLink","metaDescription","metaRobots","meta","MODALS","FILTER_MODAL","CATEGORY_MODAL","queryParamCharityId","preselectCharity","anonymous","logoUrl","percentageToDonate","isFreeShippingPaidByProvider","freeShippingPaidByProviderName","charitySlice","setCharityId","setCharityInfo","setCharityAnonymous","setCharityFromDraft","resetCharity","setCharityShippingInfo","initialPlaceBidResponse","translatedDescriptionStates","SERVER_ERROR","TRANSLATION_ON_DEMAND_DISABLED","showLiveUpdates","viewItemSlice","resetPlaceBidResponse","setInitialBidFormValue","setIsRestricted","isRestricted","setIsInternationalWacko","isWackoViewModel","isInternationalWacko","setVipLiveUpdate","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","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","checkUserMessagingParticipation","TOUCHWEB_URL","sellerResponse","participates","setUserMessagingParticipation","messagingSettings","userResponse","setUserMessagingEmailSetting","setting","u1","u2","getMessagingPageLink","redirectURL","initState","shouldInitBankID","bankIdErrorMessage","swishDetails","isCompany","bankAccountSaved","bankUnknown","hasFailedPayouts","isMemberSetForPayout","tinkOnboarding","iframeUrl","shouldInitTink","paginationLinks","swishApp2AppMember","braintreeMember","onboardToHyperwalletProblems","tinkLink","hyperwalletPayeeVerification","suggestedPhoneNumber","checkMark","maskedBankAccountNumber","isBankAccountSupplied","bankIdCompleted","sellingGlobalConfig","imageSizeX","imageSizeY","maxTemplates","domainNameCategoryId","URL_BASE","RIOT_MOUNTPOINT"],"mappings":"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","file":"script/chunks/chunk.3.589af7a5d8.js","sourcesContent":["import CONSTANTS from 'tradera-constants/state';\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 { nullifyUndefinedProperties } from 'tradera-utils/object';\n\nexport default initData => {\n const gdpr = {\n modalOpen: cookieUtil.readCookie(GDPR_CONSENT_ALERT_DISMISSED) === null,\n settingsOpen: false\n };\n const { hasSearch } = initData;\n const itemLayout =\n cookieUtil.readCookie(DEFAULT_COOKIES['ITEM_LAYOUT'].key) ||\n DEFAULT_COOKIES['ITEM_LAYOUT'].default;\n const messagingBadges = cache.read(CACHE_KEYS.MESSAGING_BADGES) || {\n threads: 0,\n threadsUnread: 0\n };\n const siteLayout =\n cookieUtil.readCookie(DEFAULT_COOKIES['SITE_LAYOUT'].key) ||\n DEFAULT_COOKIES['SITE_LAYOUT'].default;\n const systemMessages = cache.read(CACHE_KEYS.SYSTEM_MESSAGES) || {};\n\n return nullifyUndefinedProperties({\n categoryDropdownMenu: { open: CONSTANTS.MODAL.CLOSED },\n badges: {\n messaging: messagingBadges,\n system: 0\n },\n gdpr,\n hasSearch,\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 initData.pageName && initData.pageName.includes('StartPage')\n ),\n showSearchForm: hasSearch,\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","import { logger } from 'packages';\n//jshint module : true\nimport myTradera from './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(myTradera.searching(false));\n dispatch(myTradera.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\n// Payouts\nconst loadPayouts = (toLocalizedUrl, page) => {\n return async dispatch => {\n var params = page ? '?page=' + page : '';\n try {\n const response = await fetch(\n toLocalizedUrl('/my/payments2/payouts' + params),\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({ type: actionTypes.PAYOUTS_LOADED, payload: result });\n else\n dispatch({\n type: actionTypes.PAYOUTS_ERROR,\n payload: 'Det gick inte att ladda utbetalningar.'\n });\n } catch (err) {\n logger(err);\n }\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 loadPayouts\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 mapObject from 'underscore/modules/mapObject';\nimport { OPTIONAL_LANG } from 'tradera-apps/tradera/helpers/optional-lang';\nimport PAGE_TYPES from 'tradera-constants/page-types';\n\nexport const myTraderaUrls = {\n overview: '/my/overview',\n buyerOverview: '/my/overview-buyer',\n sellerOverview: '/my/overview-seller',\n accountOverview: '/my/overview-my-account',\n wishlist: '/my/wish-list',\n activeItems: '/my/active-items',\n itemsLost: '/my/items-lost',\n active: '/my/active',\n sold: '/my/sold',\n unsold: '/my/unsold',\n purchases: '/my/purchases',\n savedSearches: '/my/saved-searches',\n favouriteSellers: '/my/favourite-sellers',\n sellerList: '/my/seller-list',\n pickList: '/my/picklist',\n leaveFeedback: '/my/leave-feedback/:role',\n buyerFeedback: '/my/leave-feedback/buyer',\n sellerFeedback: '/my/leave-feedback/seller',\n myFeedback: '/my/feedback',\n invoices: '/my/Invoices',\n payments: '/my/Payments',\n payments2: '/my/Payments2',\n traderaPay: '/my/payments2/traderapay',\n payouts: '/my/payouts',\n messaging: '/messaging',\n selling: '/selling',\n settings: '/my/settings',\n settingsAccount: '/my/settings/account',\n settingsEmail: '/my/settings/email',\n settingsSelling: '/my/settings/selling',\n settingsNotifications: '/my/settings/notifications',\n settingsSecurity: '/my/settings/security',\n settingsPayouts: '/my/settings/payouts',\n buyShippingBags: '/tradera-shop/shipping-bags',\n payeeVerification: '/my/PayeeVerification',\n hyperwalletPayeeVerificationCompleted: '/my/PayeeVerificationCompleted',\n notFound: '/my/settings/*'\n};\n\nexport const getMyTraderaUrls = toLocalizedUrl =>\n mapObject(myTraderaUrls, url => toLocalizedUrl(url));\n\nexport const myTraderaRouteUrls = mapObject(\n myTraderaUrls,\n url => `${OPTIONAL_LANG}${url}`\n);\n\nexport const myTraderaRoutes = mapObject(\n {\n SellerListPage: {\n path: myTraderaRouteUrls.sellerList\n },\n PayeeVerificationPage: {\n path: myTraderaRouteUrls.payeeVerification\n },\n HyperwalletPayeeVerificationCompletedPage: {\n path: myTraderaRouteUrls.hyperwalletPayeeVerificationCompleted\n },\n TraderaPayPage: {\n path: myTraderaRouteUrls.traderaPay\n },\n BuyerActiveItemsPage: {\n path: myTraderaRouteUrls.activeItems\n },\n PurchasesPage: {\n path: myTraderaRouteUrls.purchases\n },\n ItemsLostPage: {\n path: myTraderaRouteUrls.itemsLost\n },\n ActivePage: {\n path: myTraderaRouteUrls.active\n },\n SoldPage: {\n path: myTraderaRouteUrls.sold\n },\n UnsoldPage: {\n path: myTraderaRouteUrls.unsold\n },\n PaymentsPage: {\n path: myTraderaRouteUrls.payments2\n },\n PayoutsPage: {\n path: myTraderaRouteUrls.payouts\n },\n SettingsPage: {\n path: myTraderaRouteUrls.settings,\n exact: true\n },\n SettingsAccountPage: {\n path: myTraderaRouteUrls.settingsAccount\n },\n SettingsEmailPage: {\n path: myTraderaRouteUrls.settingsEmail\n },\n SettingsNotificationsPage: {\n path: myTraderaRouteUrls.settingsNotifications\n },\n SettingsSellingPage: {\n path: myTraderaRouteUrls.settingsSelling\n },\n SettingsSecurityPage: {\n path: myTraderaRouteUrls.settingsSecurity\n },\n SettingsPayoutsPage: {\n path: myTraderaRouteUrls.settingsPayouts\n },\n LeaveFeedbackPage: {\n path: myTraderaRouteUrls.leaveFeedback\n },\n NotFoundPage: {\n path: myTraderaRouteUrls.notFound\n }\n },\n route => ({\n pageType: PAGE_TYPES.MY_TRADERA_PAGE,\n ...route\n })\n);\n","import { SUPPORTED_LANGUAGES } from 'tradera-utils/url';\nexport const OPTIONAL_LANG = `/:lang(${SUPPORTED_LANGUAGES.join('|')})?`;\n","export const selectAvailableLanguages = state => state.language.available;\n\nexport const selectPreferredLanguage = state => state.language.preferred;\n\nexport const selectLocale = state => {\n const language = state.language.preferred.languageCodeIso2 || 'sv';\n const country = state.language.memberCountryCodeIso2 || 'SE';\n\n return `${language}-${country}`;\n};\n\nexport const selectIsForeignLanguageActivated = state =>\n selectPreferredLanguage(state).languageCodeIso2 !== 'sv';\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","export default window.sellingGlobalData;\n","import myTraderaItemActions from './my-tradera-items';\nimport { setCookie } from './cookies';\nimport TEXT_STRINGS from '../../constants/text-strings';\nimport uiActions from 'tradera-state/ui/actions';\nimport uiActionTypes from 'tradera-state/ui/action-types';\nimport { whenInitialized } from 'tradera-lang/boot-languages';\nimport { selectMyTraderaItemsState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera-items';\nimport { routeInformationFactory } from '../../constants/routes';\nimport fetch from '../../utils/fetch';\nimport purchaseOrderActions from './purchase-order';\n\nconst actionTypes = {\n SEARCHING: 'SEARCHING',\n CHANGE_URL_PARAMS: 'CHANGE_URL_PARAMS',\n ERROR: 'ERROR',\n HIDE_NOTIFICATIONS: 'HIDE_NOTIFICATION',\n OPEN_MODAL: 'OPEN_MODAL',\n SET_BREAKPOINT: 'SET_BREAKPOINT',\n MOBILE_MENU: 'INTERACT_W_MOBILE_MENU',\n MOBILE_ACTIONS: 'INTERACT_W_MOBILE_ACTIONS',\n SET_MEMBER_MESSAGING_PARTICIPATION: 'SET_MEMBER_MESSAGING_PARTICIPATION',\n OPEN_MESSAGING_MODAL: uiActionTypes.OPEN_MESSAGING_MODAL,\n CLOSE_MESSAGING_MODAL: uiActionTypes.CLOSE_MESSAGING_MODAL,\n SET_TRANSLATED_ROUTE_INFORMATION: 'SET_TRANSLATED_ROUTE_INFORMATION',\n OPEN_CHANGE_SHIPPING: 'MYT/OPEN_CHANGE_SHIPPING',\n CLOSE_CHANGE_SHIPPING: 'MYT/CLOSE_CHANGE_SHIPPING',\n OPEN_SET_DICOUNT: 'MYT/OPEN_SET_DICOUNT',\n CLOSE_SET_DICOUNT: 'MYT/CLOSE_SET_DICOUNT',\n SET_COMBINED_SHIPPING_ENABLED: 'MYT/SET_COMBINED_SHIPPING_ENABLED'\n};\n\nconst openModal = options => ({\n type: actionTypes.OPEN_MODAL,\n payload: options\n});\n\nconst searching = payload => ({\n type: actionTypes.SEARCHING,\n payload: payload\n});\n\nconst error = error => ({\n type: actionTypes.ERROR,\n payload: error === true ? TEXT_STRINGS.ERRORS.GENERIC : error\n});\n\nconst setCombinedShippingEnabled = () => async dispatch => {\n try {\n const data = await fetch(\n '/api/webapi/member/profile/getiscombinedshippingenabled',\n {\n method: 'GET'\n }\n );\n return dispatch({\n type: actionTypes.SET_COMBINED_SHIPPING_ENABLED,\n payload: data.isEnabled\n });\n } catch (error) {\n return myTraderaItemActions.handleError(dispatch, error);\n }\n};\n\nconst changeListViewType = (page, listViewType) => (dispatch, getState) => {\n const state = getState();\n const myTraderaItemsState = selectMyTraderaItemsState(state);\n\n dispatch(purchaseOrderActions.resetPurchaseOrder());\n dispatch(myTraderaItemActions.resetMyTraderaItems());\n\n dispatch(setCookie('LIST_VIEW_TYPE_' + page.listType, listViewType));\n\n if (myTraderaItemsState.itemsByID) {\n dispatch(myTraderaItemActions.rebuildList());\n }\n};\n\nconst 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\nconst hideActualNotification = notification => ({\n type: actionTypes.HIDE_NOTIFICATIONS,\n payload: notification\n});\n\nconst hideNotification = notification => dispatch => {\n const notificationName = `hideNotification-${notification}`;\n const expires = new Date();\n expires.setMonth(expires.getMonth() + 3);\n dispatch(setCookie(notificationName, notificationName, expires));\n dispatch(hideActualNotification(notification));\n};\n\nconst mobileMenu = forceClose => ({\n type: actionTypes.MOBILE_MENU,\n payload: forceClose\n});\n\nconst mobileActions = forceClose => ({\n type: actionTypes.MOBILE_ACTIONS,\n payload: forceClose\n});\n\nconst setBreakPoint = breakpoint => ({\n type: actionTypes.SET_BREAKPOINT,\n payload: breakpoint\n});\n\nconst setMemberMessagingParticipation = toggle => ({\n type: actionTypes.SET_MEMBER_MESSAGING_PARTICIPATION,\n payload: toggle\n});\n\n/*\n Reusing actions and reducers for messaging modal from global\n redux store to reduce duplicate code\n*/\nconst openMessagingModal = payload => uiActions.openMessagingModal(payload);\n\nconst closeMessagingModal = payload => uiActions.closeMessagingModal(payload);\n\nexport const setTranslatedRouteInformation = dispatch => {\n return whenInitialized().then(({ t, toLocalizedUrl }) => {\n const payload = routeInformationFactory(t, toLocalizedUrl);\n dispatch({\n type: actionTypes.SET_TRANSLATED_ROUTE_INFORMATION,\n payload\n });\n\n return undefined;\n });\n};\n\nconst openChangeShipping = payload => ({\n type: actionTypes.OPEN_CHANGE_SHIPPING,\n payload: payload\n});\n\nconst closeChangeShipping = () => ({\n type: actionTypes.CLOSE_CHANGE_SHIPPING,\n payload: false\n});\n\nconst openSetDiscount = payload => ({\n type: actionTypes.OPEN_SET_DICOUNT,\n payload: payload\n});\n\nconst closeSetDiscount = () => ({\n type: actionTypes.CLOSE_SET_DICOUNT,\n payload: false\n});\n\nconst openShareModal = payload => ({\n type: uiActionTypes.OPEN_SHARE_MODAL,\n payload\n});\n\nconst closeShareModal = () => ({\n type: uiActionTypes.CLOSE_SHARE_MODAL,\n payload: false\n});\n\nexport default {\n setCombinedShippingEnabled,\n actionTypes,\n searching,\n hideNotification,\n changeListViewType,\n hideActualNotification,\n scrollToInitialScroll,\n openModal,\n setBreakPoint,\n error,\n mobileMenu,\n mobileActions,\n setMemberMessagingParticipation,\n openMessagingModal,\n closeMessagingModal,\n openChangeShipping,\n closeChangeShipping,\n openSetDiscount,\n closeSetDiscount,\n openShareModal,\n closeShareModal\n};\n","import initData from 'init-data';\nimport actions from '../actions/my-tradera';\nimport uiReducers from 'tradera-state/ui/reducer';\nimport CONSTANTS from 'tradera-constants/state';\n\nconst defaultState = {\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\nexport default (state = defaultState, action) => {\n const setCombinedShippingEnabled = () => ({\n ...state,\n isCombinedShippingEnabled: action.payload\n });\n\n const searching = () => ({\n ...state,\n isSearching: action.payload\n });\n\n const error = () => ({\n ...state,\n error: action.payload\n });\n\n const hideNotifications = () => ({\n ...state,\n hideNotifications: action.payload\n });\n\n const openModal = () => ({\n ...state,\n openModal: action.payload === false ? false : action.payload\n });\n\n const setBreakPoint = () => ({\n ...state,\n breakpoint: action.payload\n });\n\n const mobileMenu = () => ({\n ...state,\n mobileMenu:\n action.payload && action.payload === false\n ? false\n : !state.mobileMenu\n });\n\n const mobileActions = () => ({\n ...state,\n mobileActions:\n action.payload && action.payload === false\n ? false\n : !state.mobileActions\n });\n\n const setMemberMessagingParticipation = () => ({\n ...state,\n memberMessagingParticipation: action.payload\n });\n\n const openChangeShipping = () => ({\n ...state,\n changeShippingModal: {\n ...state.changeShippingModal,\n open: true,\n purchaseOrderId: action.payload\n }\n });\n\n const closeChangeShipping = () => ({\n ...state,\n changeShippingModal: {\n ...state.changeShippingModal,\n open: false\n }\n });\n\n const openSetDiscount = () => ({\n ...state,\n setDiscountModal: {\n ...state.setDiscountModal,\n open: true,\n purchaseOrderId: action.payload\n }\n });\n\n const closeSetDiscount = () => ({\n ...state,\n setDiscountModal: {\n ...state.setDiscountModal,\n open: false\n }\n });\n\n /*\n Reusing actions and reducers for messaging modal from global\n redux store to reduce duplicate code\n */\n const openMessagingModal = () => uiReducers(state, action);\n\n const closeMessagingModal = () => uiReducers(state, action);\n\n const setTranslatedRouteInformation = () => ({\n ...state,\n page: action.payload\n });\n\n const def = () => state;\n\n const reducers = {\n [actions.actionTypes.SEARCHING]: searching,\n [actions.actionTypes.HIDE_NOTIFICATIONS]: hideNotifications,\n [actions.actionTypes.ERROR]: error,\n [actions.actionTypes.OPEN_MODAL]: openModal,\n [actions.actionTypes.SET_BREAKPOINT]: setBreakPoint,\n [actions.actionTypes.MOBILE_MENU]: mobileMenu,\n [actions.actionTypes.MOBILE_ACTIONS]: mobileActions,\n [actions.actionTypes\n .SET_MEMBER_MESSAGING_PARTICIPATION]: setMemberMessagingParticipation,\n [actions.actionTypes.OPEN_MESSAGING_MODAL]: openMessagingModal,\n [actions.actionTypes.CLOSE_MESSAGING_MODAL]: closeMessagingModal,\n [actions.actionTypes.OPEN_CHANGE_SHIPPING]: openChangeShipping,\n [actions.actionTypes.CLOSE_CHANGE_SHIPPING]: closeChangeShipping,\n [actions.actionTypes\n .SET_TRANSLATED_ROUTE_INFORMATION]: setTranslatedRouteInformation,\n [actions.actionTypes.OPEN_SET_DICOUNT]: openSetDiscount,\n [actions.actionTypes.CLOSE_SET_DICOUNT]: closeSetDiscount,\n [actions.actionTypes\n .SET_COMBINED_SHIPPING_ENABLED]: setCombinedShippingEnabled\n };\n\n return !reducers[action.type] ? def() : reducers[action.type]();\n};\n\nexport const selectMyTraderaState = state => state.views.myTradera.myTradera;\n","import { PAGE_LIST_TYPES } from 'tradera-apps/my-tradera/app/constants/list-types';\n\n/**\n * @returns {object} list of default cookies that could be set in Touchweb\n * @desc\n * key: Cookie Name\n * default: Default Value if not set\n * length: Time to be stored (months)\n */\nexport const DEFAULT_COOKIES = {\n ITEM_LAYOUT: {\n key: 'Srp_Item_Layout',\n default: 'layout-grid',\n length: 365\n },\n SITE_LAYOUT: {\n key: 'Srp_Site_Layout',\n default: 'site-width-default',\n length: 365\n }\n};\n\nexport const MYTRADERA_DEFAULT_COOKIES = {\n LIST_VIEW_TYPE: {\n key: 'MyTradera_ListViewType',\n default: 'Basic',\n length: 365\n },\n ITEMS_PER_PAGE: {\n key: 'MyTradera_ItemsPerPage',\n default: '25',\n length: 365\n },\n SHOW_FILTERS: {\n key: 'MyTradera_ShowFiltersToolbar',\n default: 'hidden',\n length: 365\n },\n LIST_VIEW_TYPE_BUYER_ACTIVE_ITEMS: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.BUYER_ACTIVE_ITEMS,\n default: null,\n length: 365\n },\n LIST_VIEW_TYPE_BUYER_PURCHASES: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.BUYER_PURCHASES,\n default: null,\n length: 365\n },\n LIST_VIEW_TYPE_BUYER_ITEMS_LOST: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.BUYER_ITEMS_LOST,\n default: null,\n length: 365\n },\n LIST_VIEW_TYPE_SELLER_ACTIVE: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.SELLER_ACTIVE,\n default: null,\n length: 365\n },\n LIST_VIEW_TYPE_SELLER_SOLD: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.SELLER_SOLD,\n default: null,\n length: 365\n },\n LIST_VIEW_TYPE_SELLER_NOT_SOLD: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.SELLER_NOT_SOLD,\n default: null,\n length: 365\n }\n};\n\nexport const CURRENCY_SELECTED_BY_USER = 'currency_selected_by_user';\nexport const GDPR_CONSENT_ALERT_DISMISSED = 'gdpr_dismissed_v1';\nexport const GDPR_CONSENT_COOKIE = 'gdpr_consent_v1';\nexport const FORCE_GEO_DEV = 'force-geo-dev';\nexport const ITEMS_PER_PAGE = 'ITEMS_PER_PAGE';\nexport const LIST_VIEW_TYPE = 'LIST_VIEW_TYPE';\nexport const MOBILE_OPT_IN_TAGS = 'mobile-opt-in-tags';\nexport const PREFERRED_CURRENCY = 'preferred_currency';\nexport const PREFERRED_LANGUAGE = 'preferred_language';\nexport const REGION_PICKER_DISMISSED = 'region_picker_dismissed_session';\nexport const S = 's';\nexport const SHIPPING_COUNTRY = 'shipping_country';\nexport const SHOW_FILTERS = 'SHOW_FILTERS';\nexport const SIGNUP_REFERRAL_PATH = 'signup_referral_path';\nexport const SOLD_VIEW_PICKLIST = 'sold_view_picklist';\nexport const TEST = 'test';\nexport const USERPREFERENCES = 'UserPreferences';\nexport const CART_ID = 'cartId';\n\nexport const COOKIE_CATEGORIES = {\n Essential: 1,\n Performance: 2,\n Functional: 3,\n Marketing: 4\n};\n\n/**\n * all cookies that are used by tradera must be categorized in the array below.\n */\nexport const CATEGORIZED_COOKIES = {\n [GDPR_CONSENT_ALERT_DISMISSED]: COOKIE_CATEGORIES.Essential,\n [GDPR_CONSENT_COOKIE]: COOKIE_CATEGORIES.Essential,\n [TEST]: COOKIE_CATEGORIES.Essential, // Unit test cookie\n\n [CURRENCY_SELECTED_BY_USER]: COOKIE_CATEGORIES.Functional,\n [DEFAULT_COOKIES.ITEM_LAYOUT.key]: COOKIE_CATEGORIES.Functional,\n [DEFAULT_COOKIES.SITE_LAYOUT.key]: COOKIE_CATEGORIES.Functional,\n [FORCE_GEO_DEV]: COOKIE_CATEGORIES.Functional,\n [ITEMS_PER_PAGE]: COOKIE_CATEGORIES.Functional,\n [LIST_VIEW_TYPE]: COOKIE_CATEGORIES.Functional,\n [MOBILE_OPT_IN_TAGS]: COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.ITEMS_PER_PAGE.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.SHOW_FILTERS.key]: COOKIE_CATEGORIES.Functional,\n [PREFERRED_CURRENCY]: COOKIE_CATEGORIES.Functional,\n [PREFERRED_LANGUAGE]: COOKIE_CATEGORIES.Functional,\n [REGION_PICKER_DISMISSED]: COOKIE_CATEGORIES.Functional,\n [S]: COOKIE_CATEGORIES.Functional, // saved search\n [SHIPPING_COUNTRY]: COOKIE_CATEGORIES.Functional,\n [SHOW_FILTERS]: COOKIE_CATEGORIES.Functional,\n [SIGNUP_REFERRAL_PATH]: COOKIE_CATEGORIES.Functional,\n [SOLD_VIEW_PICKLIST]: COOKIE_CATEGORIES.Functional,\n [USERPREFERENCES]: COOKIE_CATEGORIES.Functional,\n [CART_ID]: COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_BUYER_ACTIVE_ITEMS.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_BUYER_ITEMS_LOST.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_BUYER_PURCHASES.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_SELLER_ACTIVE.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_SELLER_NOT_SOLD.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_SELLER_SOLD.key]:\n COOKIE_CATEGORIES.Functional\n};\n\nexport const COOKIE_DEFAULT_CATEGORY = COOKIE_CATEGORIES.Functional;\n","import actionTypes from 'tradera-state/ui/action-types';\n\nexport const openModal = payload => ({\n type: actionTypes.OPEN_MODAL,\n payload\n});\n\nexport const closeModal = () => ({\n type: actionTypes.CLOSE_MODAL\n});\n","/***\n *\n * Keep track of users' GDPR settings.\n *\n */\nimport dayjs from 'dayjs';\n\nimport CookieUtil from 'tradera-utils/cookie';\nimport {\n GDPR_CONSENT_COOKIE,\n COOKIE_CATEGORIES\n} from 'tradera-constants/cookies';\n\nclass GdprSettings {\n /**\n *\n * @param {int} cookieCategory use the constant COOKIE_CATEGORIES to get different values.\n */\n isCategoryEnabled(cookieCategory) {\n if (cookieCategory === COOKIE_CATEGORIES.Essential) {\n return true;\n }\n let decodedCookie = decodeURI(\n CookieUtil.readCookie(GDPR_CONSENT_COOKIE)\n );\n if (decodedCookie === null || decodedCookie.length === 0) {\n return true;\n }\n\n let categoryPattern = new RegExp(`,${cookieCategory}:1`);\n return categoryPattern.test(decodedCookie);\n }\n\n isPerformanceEnabled() {\n return this.isCategoryEnabled(COOKIE_CATEGORIES.Performance);\n }\n\n isFunctionalEnabled() {\n return this.isCategoryEnabled(COOKIE_CATEGORIES.Functional);\n }\n\n isMarketingEnabled() {\n return this.isCategoryEnabled(COOKIE_CATEGORIES.Marketing);\n }\n\n set(performance, functional, marketing) {\n const cookie = [\n `${COOKIE_CATEGORIES.Essential}:1`,\n `${COOKIE_CATEGORIES.Performance}:${performance ? '1' : '0'}`,\n `${COOKIE_CATEGORIES.Functional}:${functional ? '1' : '0'}`,\n `${COOKIE_CATEGORIES.Marketing}:${marketing ? '1' : '0'}`\n ];\n\n CookieUtil.createCookie(\n GDPR_CONSENT_COOKIE,\n cookie.join(','),\n dayjs()\n .add(1, 'years')\n .toDate(),\n '/'\n );\n return this;\n }\n}\n\nexport default new GdprSettings();\n","export const isSwedishOrUndefined = languageCodeIso2 =>\n languageCodeIso2 === undefined || languageCodeIso2.toLowerCase() === 'sv';\n\nexport const getLanguageFromCountryCode = countryCodeIso2 => {\n countryCodeIso2 = countryCodeIso2?.toLowerCase() || 'se';\n const languageMap = {\n se: 'sv',\n dk: 'da',\n de: 'de'\n };\n return languageMap[countryCodeIso2] || 'en';\n};\n\nexport const getCountryCodeFromLanguage = languageCode => {\n languageCode = languageCode?.toLowerCase() || 'sv';\n const countryMap = {\n en: 'gb', // We default to GB which isn't strictly correct\n da: 'dk',\n de: 'de'\n };\n return countryMap[languageCode] || 'se';\n};\n\nexport const areLanguageCodesIso2Equal = (first, second) =>\n (first || 'SV').toUpperCase() === (second || 'SV').toUpperCase();\n","import { actionTypes } from '../actions/cookies';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { MYTRADERA_DEFAULT_COOKIES } from 'tradera-constants/cookies';\nimport { logger } from 'packages';\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\nexport default (state = defaultState(), action) => {\n const set = () => {\n let def = MYTRADERA_DEFAULT_COOKIES[action.payload.name];\n const expires = def.length;\n try {\n cookieUtil.createCookie(def.key, action.payload.value, expires);\n } catch (e) {\n logger(e);\n }\n if (state[action.payload.name] === action.payload.value) {\n return state;\n }\n return {\n ...state,\n [action.payload.name]: action.payload.value\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.SET]: set\n };\n return !reducers[action.type] ? def() : reducers[action.type]();\n};\n\nexport const selectCookiesState = state => state.views.myTradera.cookies;\n","import { formatDate } 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) => {\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: formatDate(row.listing.endDate)\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: formatDate(row.transaction.transactionDate)\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 { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectFiltersState } from 'tradera-apps/my-tradera/app/state/reducers/filters';\n\nimport fetch from '../../utils/fetch';\nimport myTraderaItemsActions from './my-tradera-items';\nimport myTraderaActions from './my-tradera';\nimport URLS from '../../constants/urls';\nimport { actionTypes } from '../action-types/purchase-order';\nimport {\n initialPayloadPurchaseOrders,\n initialPayloadItems\n} from '../../helpers/payloads/purchase-order';\nimport { toast } from 'react-toastify';\nimport SimpleToast from 'tradera-components/toasts/simple-toast';\nimport React from 'react';\n\nconst resetPurchaseOrder = () => ({\n type: actionTypes.PURCHASE_ORDER_RESET\n});\n\nconst runPurchaseOrders = (\n page,\n scrollToInitialScroll = false,\n listViewType,\n waitForBackend = false,\n dontModifyHistory = true\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(myTraderaActions.searching(true));\n dispatch(myTraderaActions.error(false));\n dispatch(resetPurchaseOrder());\n dispatch(myTraderaItemsActions.resetMyTraderaItems());\n\n const search = async () => {\n try {\n const modifiers = selectFiltersState(state).modifiers;\n\n modifiers.PageNumber = modifiers.paging.page;\n modifiers.PageSize = modifiers.paging.size;\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)\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 (scrollToInitialScroll === true) {\n myTraderaActions.scrollToInitialScroll();\n }\n\n dispatch(myTraderaActions.error(false));\n return dispatch(myTraderaActions.searching(false));\n } catch (error) {\n dispatch(myTraderaActions.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(myTraderaActions.searching(true));\n try {\n dispatch(myTraderaActions.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(myTraderaActions.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(myTraderaActions.searching(true));\n try {\n dispatch(myTraderaActions.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(myTraderaActions.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(myTraderaActions.searching(true));\n try {\n dispatch(myTraderaActions.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(myTraderaActions.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(myTraderaActions.searching(true));\n try {\n dispatch(myTraderaActions.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 toast.success(\n \n );\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(myTraderaActions.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(myTraderaActions.searching(true));\n try {\n await fetch(URLS.DELETE_SHIPMENT, {\n body: JSON.stringify({ shipmentId: shipmentId })\n });\n dispatch(myTraderaActions.error(false));\n dispatch({\n type: actionTypes.PURCHASE_ORDER_DELETE_SHIPMENT,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n return dispatch(myTraderaActions.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(myTraderaActions.searching(true));\n try {\n await fetch(URLS.UNMARK_BOOKED, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(myTraderaActions.error(false));\n dispatch({\n type: actionTypes.PURCHASE_ORDERS_SHIPPING_BOOKED,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n dispatch(myTraderaActions.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(myTraderaActions.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(myTraderaActions.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(myTraderaActions.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(myTraderaActions.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 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 isLoadingShippingProducts: false,\n shippingProviders: [\n {\n providerName: 'SchenkerPrivpak'\n },\n {\n providerName: 'PostNordParcel'\n },\n {\n providerName: 'PostNordStamp'\n },\n {\n providerName: 'DHL'\n },\n {\n providerName: 'Bussgods'\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 },\n updateFilter: (state, action) => {\n const { filterName, value } = action.payload;\n state.box[filterName] = value;\n },\n setWeightFilter: (state, action) => {\n const map = {\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\n const value = map[action.payload.value];\n state.weightUnit = value % 1000 === 0 ? 'kg' : 'g';\n state.box.weight = 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 { toLocalizedUrl } from 'tradera-utils/url';\n\n/**\n * Hide location.reload to be able to stub it with sinon\n * see https://developer.mozilla.org/en-US/docs/Web/API/Location/reload\n */\nexport const reload = (force = false) => location.reload(force);\n\nexport const reloadLocalized = code =>\n (window.location.href = toLocalizedUrl(window.location.href, code));\n\n// Export object for Sinon stubbing\nexport default {\n reload,\n reloadLocalized\n};\n","import cookieUtil from 'tradera-utils/cookie';\nimport { SHIPPING_COUNTRY } from 'tradera-constants/cookies';\nimport { fetchAvailableShippingCountries } from './api';\nimport {\n selectIsLoadingAvailableShippingCountries,\n selectHasLoadedAvailableShippingCountries\n} from './selectors';\n\nimport {\n setShippingCountry,\n setAvailableShippingCountries,\n beginLoadingAvailableShippingOptions,\n setDefaultShippingCountry\n} from './reducer';\nimport { setPreferredCurrency } from 'tradera-state/multi-currency';\nimport { setPreferredLanguage } from 'tradera-state/language/actions';\nimport { Analytics } from 'packages';\nimport { getLanguageFromCountryCode } from 'tradera-utils/languagecode';\n\nconst yearInMilliseconds = 1000 * 60 * 60 * 24 * 365;\n\nexport const updateShippingRegion = countryCodeIso2 => dispatch => {\n const expireDate = new Date(new Date().getTime() + yearInMilliseconds);\n cookieUtil.createCookie(SHIPPING_COUNTRY, countryCodeIso2, expireDate);\n\n dispatch(setShippingCountry({ countryCodeIso2 }));\n};\n\nexport const removeShippingCountryCookieIfSwedish = geolocation => dispatch => {\n if (\n geolocation.isoCode === 'SE' &&\n cookieUtil.hasCookie(SHIPPING_COUNTRY)\n ) {\n cookieUtil.eraseCookie(SHIPPING_COUNTRY);\n dispatch(setDefaultShippingCountry());\n }\n};\n\nexport const getAvailableShippingCountries = () => async (\n dispatch,\n getState\n) => {\n if (\n selectIsLoadingAvailableShippingCountries(getState()) ||\n selectHasLoadedAvailableShippingCountries(getState())\n ) {\n return;\n }\n\n dispatch(beginLoadingAvailableShippingOptions());\n const { shippingCountries } = await fetchAvailableShippingCountries();\n dispatch(setAvailableShippingCountries({ shippingCountries }));\n\n if (cookieUtil.hasCookie(SHIPPING_COUNTRY)) {\n dispatch(\n setShippingCountry({\n countryCodeIso2: cookieUtil.readCookie(SHIPPING_COUNTRY)\n })\n );\n }\n};\n\nexport const onLocalizationShippingRegionSelected = ({\n countryCodeIso2,\n currencyCode,\n toLocalizedUrl\n}) => dispatch => {\n const languageCodeIso2 = getLanguageFromCountryCode(countryCodeIso2);\n\n Analytics.trackEvent({\n category: 'Top navigation',\n action: 'Localization menu tooltip',\n label: `Set localization region - ${countryCodeIso2}`\n });\n\n dispatch(getAvailableShippingCountries()); //make sure we have loaded countries\n dispatch(updateShippingRegion(countryCodeIso2));\n dispatch(setPreferredCurrency(currencyCode));\n dispatch(setPreferredLanguage(languageCodeIso2, toLocalizedUrl));\n};\n","import axios from 'axios';\n\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { finalizeResponse, handleError } from 'tradera-utils/api';\n\nexport const fetchAvailableShippingCountries = () =>\n axios\n .get(ENDPOINTS.AVAILABLE_SHIPPING_COUNTRIES)\n .then(finalizeResponse())\n .then(({ data }) => ({\n shippingCountries: data.availableCountries.map(\n country => country.countryCodeIso2\n )\n }))\n .catch(handleError());\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.combinedShippingInfo = combinedShippingInfo;\n state.shippingFeeRule = shippingFeeRule;\n state.purchaseOrder = {\n isOpen: purchaseOrder.isOpen,\n created: purchaseOrder.created\n };\n },\n receivePaymentOptions: (state, { payload }) => {\n const { paymentOptions } = payload;\n state.payment.paymentOptions = paymentOptions;\n state.payment.isFetching = false;\n },\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n state.hasError = false;\n },\n openModal: (state, { payload }) => {\n const { open, status, paymentAttemptId } = payload;\n state.modal = {\n open,\n status,\n paymentAttemptId\n };\n },\n cancelPayment: state => {\n state.checkoutSummary.hasError = false;\n state.checkoutSummary.isFetching = false;\n state.showDisableOverlay = false;\n },\n closeModal: state => {\n state.modal = {\n open: '',\n status: MODAL_STATUS.START\n };\n },\n setHasError: (state, { payload }) => {\n state.hasError = payload;\n state.isFetching = false;\n state.showDisableOverlay = false;\n },\n setPaymentFetching: (state, { payload }) => {\n state.payment.isFetching = payload;\n state.payment.hasError = false;\n },\n setPaymentHasError: (state, { payload }) => {\n state.payment.hasError = payload;\n state.payment.isFetching = false;\n state.showDisableOverlay = false;\n },\n setPaymentMethodData: (state, { payload }) => {\n state.payment.paymentMethodData = payload;\n },\n setCheckoutSummaryFetching: (state, { payload }) => {\n state.checkoutSummary.isFetching = payload;\n state.checkoutSummary.hasError = false;\n },\n setCheckoutSummaryHasError: (state, { payload }) => {\n state.checkoutSummary.hasError = payload;\n state.checkoutSummary.isFetching = false;\n state.showDisableOverlay = false;\n state.modal.status = MODAL_STATUS.ERROR;\n },\n setSelectedPayment: (state, { payload }) => {\n state.payment.selectedPayment = payload;\n state.payment.paymentMethodData = null;\n state.checkoutSummary.hasError = false;\n },\n setSelectedShipping: (state, { payload }) => {\n state.selectedShipping = payload;\n },\n setShowDisableOverlay: (state, { payload }) => {\n state.showDisableOverlay = payload;\n },\n setOngoingPaymentAttempt: (state, { payload }) => {\n state.ongoingPaymentAttempt = payload;\n },\n setCombinedShippingInfo: (state, { payload }) => {\n state.combinedShippingInfo = {\n ...state.combinedShippingInfo,\n ...payload\n };\n },\n setBuyerMember: (state, { payload }) => {\n state.buyerMember = { ...state.buyerMember, ...payload };\n },\n setBuyerMemberAddress: (state, { payload }) => {\n state.buyerMember.address = {\n ...state.buyerMember.address,\n ...payload\n };\n }\n }\n});\n\nexport const {\n openModal,\n closeModal,\n cancelPayment,\n receiveCheckout,\n receivePaymentOptions,\n setFetching,\n setHasError,\n setCheckoutSummaryFetching,\n setCheckoutSummaryHasError,\n setPaymentFetching,\n setPaymentHasError,\n setPaymentMethodData,\n setSelectedPayment,\n setSelectedShipping,\n setShowDisableOverlay,\n setOngoingPaymentAttempt,\n setCombinedShippingInfo,\n setBuyerMember,\n setBuyerMemberAddress\n} = 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};\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 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 selectInternationalShippingProviders = state =>\n state.views.shippingCalculator.shippingProviders.filter(\n ({ providerName }) =>\n ['SchenkerPrivpak', 'PostNordParcel', 'PostNordStamp'].find(\n 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';\n\nconst MultiCurrency = ({\n amountInSek,\n className,\n preferredCurrency,\n tagName: TagName\n}) => {\n const { language } = useCurrentLanguage();\n if (!MultiCurrency.isVisible(amountInSek, preferredCurrency)) {\n return null;\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 ≈ {formattedPrice}\n \n );\n};\n\nMultiCurrency.isVisible = (amountInSek, preferredCurrency) => {\n return (\n preferredCurrency &&\n preferredCurrency.code !== 'SEK' &&\n amountInSek &&\n amountInSek * preferredCurrency.rate > 0\n );\n};\n\nexport const preferredCurrencyPropTypes = PropTypes.shape({\n // Rate in percent\n rate: PropTypes.number.isRequired,\n decimals: PropTypes.number.isRequired,\n code: PropTypes.string.isRequired,\n symbolPrefix: PropTypes.string,\n symbolSuffix: PropTypes.string\n});\n\nMultiCurrency.propTypes = {\n amountInSek: PropTypes.number,\n className: PropTypes.string,\n preferredCurrency: preferredCurrencyPropTypes,\n tagName: PropTypes.string\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\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 downloadCsvPayouts: isEnabled('download-csv-payouts'),\n isInrPurchaseOrderEnabled: isEnabled('inr-purchaseorder'),\n isUpiPurchaseOrderEnabled: isEnabled('upi-purchaseorder'),\n isPennybridgeCharitiesEnabled: isEnabled('pennybridge-charities'),\n isValuationPageEnabled: isEnabled('valuation-page'),\n isSwishApp2AppCallbackEnabled: isEnabled('swish-app2app-callback'),\n isCheckoutConfirmationEnabled: isEnabled('checkout-confirmation'),\n isSwishApp2AppTraderaAppCallbackEnabled: isEnabled(\n 'swish-app2app-tradera-app-callback'\n ),\n isChangeAddressInCheckoutEnabled: isEnabled('change-address-in-checkout')\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","import React from 'react';\nimport {\n buyerActiveItemsColumns,\n buyerItemsLostColumns,\n buyerPurchasesColumns,\n sellerActiveColumns,\n sellerSoldColumns,\n sellerUnsoldColumns,\n payments2Columns\n} from './../constants/column-definitions';\nimport { PAGE_LIST_TYPES } from '../constants/list-types';\nimport { PAGE_NAMES } from '../constants/page';\nimport { getMyTraderaUrls } from 'tradera-apps/my-tradera/app/pages/routes';\nimport HeartIcon from '@tradera/blueprint/theme/icons2/heart.svg?jsx';\nimport BookmarkIcon from '@tradera/blueprint/theme/icons2/bookmark.svg?jsx';\nimport StarIcon from '@tradera/blueprint/theme/icons2/star.svg?jsx';\nimport MessageIcon from '@tradera/blueprint/theme/icons2/message.svg?jsx';\nimport BidLostIcon from '@tradera/blueprint/theme/icons2/bid-lost.svg?jsx';\nimport TagIcon from '@tradera/blueprint/theme/icons2/sale.svg?jsx';\nimport ListIcon from '@tradera/blueprint/theme/icons2/list.svg?jsx';\nimport WriteIcon from '@tradera/blueprint/theme/icons2/write.svg?jsx';\nimport SettingsIcon from '@tradera/blueprint/theme/icons2/settings.svg?jsx';\nimport BiddingIcon from '@tradera/blueprint/theme/icons2/auction.svg?jsx';\nimport WonIcon from '@tradera/blueprint/theme/icons2/winning.svg?jsx';\nimport DocumentIcon from '@tradera/blueprint/theme/icons2/document.svg?jsx';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport RatingPositiveIcon from '@tradera/blueprint/theme/icons2/rating-positive.svg?jsx';\nimport SoldIcon from '@tradera/blueprint/theme/icons2/sold.svg?jsx';\nimport LockIcon from '@tradera/blueprint/theme/icons2/lock.svg?jsx';\nimport UnsoldIcon from '@tradera/blueprint/theme/icons2/unsold.svg?jsx';\nimport UserIcon from '@tradera/blueprint/theme/icons2/user.svg?jsx';\nimport WalletIcon from '@tradera/blueprint/theme/icons2/wallet.svg?jsx';\nimport PackageIcon from '@tradera/blueprint/theme/icons2/package.svg?jsx';\n\n/**\n * This is default information used to differentiate UI elements based on different pages.\n * @returns {object}\n */\nexport const routeInformationFactory = (t, toLocalizedUrl) => {\n const urls = getMyTraderaUrls(toLocalizedUrl);\n return {\n [urls.overview]: {\n url: toLocalizedUrl('/my/overview'),\n class: 'myt-menu-list-item-subtitle myt-menu-list-item-overview',\n label: t('myt_overview_label'),\n isExternal: true\n },\n [urls.wishlist]: {\n url: toLocalizedUrl('/my/wish-list'),\n title: t('myt_wishlist_title'),\n isExternal: true,\n icon: \n },\n [urls.savedSearches]: {\n url: toLocalizedUrl('/my/saved-searches'),\n title: t('myt_savedSearches_title'),\n isExternal: true,\n icon: \n },\n [urls.favouriteSellers]: {\n url: toLocalizedUrl('/my/favourite-sellers'),\n title: t('myt_favouriteSellers_title'),\n isExternal: true,\n icon: ,\n showBasedOnInitData: initData =>\n !initData?.featureSwitches['my-tradera-seller-list']\n },\n [urls.sellerList]: {\n url: toLocalizedUrl('/my/seller-list'),\n title: t('myt_sellerList_title'),\n isExternal: false,\n icon: ,\n overview: urls.overview,\n showBasedOnInitData: initData =>\n initData?.featureSwitches['my-tradera-seller-list']\n },\n [urls.activeItems]: {\n isBuyerPage: true,\n searchUrl: toLocalizedUrl('/my/api/buyer/active'),\n pageName: PAGE_NAMES.BuyerActiveItems,\n listType: PAGE_LIST_TYPES.BUYER_ACTIVE_ITEMS,\n url: toLocalizedUrl('/my/active-items'),\n title: t('myt_activeItems_title'),\n columns: buyerActiveItemsColumns,\n overview: urls.buyerOverview,\n hasLabels: false,\n shouldShowCompact: false,\n shouldShowListToggle: false,\n gaLabel: 'PÃ¥gÃ¥ende budgivningar',\n bulkEditEnabled: true,\n icon: ,\n noResultsText: t('myt_activeItems_noResultsText')\n },\n [urls.itemsLost]: {\n isBuyerPage: true,\n searchUrl: toLocalizedUrl('/my/api/buyer/items-lost'),\n pageName: PAGE_NAMES.BuyerItemsLost,\n listType: PAGE_LIST_TYPES.BUYER_ITEMS_LOST,\n overview: urls.buyerOverview,\n url: toLocalizedUrl('/my/items-lost'),\n title: t('myt_lostItems_title'),\n columns: buyerItemsLostColumns,\n hasLabels: false,\n shouldShowCompact: false,\n shouldShowListToggle: false,\n bulkEditEnabled: true,\n icon: ,\n noResultsText: t('myt_lostItems_noResultsText')\n },\n [urls.selling]: {\n url: toLocalizedUrl('/selling'),\n title: t('siteHeader_createItem'),\n isExternal: true,\n icon: \n },\n [urls.active]: {\n searchUrl: toLocalizedUrl('/my/api/seller/active'),\n pageName: PAGE_NAMES.SellerActive,\n listType: PAGE_LIST_TYPES.SELLER_ACTIVE,\n url: toLocalizedUrl('/my/active'),\n overview: urls.sellerOverview,\n title: t('myt_activeListings_title'),\n columns: sellerActiveColumns,\n hasLabels: false,\n shouldShowCompact: true,\n shouldShowListToggle: true,\n stats: {\n FastPris: {\n label: 'Fast pris',\n value: '0'\n },\n Auktioner: {\n label: 'Auktioner',\n value: '0'\n },\n Bud: {\n label: 'Bud',\n value: '0'\n },\n SummaUtropspris: {\n label: 'Summa utropspris',\n value: '0'\n },\n SummaBud: {\n label: 'Summa bud',\n value: '0'\n }\n },\n bulkEditEnabled: true,\n icon: ,\n noResultsText: t('myt_activeListings_noResultsText')\n },\n [urls.sold]: {\n searchUrl: toLocalizedUrl('/my/api/seller/sold'),\n searchUrlNormalView: toLocalizedUrl(\n '/api/webapi/mytradera/seller/soldpurchaseorders'\n ),\n pageName: PAGE_NAMES.SellerSold,\n listType: PAGE_LIST_TYPES.SELLER_SOLD,\n url: toLocalizedUrl('/my/sold'),\n title: t('myt_soldItems_title'),\n columns: sellerSoldColumns,\n overview: urls.sellerOverview,\n hasLabels: true,\n shouldShowCompact: true,\n shouldShowListToggle: true,\n stats: {\n Butiksobjekt: {\n label: 'Butiksobjekt',\n value: '0'\n },\n FastPris: {\n label: 'Fast pris',\n value: '0'\n },\n Auktioner: {\n label: 'Auktioner',\n value: '0'\n },\n Bud: {\n label: 'Bud',\n value: '0t'\n },\n SummaUtropspris: {\n label: 'Summa utropspris',\n value: '0'\n },\n SummaBud: {\n label: 'Summa bud',\n value: '0'\n }\n },\n bulkEditEnabled: false,\n icon: ,\n noResultsText: t('myt_soldItems_noResultsText')\n },\n [urls.unsold]: {\n searchUrl: toLocalizedUrl('/my/api/seller/unsold'),\n pageName: PAGE_NAMES.SellerUnsold,\n listType: PAGE_LIST_TYPES.SELLER_NOT_SOLD,\n overview: urls.sellerOverview,\n url: toLocalizedUrl('/my/unsold'),\n title: t('myt_unsoldItems_title'),\n columns: sellerUnsoldColumns,\n shouldShowCompact: true,\n shouldShowListToggle: true,\n stats: {},\n bulkEditEnabled: true,\n icon: ,\n noResultsText: t('myt_unsoldItems_noResultsText')\n },\n [urls.purchases]: {\n isBuyerPage: true,\n searchUrl: toLocalizedUrl('/my/api/buyer/purchases'),\n searchUrlNormalView: toLocalizedUrl(\n '/api/webapi/mytradera/buyer/boughtpurchaseorders'\n ),\n pageName: PAGE_NAMES.BuyerPurchases,\n listType: PAGE_LIST_TYPES.BUYER_PURCHASES,\n url: toLocalizedUrl('/my/purchases'),\n overview: urls.buyerOverview,\n title: t('myt_boughtItems_title'),\n columns: buyerPurchasesColumns,\n shouldShowCompact: false,\n shouldShowListToggle: true,\n stats: {},\n bulkEditEnabled: true,\n icon: ,\n noResultsText: t('myt_boughtItems_noResultsText')\n },\n [urls.pickList]: {\n url: toLocalizedUrl('/my/picklist'),\n title: t('myt_picklist_title'),\n isExternal: true,\n icon: \n },\n [urls.buyerFeedback]: {\n pageName: PAGE_NAMES.MyTraderaLeaveFeedback,\n url: toLocalizedUrl('/my/leave-feedback/buyer?transactionId=0'),\n title: t('myt_buyerFeedback_title'),\n isExternal: true,\n icon: ,\n hasCustomHeader: true,\n overview: urls.buyerOverview\n },\n [urls.sellerFeedback]: {\n pageName: PAGE_NAMES.MyTraderaLeaveFeedback,\n url: toLocalizedUrl('/my/leave-feedback/seller?transactionId=0'),\n title: t('myt_sellerFeedback_title'),\n isExternal: true,\n icon: ,\n hasCustomHeader: true,\n overview: urls.sellerOverview\n },\n [urls.myFeedback]: {\n url: toLocalizedUrl('/getUrlMyFeedback'),\n title: t('myt_myFeedback_title'),\n isExternal: true,\n icon: \n },\n [urls.settings]: {\n url: urls.settings,\n title: t('myt_settings_title'),\n pageName: PAGE_NAMES.Settings,\n overview: urls.accountOverview,\n isExternal: false,\n icon: \n },\n [urls.settingsAccount]: {\n url: urls.settingsAccount,\n title: t('myt_settings_account_title'),\n subTitle: t('myt_settings_account_subTitle'),\n pageName: PAGE_NAMES.SettingsAccount,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.settingsEmail]: {\n url: urls.settingsEmail,\n title: t('myt_settings_email_title'),\n subTitle: t('myt_settings_email_subTitle'),\n pageName: PAGE_NAMES.SettingsEmail,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.settingsSelling]: {\n url: urls.settingsSelling,\n title: t('myt_settings_selling_title'),\n subTitle: t('myt_settings_selling_subTitle'),\n pageName: PAGE_NAMES.SettingsSeller,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.settingsNotifications]: {\n url: urls.settingsNotifications,\n title: t('myt_settings_notifications_title'),\n subTitle: t('myt_settings_notifications_subTitle'),\n pageName: PAGE_NAMES.SettingsNotifications,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.settingsSecurity]: {\n url: urls.settingsSecurity,\n title: t('myt_settings_security_title'),\n subTitle: t('myt_settings_security_subTitle'),\n pageName: PAGE_NAMES.SettingsSecurity,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.settingsPayouts]: {\n url: urls.settingsPayouts,\n title: t('myt_settings_payouts_title'),\n subTitle: t('myt_settings_payouts_subTitle'),\n pageName: PAGE_NAMES.Settings,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.invoices]: {\n url: toLocalizedUrl('/my/Invoices?page=1'),\n title: t('myt_invoices_title'),\n isExternal: true,\n icon: \n },\n [urls.payments]: {\n url: toLocalizedUrl('/my/Payments'),\n title: t('myt_payments_title'),\n isExternal: true,\n showBasedOnInitData: initData => {\n return (\n initData &&\n initData.paymentSettings &&\n initData.paymentSettings.showPayments1Menu === true &&\n initData.paymentSettings.showPayments2Menu === false\n );\n },\n icon: \n },\n [urls.payments2]: {\n url: toLocalizedUrl('/my/Payments2'),\n title: t('myt_payments_title'),\n isExternal: true,\n overview: urls.accountOverview,\n showBasedOnInitData: initData => {\n return (\n initData?.paymentSettings?.showPayments2Menu &&\n !initData?.hasWallet\n );\n },\n icon: ,\n columns: payments2Columns\n },\n [urls.payouts]: {\n url: urls.payouts,\n title: t('myt_payouts_title'),\n pageName: PAGE_NAMES.Payouts,\n overview: urls.accountOverview,\n showBasedOnInitData: initData =>\n initData?.paymentSettings?.showPayments2Menu &&\n initData?.hasWallet,\n isExternal: false,\n icon: \n },\n [urls.messaging]: {\n url: toLocalizedUrl('/messaging'),\n label: t('myt_messaging_label'),\n class: 'myt-menu-list-item-subtitle',\n hideMainNav: true,\n isExternal: true,\n icon: \n },\n [urls.buyShippingBags]: {\n url: toLocalizedUrl('/tradera-shop/shipping-bags'),\n title: t('myt_buyShippingBags_title'),\n isExternal: true,\n icon: ,\n showBasedOnInitData: initData =>\n initData?.featureSwitches['tradera-shop']\n }\n };\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 { formatDate } from 'tradera-utils/date';\nimport TimeLeft from '../helpers/time-left';\nimport { ITEM_STATES } from 'tradera-state/views/view-item/constants';\nimport { AnimateOnValueChange } from './animate-on-value-change';\nimport './bid-details.scss';\n\nexport const BidDetails = ({\n bidCount,\n endDate,\n fixedPrice,\n hasEnded,\n isEnding,\n itemState,\n leadingBidAmount,\n onShowBids,\n openingBid,\n preferredCurrency,\n timeLeftText,\n isTimeLeftBelowWarningLimit,\n winningBidAmount\n}) => {\n const { t } = useTranslator();\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')} {formatDate(new Date(endDate))}\n

\n ) : (\n

\n {t('vip_willEndTime')} {formatDate(new Date(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 BRAND_PAGE: 'Brand',\n BRAND_LIST_PAGE: 'BrandList',\n CATEGORY_LIST: 'CategoryList',\n CATEGORY_RESULT_PAGE: 'Category',\n CUSTOM_RESULT_PAGE: 'CustomResults',\n DEFAULT: 'default',\n ENDLESS_RECOMMENDATIONS_PAGE: 'EndlessRecommendation',\n ERROR_PAGE: 'ErrorPage',\n FAVOURITE_SELLERS_PAGE: 'FavouriteSellers',\n LIVE_SHOPPING: 'LiveShoppingEventList',\n MY_TRADERA_PAGE: 'MyTradera',\n PROFILE_PAGE: 'ProfilePage',\n REPORT_ITEM_PAGE: 'ReportItem',\n SEARCH_RESULT_PAGE: 'SearchResults',\n START_PAGE: 'StartPage',\n SYI_PAGE: 'SellItem',\n TRADERA_SHOP_PAGE: 'TraderaShop',\n VALUATION: 'Valuation',\n VIEW_ITEM_PAGE: 'VIP'\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 * as actions from './actions';\nimport reducer from './reducer';\nimport {\n selectIsLoggedIn,\n selectGeolocation,\n selectIsOutsideSweden\n} from './selectors';\n\nexport {\n actions,\n reducer,\n selectIsLoggedIn,\n selectGeolocation,\n selectIsOutsideSweden\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 { getCurrentLanguage } from 'tradera-lang/boot-languages';\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 => {\n return axiosWithTokenRefresh()\n .get(toLocalizedUrl(`/item/${itemId}.json`, getCurrentLanguage()))\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 (itemId, amount, onLoggedOut) => {\n try {\n const response = await axiosWithTokenRefresh().post(\n toLocalizedUrl(`/item/place-bid/${itemId}`, getCurrentLanguage()),\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 => {\n return axiosWithTokenRefresh()\n .get(\n toLocalizedUrl(\n '/api/webapi/discover/more-from-seller/',\n getCurrentLanguage()\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';\nimport './loading-portal.scss';\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 // 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","import axios from 'axios';\nimport { handleError } from 'tradera-utils/api';\n\nexport const saveLanguageSetting = (code, toLocalizedUrl) =>\n axios\n .post(toLocalizedUrl('/my/profile/save-language-setting'), {\n languageCodeIso2: code\n })\n .catch(handleError());\n\n// Export object for Sinon stubbing\nexport default {\n saveLanguageSetting\n};\n","import Analytics from 'packages/analytics';\nimport logger from 'packages/logger';\nimport locationUtils from 'tradera-utils/location';\nimport api from './api';\nimport { selectIsLoggedIn } from 'tradera-state/member';\nimport { setPreferred } from './reducer';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { PREFERRED_LANGUAGE } from 'tradera-constants/cookies';\n\n/**\n * Sets new preferred language\n * @param {string} code - example: 'sv' or 'en'\n */\nexport const setPreferredLanguage = (code, toLocalizedUrl) => async (\n dispatch,\n getState\n) => {\n Analytics.trackEvent({\n category: 'Settings',\n action: 'Language',\n label: code\n });\n\n try {\n if (selectIsLoggedIn(getState())) {\n await api.saveLanguageSetting(code, toLocalizedUrl);\n } else {\n cookieUtil.createCookie(PREFERRED_LANGUAGE, code);\n }\n dispatch(setPreferred(code));\n locationUtils.reloadLocalized(code);\n } catch (error) {\n logger(error);\n }\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","import dayjs from 'dayjs';\n\nexport const formatDate = date => dayjs(date).format('D MMM HH:mm');\n\n/**\n * Format a number of seconds to an object of time units\n *\n * @param {number} seconds\n * @param {object} [options]\n * @param {string} [options.startUnit] - Time part to start counting from, empty for all parts\n * @param {string} [options.endUnit] - Time part to stop counting on, empty for all parts\n * @returns {{string: integer}}\n */\nexport const getTimeSpanParts = (seconds, options = {}) => {\n const optionsWithDefaults = {\n startUnit: '',\n endUnit: '',\n ...options\n };\n const parts = {};\n let remaining = seconds;\n let started = !optionsWithDefaults.startUnit;\n for (const [part, length] of Object.entries(TIME_SPAN_UNIT_LENGTHS)) {\n if (!started && part === optionsWithDefaults.startUnit) started = true;\n if (started) {\n if (remaining >= length) {\n parts[part] = Math.floor(remaining / length);\n }\n remaining %= length;\n if (remaining === 0 || optionsWithDefaults.endUnit === part) break;\n }\n }\n return parts;\n};\n\nexport const TIME_SPAN_UNITS = {\n DAYS: 'days',\n HOURS: 'hours',\n MINUTES: 'minutes',\n SECONDS: 'seconds'\n};\n\nconst TIME_SPAN_UNIT_LENGTHS = {\n [TIME_SPAN_UNITS.DAYS]: 24 * 60 * 60,\n [TIME_SPAN_UNITS.HOURS]: 60 * 60,\n [TIME_SPAN_UNITS.MINUTES]: 60,\n [TIME_SPAN_UNITS.SECONDS]: 1\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","const resolveCode = (enabled, currencyCodeOrNull, currencies) => {\n const currency = resolveCurrency(enabled, currencyCodeOrNull, currencies);\n return currency ? currency.code : null;\n};\n\nconst resolveCurrency = (enabled, currencyCodeOrNull, currencies) => {\n if (!enabled || !currencyCodeOrNull) {\n return null;\n }\n const result = (currencies || []).find(\n currency => currency.code === currencyCodeOrNull\n );\n if (result) {\n return result;\n }\n return null;\n};\n\nexport { resolveCode, resolveCurrency };\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';\nimport 'tradera-components/portals/loading-portal.scss';\nimport './loader.scss';\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 React from 'react';\nimport {\n BREAKPOINTS,\n BREAKPOINT_SIZES,\n getCurrentBreakpoint,\n isBreakpointOrHigher\n} from 'tradera-utils/breakpoints';\n\n// eslint-disable-next-line react/display-name\nconst largeScreens = ComposedComponent => ({ breakpoint, ...props }) => {\n if (!breakpoint) {\n const current = getCurrentBreakpoint();\n breakpoint = BREAKPOINT_SIZES[current];\n }\n if (isBreakpointOrHigher(BREAKPOINTS.LG)) {\n return ;\n } else {\n return null;\n }\n};\n\nexport default largeScreens;\n","import React from 'react';\nimport {\n BREAKPOINTS,\n BREAKPOINT_SIZES,\n getCurrentBreakpoint,\n isBreakpoint\n} from 'tradera-utils/breakpoints';\n\n// eslint-disable-next-line react/display-name\nconst mediumScreens = ComposedComponent => ({ breakpoint, ...props }) => {\n if (!breakpoint) {\n const current = getCurrentBreakpoint();\n breakpoint = BREAKPOINT_SIZES[current];\n }\n if (isBreakpoint(BREAKPOINTS.MD)) {\n return ;\n } else {\n return null;\n }\n};\n\nexport default mediumScreens;\n","import React from 'react';\nimport {\n BREAKPOINTS,\n BREAKPOINT_SIZES,\n getCurrentBreakpoint,\n isBreakpointOrHigher\n} from 'tradera-utils/breakpoints';\n\n// eslint-disable-next-line react/display-name\nconst mediumScreensUp = ComposedComponent => ({ breakpoint, ...props }) => {\n if (!breakpoint) {\n const current = getCurrentBreakpoint();\n breakpoint = BREAKPOINT_SIZES[current];\n }\n if (isBreakpointOrHigher(BREAKPOINTS.MD)) {\n return ;\n } else {\n return null;\n }\n};\n\nexport default mediumScreensUp;\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/action-creators';\nimport { types } from './item-actions-helper';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport myTraderaActions from '../state/actions/my-tradera';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from '../components/leave-feedback/single-feedback-dialog';\nimport featureToggles from '../utils/feature-toggles';\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(\n myTraderaActions.openChangeShipping(\n purchaseOrder?.purchaseOrderId\n )\n );\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(\n myTraderaActions.openSetDiscount(\n purchaseOrder.purchaseOrderId\n )\n ),\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(\n myTraderaActions.openSetDiscount(\n purchaseOrder.purchaseOrderId\n )\n ),\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/action-creators';\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 myTraderaActions from '../state/actions/my-tradera';\n\nconst getId = purchaseOrder => purchaseOrder.purchaseOrderId;\n\nconst showModal = translationKey => {\n return myTraderaActions.openModal({\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 if (\n purchaseOrder.combinedShippingInformation &&\n purchaseOrder.combinedShippingInformation\n .hasBuyerRequestedCombinedShippingPrice &&\n !purchaseOrder.shipping.shippingDiscount\n ) {\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, { useEffect, useState, useCallback } from 'react';\nimport myTraderaActions from '../../state/actions/my-tradera';\nimport myTraderaItemActions from '../../state/actions/my-tradera-items';\nimport purchaseOrderActions from '../../state/actions/purchase-order';\nimport { getInitialFilters } from '../../helpers/payloads/initial-payload';\nimport filtersActions from '../../state/actions/filters';\nimport { setCookie } from '../../state/actions/cookies';\nimport { LIST_VIEW_TYPES, PAGE_LIST_TYPES } from '../../constants/list-types';\nimport featureToggles, {\n errors as featureToggleErrors\n} from '../../utils/feature-toggles';\n\nimport { useTranslator } from 'tradera-lang/translate';\nimport { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectMyTraderaItemsState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera-items';\nimport { selectCookiesState } from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport { selectFiltersState } from 'tradera-apps/my-tradera/app/state/reducers/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 URL_HASHES,\n shouldOpenChangeCombinedShippingModal,\n shouldMarkAsPaid\n} from 'tradera-apps/tradera/components/vip/helpers/navigation-helper';\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\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(\n myTraderaActions.error(featureToggleErrors.ELASTIC_MYTRADERA)\n );\n }\n\n if (initialState) {\n dispatch(\n filtersActions.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 `LIST_VIEW_TYPE_${state.page.listType}`,\n 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(\n myTraderaActions.openChangeShipping(\n changeShippingPurchaseOrderId\n )\n );\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 }, [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 'LIST_VIEW_TYPE_' + state.page.listType,\n 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 'LIST_VIEW_TYPE_' + state.page.listType,\n 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(setCookie('LIST_VIEW_TYPE', LIST_VIEW_TYPES.BASIC));\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 state.page,\n false,\n listViewTypeWithFallBack,\n shouldWaitForBackend,\n !modifyHistory(match, history)\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 }, [dispatch, state.page, pageListType, listViewTypeWithFallBack, match]);\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 myTradera from '../../state/actions/my-tradera';\nimport { BREAKPOINT_SIZES } from 'tradera-utils/breakpoints';\nimport { selectMyTraderaState } 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(myTradera.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';\nimport 'tradera-apps/my-tradera/style/components/myt-sticky.scss';\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","import { createSlice } from '@reduxjs/toolkit';\nimport getInitialState from './initial-state';\n\nexport const languageSlice = createSlice({\n name: 'language',\n initialState: {},\n reducers: {\n initialize: (_state, { payload }) => {\n return getInitialState(payload);\n },\n setPreferred: (state, action) => {\n state.preferred =\n state.available.find(\n language => language.languageCodeIso2 === action.payload\n ) || {};\n }\n }\n});\n\nexport const { initialize, setPreferred } = languageSlice.actions;\nexport default languageSlice.reducer;\n","import { nullifyUndefinedProperties } from 'tradera-utils/object';\n\nconst getInitialPreferredLanguage = (\n languageCodeIso2,\n availableLanguages,\n defaultLanguage\n) => {\n const availableIsoCodes = availableLanguages.map(\n lang => lang.languageCodeIso2\n );\n if (\n !!languageCodeIso2 &&\n availableIsoCodes.indexOf(languageCodeIso2) !== -1\n ) {\n return availableLanguages.find(\n l => l.languageCodeIso2 === languageCodeIso2\n );\n }\n\n return defaultLanguage;\n};\n\nexport default initData => {\n const result = nullifyUndefinedProperties({\n preferred: getInitialPreferredLanguage(\n initData.languageCodeIso2,\n initData.availableLanguages || [],\n initData.defaultLanguage\n ),\n memberCountryCodeIso2: initData.memberCountryCodeIso2,\n available: initData.availableLanguages\n });\n return result;\n};\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 { isMobile } from 'tradera-utils/breakpoints';\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 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};\n\n/**\n * Remove hash and forceRedirect param from url\n */\nexport const removeHashFromUrl = () => {\n const { forceRedirect, ...otherQueryParams } = qs.parse(location.search, {\n ignoreQueryPrefix: true\n });\n history.replaceState(\n {},\n window.title,\n location.pathname +\n qs.stringify(otherQueryParams, { addQueryPrefix: true })\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\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","export default {\n INITIALIZE: 'CURRENCY/INITIALIZE',\n SET_PREFERRED_CURRENCY: 'CURRENCY/SET_PREFERRED_CURRENCY',\n SET_CURRENCY_IF_NOT_CHOSEN: 'CURRENCY/SET_CURRENCY_IF_NOT_CHOSEN'\n};\n","import {\n selectGeolocation,\n selectIsOutsideSweden\n} from 'tradera-state/member/selectors';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\nimport { selectIsLoggedIn } from 'tradera-state/member';\nimport { getLanguageFromCountryCode } from 'tradera-utils/languagecode';\nimport { isSwedenCountryCodeOrUndefined } from 'tradera-utils/countrycode';\n\nexport const selectShowRegionSelection = state =>\n !selectIsLoggedIn(state) && selectIsOutsideSweden(state);\nexport const selectAvailableShippingCountries = state =>\n state.shippingRegion.availableShippingCountries;\nexport const selectShippingCountry = state =>\n state.shippingRegion.shippingCountry;\nexport const selectIsLoadingAvailableShippingCountries = state =>\n state.shippingRegion.isLoadingAvailableShippingCountries;\nexport const selectHasLoadedAvailableShippingCountries = state =>\n state.shippingRegion.hasLoadedAvailableShippingCountries;\nexport const selectShippingRegionCountryCodeIso2 = state =>\n state.shippingRegion.shippingCountry?.countryCodeIso2;\nexport const selectIsSwedishVisitor = state =>\n isSwedenCountryCodeOrUndefined(selectShippingRegionCountryCodeIso2(state));\n\nconst gpsMatchesLanguage = state => {\n const geoLocation = selectGeolocation(state);\n if (!geoLocation) {\n return true;\n }\n const country = geoLocation?.isoCode?.toLowerCase();\n const expectedLang = getLanguageFromCountryCode(country);\n const language =\n selectPreferredLanguage(state)?.languageCodeIso2?.toLowerCase() || 'sv';\n return expectedLang === language;\n};\n\nexport const selectShowLocalizationRegionPicker = state =>\n !selectIsLoggedIn(state) &&\n state.shippingRegion.localizationRegionPickerEnabled &&\n !state.shippingRegion.regionPickerDismissed &&\n !gpsMatchesLanguage(state);\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 from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst SimpleToast = ({ lokaliseKey }) => {\n const { t } = useTranslator();\n\n return {t(lokaliseKey)};\n};\n\nexport default SimpleToast;\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 initData: { 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 $ from 'static/script/libs/jquery';\nimport { component } from 'flightjs';\n\nfunction Logger() {\n this.logInfo = function(e, msg) {\n this._log(e, msg, 'js-info');\n };\n\n this.logError = function(e, msg) {\n this._log(e, msg, 'js-onerror');\n };\n\n this._log = function(e, msg, logLevel) {\n let errorMsg;\n\n if (e.message) {\n errorMsg = e.name + ': ' + e.message;\n } else {\n errorMsg = e;\n }\n\n let payload = {\n eventName: logLevel,\n message: msg + ' ' + errorMsg,\n trace: e.stack || ''\n };\n\n $(document).trigger('data:scribe', payload);\n };\n}\n\nexport default component(Logger);\n","import {\n formatQueryParams,\n stripItmFromQueryParameters,\n toQueryParameters\n} from 'tradera-utils/url';\nimport adsActions from './ads/actions';\nimport uiActions from './ui/actions';\nimport * as pushNotificationActions from './push-notifications/push-notifications-slice';\nimport { initialize as initShippingRegion } from './shipping-region/reducer';\nimport discoverActions from './discover/actions';\nimport { initialize as initEnvironment } from './environment/reducer';\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/actions';\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';\n\nexport const initializeState = initData => dispatch => {\n /**\n * handle tcf + gdpr loading\n */\n if (\n initData.featureSwitches &&\n initData.featureSwitches['quantcast-consent']\n ) {\n window.addEventListener('tcfLoaded', function() {\n dispatch(adsActions.setTcfLoaded());\n });\n } else {\n dispatch(adsActions.setTcfLoaded());\n }\n\n dispatch(uiActions.initialize(initData));\n dispatch(uiActions.fetchSystemMessages());\n dispatch(pushNotificationActions.init());\n dispatch(adsActions.initialize(initData));\n dispatch(initShippingRegion(initData));\n dispatch(discoverActions.initialize(initData));\n dispatch(initEnvironment(initData));\n dispatch(initLanguage(initData));\n dispatch(initMember(initData));\n dispatch(initInitData(initData));\n dispatch(initMultiCurrency(initData));\n dispatch(itemsActions.initialize(initData));\n dispatch(pageActions.initialize(initData));\n dispatch(initStartPage(initData));\n dispatch(initTraderaShop(initData));\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 getInitialState from './initial-state';\nimport { getSystemMessageAlertCount } from './helpers';\n\nconst MESSAGING_NOTIFICATIONS_CACHE_TTL = 30 * 1000;\n\nexport default (state = {}, 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 { videoUrl, title, pageType } = action.payload;\n return {\n ...state,\n videoModal: {\n ...state.videoModal,\n open: CONSTANTS.MODAL.OPEN,\n videoUrl: videoUrl,\n title: title,\n pageType: pageType\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 const { badges } = getInitialState({});\n return {\n ...state,\n badges\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 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 };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useMediaQuery } from 'react-responsive';\n\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\nimport { getCurrentBreakpoint } from 'tradera-utils/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\n/**\n * Returns breakpoint id when it changes\n *\n * @returns {string|null}\n */\nfunction useBreakpoint() {\n const [breakpoint, setBreakpoint] = useState(\n getCurrentBreakpoint(window.innerWidth)\n );\n useEffect(() => {\n const handleResize = event =>\n setBreakpoint(getCurrentBreakpoint(event.target.innerWidth));\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n return breakpoint;\n}\n\nconst withBreakpoint = WrappedComponent => {\n function WithBreakpoint(props) {\n const currentBreakpoint = useBreakpoint();\n return (\n \n );\n }\n\n WithBreakpoint.displayName = `withBreakpoint(${WithBreakpoint.displayName ||\n WithBreakpoint.name}`;\n\n return WithBreakpoint;\n};\n\nconst isMobile = currentBreakpoint =>\n [BREAKPOINTS.XS, BREAKPOINTS.SM].includes(currentBreakpoint);\n\nconst isTablet = currentBreakpoint =>\n [BREAKPOINTS.MD].includes(currentBreakpoint);\n\nconst isDesktop = currentBreakpoint =>\n [BREAKPOINTS.LG, BREAKPOINTS.XL].includes(currentBreakpoint);\n\nexport {\n Breakpoint as default,\n Breakpoint,\n BREAKPOINTS,\n useBreakpoint,\n isMobile,\n isTablet,\n isDesktop,\n withBreakpoint\n};\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 RECEIVE_TOP_LEVEL_CATEGORIES: 'CATEGORIES/RECEIVE_TOP_LEVEL_CATEGORIES',\n HANDLE_TOP_LEVEL_CATEGORIES_ERROR:\n 'CATEGORIES/HANDLE_TOP_LEVEL_CATEGORIES_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 { getCurrentLanguage } from 'tradera-lang/boot-languages';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { openModal } from 'tradera-state/ui/action-creators';\nimport { INTERNATIONAL_SHIPPING_MODAL_ID } from 'tradera-components/international-shipping-modal/constants';\nimport {\n selectIsLoggedIn,\n selectMemberId\n} from 'tradera-state/member/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 weights: []\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, weights } = shippingOptions\n .sort((a, b) =>\n a.toCountryCodeIso2 > b.toCountryCodeIso2 ? 1 : -1\n )\n .reduce(\n ({ providers, rows, weights }, shippingOption) => {\n if (\n !providers.includes(shippingOption.shippingProvider)\n ) {\n providers = [\n ...providers,\n shippingOption.shippingProvider\n ];\n weights = [\n ...weights,\n shippingOption.shippingWeight\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]:\n shippingOption.shippingCost\n };\n return { providers, rows, weights };\n },\n { providers: [], rows: [], weights: [] }\n );\n\n state.providers = providers;\n state.rows = rows;\n state.weights = weights;\n }\n }\n});\n\nexport const fetchInternationalShipping = ({ itemId, sellerId }) => async (\n dispatch,\n getState\n) => {\n const url = toLocalizedUrl(\n `${ENDPOINTS.WEB_API}/browse/item/${itemId}/shipping`,\n getCurrentLanguage()\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(openModal({ modalId: INTERNATIONAL_SHIPPING_MODAL_ID }));\n};\n\nexport const { setInternationalShipping } = internationalShippingSlice.actions;\nexport default internationalShippingSlice.reducer;\n","import { setEnum } from '../../helpers/enums';\n\n/**\n * setSellerFilterBarModifiers\n * @param {object} state\n * @param {string} selected\n * @returns {object} newState of 'filters' based on UI tab selection. Note: WebApi expects values as Capitalcase Enum;\n */\nconst setSellerFilterBarModifiers = (state, selected) => {\n const newState = { ...state };\n if (selected === 'Valj') {\n return newState;\n }\n\n if (newState.modifiers.sellerFilters) {\n Object.keys(newState.modifiers.sellerFilters).forEach(key => {\n newState.modifiers.sellerFilters[key] = setEnum('All');\n });\n }\n\n if (newState.modifiers.buyerFilters) {\n Object.keys(newState.modifiers.buyerFilters).forEach(key => {\n newState.modifiers.buyerFilters[key] = setEnum('All');\n });\n }\n\n switch (selected) {\n case 'SellerNoFeedback':\n newState.modifiers.sellerFilters.paid = setEnum(true);\n newState.modifiers.sellerFilters.shipped = setEnum(true);\n newState.modifiers.sellerFilters.feedbackLeft = setEnum(false);\n newState.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'BuyerNoFeedback':\n newState.modifiers.buyerFilters.feedbackLeft = setEnum(false);\n newState.modifiers.buyerFilters.paid = setEnum(true);\n newState.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'SellerNotPaid':\n newState.modifiers.sellerFilters.paid = setEnum(false);\n newState.modifiers.sellerFilters.shipped = setEnum(false);\n newState.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'BuyerNotPaid':\n newState.modifiers.buyerFilters.paid = setEnum(false);\n newState.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'NotSent':\n newState.modifiers.sellerFilters.paid = setEnum(true);\n newState.modifiers.sellerFilters.shipped = setEnum(false);\n newState.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'AllSold':\n case 'AllUnsold':\n newState.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'SellerHidden':\n newState.modifiers.sellerFilters.hidden = setEnum(true);\n break;\n case 'BuyerHidden':\n newState.modifiers.buyerFilters.hidden = setEnum(true);\n break;\n case 'BuyerNotHidden':\n newState.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'AllPurchases':\n newState.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'AllBids':\n newState.modifiers.hasBids = setEnum('All');\n break;\n case 'HasBids':\n newState.modifiers.hasBids = setEnum(true);\n break;\n case 'NoBids':\n newState.modifiers.hasBids = setEnum(false);\n break;\n case 'ItemsLostNotHidden':\n newState.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'ItemsLostHidden':\n newState.modifiers.buyerFilters.hidden = setEnum(true);\n break;\n default:\n break;\n }\n return newState;\n};\n\nexport default {\n setSellerFilterBarModifiers\n};\n","import filters from '../actions/filters';\nimport filterSelectors from '../selectors/filters';\n\nconst defaultState = {\n modifiers: {\n query: {},\n paging: {}\n },\n filterBar: null,\n shownFilters: null\n};\n\nexport default function(state = defaultState, action) {\n const resetPageIndex = () => ({\n page: 1,\n size: state.modifiers.paging.size\n });\n\n const setPageSize = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n paging: {\n page: 1,\n size: action.payload\n }\n }\n });\n\n const changeSortValue = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n sort: {\n sorting: action.payload.sort,\n order: action.payload.sortOrder\n },\n paging: resetPageIndex()\n }\n });\n\n const changeSortOrder = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n sort: {\n sorting: state.modifiers.sort.sorting,\n order:\n state.modifiers.sort.order === 'Descending'\n ? 'Ascending'\n : 'Descending'\n },\n paging: resetPageIndex()\n }\n });\n\n const changeTypeValue = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n itemType: action.payload,\n paging: resetPageIndex()\n }\n });\n\n const setDateFrom = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n dateRange: {\n from: action.payload,\n to: state.modifiers.dateRange.to,\n field: state.modifiers.dateRange.field\n },\n paging: resetPageIndex()\n }\n });\n\n const setSingleFilter = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n sellerFilters: {\n ...state.modifiers.sellerFilters,\n [action.payload.filter]: action.payload.value\n }\n }\n });\n const setDateTo = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n dateRange: {\n to: action.payload,\n from: state.modifiers.dateRange.from,\n field: state.modifiers.dateRange.field\n },\n paging: resetPageIndex()\n }\n });\n\n const setFiltersByState = () => {\n let showSelectFiltersDropDown = false;\n if (action.payload === 'Valj') {\n showSelectFiltersDropDown = !state.filterBar\n .showSelectFiltersDropDown;\n }\n const updatedState = filterSelectors.setSellerFilterBarModifiers(\n state,\n action.payload\n );\n return {\n ...updatedState,\n defaults: {\n ...state.defaults\n },\n modifiers: {\n ...updatedState.modifiers,\n selectedFilterBar: action.payload,\n paging: resetPageIndex()\n },\n filterBar: {\n ...state.filterBar,\n values: state.filterBar.values,\n showSelectFiltersDropDown: showSelectFiltersDropDown\n }\n };\n };\n\n const changePage = () => {\n const updatedPaging = {\n page: action.page,\n size: state.modifiers.paging.size\n };\n return {\n ...state,\n modifiers: {\n ...state.modifiers,\n paging: updatedPaging\n }\n };\n };\n\n const resetDateRangeTo = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n dateRange: {\n ...state.modifiers.dateRange,\n to: state.defaults.modifiers.dateRange.to\n }\n }\n });\n\n const resetDateRangeFrom = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n dateRange: {\n ...state.modifiers.dateRange,\n from: state.defaults.modifiers.dateRange.from\n }\n }\n });\n\n const resetFilters = () => ({\n ...state,\n modifiers: { ...state.defaults.modifiers },\n filterBar: { ...state.filterBar, ...state.defaults.filterBar }\n });\n\n const changeSearchQuery = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n query: {\n searchQuery: action.payload,\n properties: state.modifiers.query.properties,\n scope: state.modifiers.query.scope\n },\n sort: {\n sorting: 'BestMatch',\n order: 'Ascending'\n },\n paging: resetPageIndex()\n }\n });\n\n const changeReservationPrice = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n reservePriceReached: action.payload,\n paging: resetPageIndex()\n }\n });\n\n const setFiltersForPage = () => {\n if (!action.payload.newFilters.modifiers) {\n return state;\n }\n return {\n ...state,\n ...action.payload.newFilters,\n defaults: {\n ...action.payload.defaultFilters\n }\n };\n };\n\n const locationChange = () => ({\n ...state,\n modifiers: action.payload.filters\n });\n\n const showHideFilterToolbar = () => ({\n ...state\n });\n\n const reducers = {\n [filters.actionTypes.SET_PAGE_SIZE]: setPageSize,\n [filters.actionTypes.CHANGE_SORT_VALUE]: changeSortValue,\n [filters.actionTypes.CHANGE_SORT_ORDER]: changeSortOrder,\n [filters.actionTypes.CHANGE_TYPE_VALUE]: changeTypeValue,\n [filters.actionTypes.CHANGE_SORTING_TO_BEST_MATCH]: changeSortOrder,\n [filters.actionTypes.SET_DATE_FROM]: setDateFrom,\n [filters.actionTypes.SET_SINGLE_FILTER]: setSingleFilter,\n [filters.actionTypes.SET_DATE_TO]: setDateTo,\n [filters.actionTypes.SET_FILTERS_BY_STATE]: setFiltersByState,\n [filters.actionTypes.CHANGE_PAGE]: changePage,\n [filters.actionTypes.RESET_DATE_RANGE_TO]: resetDateRangeTo,\n [filters.actionTypes.RESET_DATE_RANGE_FROM]: resetDateRangeFrom,\n [filters.actionTypes.RESET_FILTERS]: resetFilters,\n [filters.actionTypes.CHANGE_SEARCH_QUERY]: changeSearchQuery,\n [filters.actionTypes.CHANGE_RESERVATION_PRICE]: changeReservationPrice,\n [filters.actionTypes.SET_FILTERS_FOR_PAGE]: setFiltersForPage,\n [filters.actionTypes.LOCATION_CHANGE]: locationChange,\n [filters.actionTypes.SHOW_HIDE_FILTERS]: showHideFilterToolbar\n };\n\n if (!reducers[action.type]) {\n return state;\n } else {\n return reducers[action.type]();\n }\n}\n\nexport const selectFiltersState = state => state.views.myTradera.filters;\n","export default {\n MODAL: {\n OPEN: 'open',\n CLOSED: 'closed'\n },\n MENU: {\n OPEN: 'open',\n CLOSED: 'closed'\n },\n ITEM_LAYOUT: {\n GRID: 'layout-grid',\n LIST: 'layout-list'\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction TimeLeft(props) {\n const {\n className = '',\n isTimeLeftBelowWarningLimit,\n timeLeftText,\n icon,\n ...otherProps\n } = props;\n\n if (!timeLeftText) {\n return null;\n }\n\n return (\n \n {icon}\n {timeLeftText}\n \n );\n}\n\nTimeLeft.propTypes = {\n timeLeftText: PropTypes.string.isRequired,\n isTimeLeftBelowWarningLimit: PropTypes.bool.isRequired\n};\n\nexport default TimeLeft;\n","export { 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';\n\nvar initData = 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 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} = 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\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 {\n PREFERRED_LANGUAGE,\n REGION_PICKER_DISMISSED,\n SHIPPING_COUNTRY\n} from 'tradera-constants/cookies';\nimport cookieUtil from 'tradera-utils/cookie';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\n\nconst createInitData = initData => {\n const localizationRegionPickerEnabled =\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches['localization-region-picker'];\n const regionPickerDismissed =\n GdprSettings.isFunctionalEnabled() &&\n cookieUtil.hasCookie(REGION_PICKER_DISMISSED);\n const preferredLanguage =\n GdprSettings.isFunctionalEnabled() &&\n cookieUtil.hasCookie(PREFERRED_LANGUAGE);\n const preferredShippingCountry = initData?.isLoggedIn\n ? initData.memberCountryCodeIso2\n : GdprSettings.isFunctionalEnabled() &&\n cookieUtil.hasCookie(SHIPPING_COUNTRY) &&\n cookieUtil.readCookie(SHIPPING_COUNTRY);\n\n return {\n availableShippingCountries: [],\n isLoadingAvailableShippingCountries: false,\n hasLoadedAvailableShippingCountries: false,\n shippingCountry: { countryCodeIso2: preferredShippingCountry || 'SE' },\n localizationRegionPickerEnabled:\n localizationRegionPickerEnabled || null,\n regionPickerDismissed: regionPickerDismissed || null,\n preferredLanguage: preferredLanguage || null\n };\n};\n\nexport default createInitData;\n","import { createSlice } from '@reduxjs/toolkit';\nimport initialState from './initial-state';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { REGION_PICKER_DISMISSED } from 'tradera-constants/cookies';\n\nconst shippingRegionSlice = createSlice({\n name: 'shippingRegion',\n initialState: {},\n reducers: {\n initialize: (_state, { payload }) => {\n return initialState(payload);\n },\n setShippingCountry: (state, action) => {\n const { countryCodeIso2 } = action.payload;\n state.shippingCountry = {\n countryCodeIso2: toUpperCase(countryCodeIso2)\n };\n },\n setDefaultShippingCountry: state => {\n // Remove name\n state.shippingCountry = { countryCodeIso2: 'SE' };\n },\n setAvailableShippingCountries: (state, action) => {\n state.availableShippingCountries = action.payload.shippingCountries;\n state.hasLoadedAvailableShippingCountries = true;\n state.isLoadingAvailableShippingCountries = false;\n },\n beginLoadingAvailableShippingOptions: state => {\n state.isLoadingAvailableShippingCountries = true;\n },\n dismissLocalizationRegionPicker: {\n reducer: state => {\n state.localizationRegionPickerEnabled = false;\n },\n prepare: () => {\n cookieUtil.createCookie(REGION_PICKER_DISMISSED, true);\n return {};\n }\n }\n }\n});\n\nconst toUpperCase = (countryCodeIso2 = '') => countryCodeIso2.toUpperCase();\n\nexport const {\n initialize,\n setShippingCountry,\n setAvailableShippingCountries,\n beginLoadingAvailableShippingOptions,\n dismissLocalizationRegionPicker,\n setDefaultShippingCountry\n} = shippingRegionSlice.actions;\nexport default shippingRegionSlice.reducer;\n","export default {\n DEFAULT_ACTION: 'member/default',\n INITIALIZE: 'MEMBER/INITIALIZE',\n SET_IS_FETCHING_GEOLOCATION: 'MEMBER/SET_IS_FETCHING_GEOLOCATION',\n SET_GEOLOCATION: 'MEMBER/SET_GEOLOCATION',\n FAILED_LOADING_GEOLOCATION: 'MEMBER/FAILED_LOADING_GEOLOCATION',\n SET_MEMBER_HERO_IMAGE: 'MEMBER/SET_MEMBER_HERO_IMAGE'\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 history 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\nexport { history };\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(history);\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 { setCookie } from './cookies';\nimport { selectCookiesState } from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\n\n//jshint module : true\nconst actionTypes = {\n SELECT_RADIO_BAR: 'SET_SELECTED_RADIO_BAR',\n GET_SEARCH: 'GET_SEARCH_RESULTS',\n SET_PAGE_SIZE: 'SET_PAGE_SIZE',\n CHANGE_SORT_VALUE: 'CHANGE_SORT_VALUE',\n CHANGE_TYPE_VALUE: 'CHANGE_TYPE_VALUE',\n CHANGE_SORT_ORDER: 'CHANGE_SORT_ORDER',\n CHANGE_SORTING_TO_BEST_MATCH: 'CHANGE_SORTING_TO_BEST_MATCH',\n SET_DATE_FROM: 'SET_DATE_FROM',\n SET_DATE_TO: 'SET_DATE_TO',\n CHANGE_PAGE: 'CHANGE_PAGE',\n CHANGE_SEARCH_QUERY: 'CHANGE_SEARCH_QUERY',\n CHANGE_RESERVATION_PRICE: 'CHANGE_RESERVATION_PRICE',\n RESET_FILTERS: 'RESET_FILTERS_TO_DEFAULT',\n SET_FILTERS_FROM_ROUTER: 'SET_FILTERS_BASED_ON_ROUTER',\n LOCATION_CHANGE: 'ROUTER_DISPATCHED_ROUTE_CHANGE',\n SET_FILTERS_FOR_PAGE: 'SET_FILTERS_BASED_ON_PAGE',\n SET_FILTERS_BY_STATE: 'SET_FILTERS_BASED_ON_STATE',\n SET_SINGLE_FILTER: 'SET_SINGLE_FILTER_VALUE',\n RESET_DATE_RANGE_TO: 'RESET_DATE_RANGE_TO',\n RESET_DATE_RANGE_FROM: 'RESET_DATE_RANGE_FROM',\n SHOW_HIDE_FILTERS: 'SHOW_HIDE_FILTER_TOOLBAR'\n};\n\nconst updatePageSize = value => ({\n type: actionTypes.SET_PAGE_SIZE,\n payload: value\n});\n\nconst setPageSize = value => dispatch => {\n dispatch(setCookie('ITEMS_PER_PAGE', value));\n dispatch(updatePageSize(value));\n return {\n type: actionTypes.setPageSize,\n payload: value\n };\n};\n\nconst selectTypeChange = value => ({\n type: actionTypes.CHANGE_TYPE_VALUE,\n payload: value\n});\n\nconst selectSortChange = (sort, sortOrder) => ({\n type: actionTypes.CHANGE_SORT_VALUE,\n payload: {\n sort: sort,\n sortOrder: sortOrder\n }\n});\n\nconst changeSortingToBestMatch = (sort, sortOrder) => ({\n type: actionTypes.CHANGE_SORTING_TO_BEST_MATCH,\n payload: {\n sort: sort,\n sortOrder: sortOrder\n }\n});\n\nconst setDateFrom = value => ({\n type: actionTypes.SET_DATE_FROM,\n payload: value\n});\n\nconst setDateTo = value => ({\n type: actionTypes.SET_DATE_TO,\n payload: value\n});\n\nconst changeSortOrder = () => ({\n type: actionTypes.CHANGE_SORT_ORDER\n});\n\nconst changePage = value => ({\n type: actionTypes.CHANGE_PAGE,\n page: value\n});\n\nconst changeSearchQuery = value => ({\n type: actionTypes.CHANGE_SEARCH_QUERY,\n payload: value\n});\n\nconst selectReservationPriceChange = value => ({\n type: actionTypes.CHANGE_RESERVATION_PRICE,\n payload: value\n});\n\nconst setFiltersFromRouter = params => ({\n type: actionTypes.LOCATION_CHANGE,\n payload: params\n});\n\nconst updateFiltersForSelectedPage = filters => ({\n type: actionTypes.SET_FILTERS_FOR_PAGE,\n payload: filters\n});\n\nconst setFiltersForSelectedPage = filters => (dispatch, getState) => {\n const pageSize = selectCookiesState(getState()).ITEMS_PER_PAGE;\n if (pageSize) {\n filters.newFilters.modifiers.paging.size = pageSize;\n }\n\n dispatch(updateFiltersForSelectedPage(filters));\n};\n\nconst filterByState = value => ({\n type: actionTypes.SET_FILTERS_BY_STATE,\n payload: value\n});\n\nconst setSingleFilterValue = (filter, value) => ({\n type: actionTypes.SET_SINGLE_FILTER,\n payload: {\n filter,\n value\n }\n});\n\nconst 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 dispatch(\n setFiltersFromRouter(qs.parse(location.search.replace('?', '')))\n );\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 dispatch(\n setFiltersFromRouter(qs.parse(location.search.replace('?', '')))\n );\n dispatch(myTraderaItemActions.updateURL());\n }\n }\n};\n\nconst resetFilters = () => ({\n type: actionTypes.RESET_FILTERS\n});\n\nconst resetDateRangeTo = () => ({\n type: actionTypes.RESET_DATE_RANGE_TO\n});\n\nconst resetDateRangeFrom = () => ({\n type: actionTypes.RESET_DATE_RANGE_FROM\n});\n\nconst showHideFilterToolbar = showCookies => dispatch => {\n dispatch(\n setCookie(\n 'SHOW_FILTERS',\n showCookies === 'visible' ? 'hidden' : 'visible'\n )\n );\n};\n\nexport default {\n actionTypes,\n resetDateRangeTo,\n resetDateRangeFrom,\n resetFilters,\n setPageSize,\n selectTypeChange,\n selectSortChange,\n changeSortingToBestMatch,\n setDateTo,\n setDateFrom,\n setSingleFilterValue,\n changeSortOrder,\n changePage,\n changeSearchQuery,\n updateFiltersForSelectedPage,\n selectReservationPriceChange,\n setFiltersFromRouter,\n setFiltersForSelectedPage,\n filterByState,\n updatePageSize,\n historyLocationDidUpdate,\n showHideFilterToolbar\n};\n","export const selectFeatureSwitches = state => state.environment.featureSwitches;\n","import { selectFeatureSwitches } from 'tradera-state/environment/selectors';\nimport { selectShippingRegionCountryCodeIso2 } from 'tradera-state/shipping-region/selectors';\n\nexport const selectIsLoggedIn = state => state.member?.isLoggedIn;\n\nexport const selectGeolocation = state => state.member?.geolocation;\n\nexport const selectMemberId = state => state.member?.memberId;\nexport const selectMemberCountryCodeIso2 = state =>\n state.member?.memberCountryCodeIso2;\n\nexport const selectIsOutsideSweden = state =>\n state.member?.geolocation?.isoCode &&\n state.member?.geolocation?.isoCode.toLowerCase() !== 'se';\n\nexport const selectIsFetchingGeolocation = state =>\n state.member?.isFetchingGeolocation;\n\nexport const showDanishFromCountry = state => {\n const fromCountry =\n selectShippingRegionCountryCodeIso2(state) ||\n selectMemberCountryCodeIso2(state);\n return (\n selectFeatureSwitches(state)['shipping-from-country'] &&\n fromCountry === 'DK'\n );\n};\n","import { createBrowserHistory } from 'history';\n\nconst history = createBrowserHistory();\nexport default history;\n","export default {\n AUCTION: 'Auction',\n AUCTION_BIN: 'AuctionBin',\n PURE_BIN: 'PureBin',\n SHOP_ITEM: 'ShopItem'\n};\n","import axios from 'axios';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n utilizeCancelToken,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\nimport cookieUtil from 'tradera-utils/cookie';\n\nimport { FORCE_GEO_DEV } from 'tradera-constants/cookies';\n\nexport const fetchGeolocation = () => {\n const { cancel, cancelToken } = utilizeCancelToken('fetchGeolocation');\n\n if (cancel) cancel();\n\n const search = (window && window.location && window.location.search) || '';\n return axios\n .get(getGeoPublicApiUrl(search), {\n cancelToken\n })\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const getGeoPublicApiUrl = search => {\n const match = search.match(/force-geo-(.*?)-dev/);\n\n if (match) {\n cookieUtil.createCookie(FORCE_GEO_DEV, match[1]);\n return `${ENDPOINTS.GEO_PUBLIC_API_URL}/${match[1]}`;\n }\n\n const forceGeoDevCookie = cookieUtil.readCookie(FORCE_GEO_DEV);\n if (forceGeoDevCookie) {\n return `${ENDPOINTS.GEO_PUBLIC_API_URL}/${forceGeoDevCookie}`;\n }\n\n return ENDPOINTS.GEO_PUBLIC_API_URL;\n};\n","import { nullifyUndefinedProperties } from 'tradera-utils/object';\n\nexport default initData => {\n const {\n cleanedMemberAlias,\n facebookId,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberCountry,\n memberCountryCodeIso2,\n memberEmail,\n memberFirstName,\n memberId,\n memberHeroImage,\n memberLastName,\n memberBirthdate,\n paymentSettings = {}\n } = initData;\n return nullifyUndefinedProperties({\n cleanedMemberAlias,\n facebookId,\n geolocation: null,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberCountry,\n memberCountryCodeIso2,\n memberEmail,\n memberFirstName,\n memberId,\n memberHeroImage,\n memberLastName,\n memberBirthdate,\n paymentSettings\n });\n};\n","import actionTypes from './action-types';\nimport { fetchGeolocation } from './api';\nimport { setCurrencyIfNotChosen } from 'tradera-state/multi-currency';\nimport { removeShippingCountryCookieIfSwedish } from 'tradera-state/shipping-region/actions';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { logger } from 'packages/index';\nimport getInitialState from './initial-state';\n\nexport const initialize = initData => ({\n type: actionTypes.INITIALIZE,\n payload: getInitialState(initData)\n});\n\nexport const defaultAction = data => ({\n type: actionTypes.DEFAULT_ACTION,\n payload: data\n});\n\nconst setIsFetchingGeolocation = isFetchingGeolocation => ({\n type: actionTypes.SET_IS_FETCHING_GEOLOCATION,\n payload: {\n isFetchingGeolocation\n }\n});\n\nconst setGeolocation = payload => ({\n type: actionTypes.SET_GEOLOCATION,\n payload\n});\n\nconst failedLoadingGeolocation = () => ({\n type: actionTypes.FAILED_LOADING_GEOLOCATION\n});\n\nexport const setMemberHeroImage = payload => ({\n type: actionTypes.SET_MEMBER_HERO_IMAGE,\n payload\n});\n\nexport const getGeolocation = () => dispatch => {\n dispatch(setIsFetchingGeolocation(true));\n return fetchGeolocation()\n .then(response => {\n const { data } = response;\n dispatch(setGeolocation(data));\n dispatch(setCurrencyIfNotChosen(data.currency));\n dispatch(setIsFetchingGeolocation(false));\n dispatch(removeShippingCountryCookieIfSwedish(data));\n return data;\n })\n .catch(error => {\n switch (error.message) {\n case API_ERRORS.ABORTED:\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n break;\n default:\n logger(error);\n break;\n }\n dispatch(failedLoadingGeolocation());\n });\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","export const LIST_VIEW_TYPES = {\n BASIC: 'Basic',\n NORMAL: 'Normal',\n PICK_LIST: 'PickList'\n};\n\nexport const PAGE_LIST_TYPES = {\n BUYER_ACTIVE_ITEMS: 'BUYER_ACTIVE_ITEMS',\n BUYER_PURCHASES: 'BUYER_PURCHASES',\n BUYER_ITEMS_LOST: 'BUYER_ITEMS_LOST',\n SELLER_ACTIVE: 'SELLER_ACTIVE',\n SELLER_SOLD: 'SELLER_SOLD',\n SELLER_NOT_SOLD: 'SELLER_NOT_SOLD'\n};\n\nexport const PAGE_BULK_ACTIONS = {\n ACTIVE_CANCEL: 'ActiveItems_Cancel',\n UNSOLD_RESTART: 'UnsoldItems_Restart',\n BUYER_MARK_PAID: 'Buyer_MarkPaid',\n BUYER_SHOW_ACTIVE: 'ShowActive',\n BUYER_HIDE_ACTIVE: 'HideActive',\n PURCHASES_SHOW: 'PurchasesShow'\n};\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 COMBINED_SHIPPING_ALERT_SOLD: 'hideCombinedShippingAlert_sold',\n COMBINED_SHIPPING_ALERT_BOUGHT: 'hideCombinedShippingAlert_bought',\n COMBINED_SHIPPING_ALERT_SYI: 'hideCombinedShippingAlert_syi',\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 './logger';\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 = 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';\nimport './dialog-modal.scss';\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","export const isSwedenCountryCodeOrUndefined = countryCodeIso2 =>\n countryCodeIso2 === undefined ||\n countryCodeIso2 === null ||\n countryCodeIso2.toLowerCase() === 'se';\n\nexport const isSwedenCountryNameOrUndefined = countryName =>\n countryName === undefined ||\n countryName === null ||\n countryName.toLowerCase() === 'sweden';\n\nexport const isDenmarkCountryCode = countryCodeIso2 =>\n !isSwedenCountryCodeOrUndefined(countryCodeIso2) &&\n countryCodeIso2.toLowerCase() === 'dk';\n\nexport const areCountryCodesIso2Equal = (first, second) =>\n (first || 'SE').toUpperCase() === (second || 'SE').toUpperCase();\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","/* eslint-disable */\nimport {\n CATEGORIZED_COOKIES,\n COOKIE_DEFAULT_CATEGORY\n} from 'tradera-constants/cookies';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\nimport logger from 'packages/logger';\n\nclass CookieUtil {\n /**\n * @returns GdprSettings\n */\n _getGdprSettings() {\n if (typeof this.gdpr === 'undefined') {\n this.gdpr = GdprSettings;\n }\n return this.gdpr;\n }\n\n segment(name, value) {\n return value ? '; ' + name + '=' + value : '';\n }\n\n convertToExpiresStr(expires) {\n let expiresStr = '';\n\n switch (expires.constructor) {\n case Number:\n expiresStr =\n expires === Infinity\n ? '; expires=Fri, 31 Dec 9999 23:59:59 GMT'\n : '; max-age=' + expires * 24 * 60 * 60;\n break;\n case String:\n expiresStr = '; expires=' + expires;\n break;\n case Date:\n expiresStr = '; expires=' + expires.toUTCString();\n break;\n }\n\n return expiresStr;\n }\n\n createCookie(cookieKey, cookieValue, expires, path, domain, secure) {\n let expiresStr = '';\n\n if (\n !cookieKey ||\n /^(?:expires|max\\-age|path|domain|secure)$/i.test(cookieKey)\n ) {\n return false;\n }\n\n // check gdpr for cookie category\n let category = CATEGORIZED_COOKIES[cookieKey];\n if (typeof category === 'undefined') {\n logger(`No category set for cookie ${cookieKey}`);\n category = COOKIE_DEFAULT_CATEGORY;\n }\n if (!this._getGdprSettings().isCategoryEnabled(category)) {\n // console.info(\n // `Cookie category not enabled: ${cookieKey}, category: ${category}`\n // );\n return false;\n }\n\n // if expired set prepare date string\n if (expires) {\n expiresStr = this.convertToExpiresStr(expires);\n }\n\n // console.info(`setting cookie: ${cookieKey} = ${cookieValue}`);\n window.document.cookie =\n encodeURIComponent(cookieKey) +\n '=' +\n encodeURIComponent(cookieValue) +\n expiresStr +\n this.segment('domain', domain) +\n this.segment('path', path || '/') +\n this.segment('secure', secure);\n\n return true;\n }\n\n readCookie(key) {\n return (\n decodeURIComponent(\n window.document.cookie.replace(\n new RegExp(\n '(?:(?:^|.*;)\\\\s*' +\n encodeURIComponent(key).replace(\n /[\\-\\.\\+\\*]/g,\n '\\\\$&'\n ) +\n '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$'\n ),\n '$1'\n )\n ) || null\n );\n }\n\n hasCookie(key) {\n return new RegExp(\n '(?:^|;\\\\s*)' +\n encodeURIComponent(key).replace(/[\\-\\.\\+\\*]/g, '\\\\$&') +\n '\\\\s*\\\\='\n ).test(window.document.cookie);\n }\n\n eraseCookie(key, path, domain) {\n if (!key || !this.readCookie(key)) {\n return false;\n }\n\n window.document.cookie =\n encodeURIComponent(key) +\n '=; expires=Thu, 01 Jan 1970 00:00:01 GMT' +\n this.segment('domain', domain) +\n this.segment('path', path || '/');\n\n return true;\n }\n}\n\nexport default new CookieUtil();\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 case actionTypes.SET_IS_FETCHING_GEOLOCATION: {\n const { payload } = action;\n return {\n ...state,\n isFetchingGeolocation: payload.isFetchingGeolocation\n };\n }\n case actionTypes.SET_GEOLOCATION: {\n const { payload } = action;\n return {\n ...state,\n geolocation: payload\n };\n }\n case actionTypes.FAILED_LOADING_GEOLOCATION: {\n return {\n ...state,\n geolocation: null,\n isFetchingGeolocation: false\n };\n }\n case actionTypes.SET_MEMBER_HERO_IMAGE: {\n return {\n ...state,\n memberHeroImage: {\n max: action.payload,\n med: action.payload,\n min: action.payload\n }\n };\n }\n default:\n return state;\n }\n};\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","import cookieUtil from 'tradera-utils/cookie';\nimport { resolveCode, resolveCurrency } from './helpers';\n\nexport default initData => {\n const enabled =\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches['multi-currency'] &&\n initData.memberCountry !== 'Sverige';\n const currencies = initData.currencies || [];\n const initialCurrencyCode = resolveCode(\n enabled,\n cookieUtil.readCookie('preferred_currency'),\n currencies\n );\n\n return {\n enabled,\n currencies,\n preferredCurrency: resolveCurrency(\n enabled,\n initialCurrencyCode,\n currencies\n )\n };\n};\n","import actionTypes from './action-types';\nimport { Analytics } from 'packages';\nimport cookieUtil from 'tradera-utils/cookie';\nimport getInitialState from './initial-state';\n\nexport const initialize = initData => ({\n type: actionTypes.INITIALIZE,\n payload: getInitialState(initData)\n});\n\nexport const setPreferredCurrency = currencyCode => {\n Analytics.trackEvent({\n category: 'Settings',\n action: 'Currency',\n label: currencyCode\n });\n\n createPreferredCurrencyCookie(currencyCode);\n\n return {\n type: actionTypes.SET_PREFERRED_CURRENCY,\n payload: { currencyCode: currencyCode }\n };\n};\n\nexport const setCurrencyIfNotChosen = currencyCode => dispatch => {\n if (cookieUtil.readCookie('preferred_currency') || currencyCode === 'SEK') {\n return;\n }\n\n dispatch(setPreferredCurrency(currencyCode));\n};\n\nconst yearInMilliseconds = 1000 * 60 * 60 * 24 * 365;\nconst createPreferredCurrencyCookie = currencyCode => {\n cookieUtil.createCookie(\n 'preferred_currency',\n currencyCode,\n new Date(new Date().getTime() + yearInMilliseconds)\n );\n};\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/action-creators';\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};\n\nexport const PAYMENT_OPTION_STATUS = {\n AVAILABLE: 'Available',\n UNAVAILABLE_DUE_TO_AMOUNT: 'UnavailableDueToAmount'\n};\n\nexport default () => {\n return {\n buyerMember: null,\n checkoutSummary: {\n hasError: false,\n isFetching: false\n },\n hasError: false,\n items: null,\n isFetching: false,\n payment: {\n hasError: false,\n isFetching: false,\n paymentOptions: null,\n selectedPayment: null,\n paymentMethodData: null\n },\n sellerMember: null,\n modal: {\n open: '',\n status: MODAL_STATUS.START\n },\n showDisableOverlay: false,\n ongoingPaymentAttempt: null,\n shippingInfo: {\n shippingOptions: null,\n shippingPriceRange: null,\n shippingDiscount: null\n },\n combinedShippingInfo: null,\n purchaseOrder: null\n };\n};\n","import { selectFiltersState } from 'tradera-apps/my-tradera/app/state/reducers/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';\n\nimport myTraderaActions from './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 { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectCookiesState } from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport { selectFiltersState } from 'tradera-apps/my-tradera/app/state/reducers/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';\n\n/**\n * @param {function} dispatch dispatch redux action\n * @param {err} error error relayed from asynch call\n */\nconst handleError = (dispatch, error) => {\n dispatch(myTraderaActions.searching(false));\n dispatch(myTraderaActions.error(true));\n logger(error);\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 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 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(myTraderaActions.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(myTraderaActions.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 scrollToInitialScroll = 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(myTraderaActions.searching(true));\n dispatch(myTraderaActions.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 (scrollToInitialScroll === true) {\n myTraderaActions.scrollToInitialScroll();\n }\n dispatch(myTraderaActions.searching(false));\n return dispatch(myTraderaActions.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(myTraderaActions.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(myTraderaActions.searching(true));\n fetch(URLS.BUYER_ACTIVE_ITEMS_HIDE, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(removeItems(itemIds));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\n// From the more-menu\nconst buyerActiveItemsShowItems = itemIds => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.BUYER_ACTIVE_ITEMS_SHOW, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(removeItems(itemIds));\n dispatch(myTraderaActions.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(myTraderaActions.searching(true));\n fetch(URLS.SELLER_MARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersMarkAsPaidBySeller(\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n )\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst markPurchaseOrdersAsPaidByBuyer = (\n purchaseOrderIds,\n listViewType\n) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.BUYER_MARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersMarkAsPaidByBuyer(purchaseOrderIds, listViewType)\n );\n dispatch(myTraderaActions.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(myTraderaActions.searching(true));\n fetch(URLS.SELLER_UNMARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersUnmarkAsPaidBySeller(\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n )\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst unmarkPurchaseOrdersAsPaidByBuyer = (\n purchaseOrderIds,\n listViewType\n) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.BUYER_UNMARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersUnmarkAsPaidByBuyer(\n purchaseOrderIds,\n listViewType\n )\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingUnmarkAsShippingBooked = (\n purchaseOrderIds,\n listViewType\n) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.UNMARK_BOOKED, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n transactionsUnmarkAsShippingBooked(\n purchaseOrderIds,\n listViewType\n )\n );\n dispatch(myTraderaActions.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(myTraderaActions.searching(true));\n fetch(URLS.DELETE_SHIPMENT, {\n body: JSON.stringify({ shipmentId: shipmentId })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(transactionDeleteShipment(purchaseOrderId, listViewType));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingMarkAsShipped = (transactionIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.MARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n transactionsMarkAsShippedBySeller(transactionIds, listViewType)\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingUnmarkAsShipped = (transactionIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n\n fetch(URLS.UNMARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n transactionsUnmarkAsShippedBySeller(\n transactionIds,\n listViewType\n )\n );\n dispatch(myTraderaActions.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(myTraderaActions.searching(true));\n fetch(URLS.SELLER_SHOW, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersShownBySeller(purchaseOrderIds, listViewType)\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst buyerUnhideTransaction = (transactionIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.BUYER_SHOW, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(transactionsShownByBuyer(transactionIds, listViewType));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellerHideTransaction = (purchaseOrderIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.SELLER_HIDE, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersHiddenBySeller(purchaseOrderIds, listViewType)\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst buyerHideTransaction = (transactionIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.BUYER_HIDE, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(transactionsHiddenByBuyer(transactionIds, listViewType));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellerUnhideUnsold = (itemIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.UNSOLDSHOW, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(unsoldItemsShown(itemIds, listViewType));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellerHideUnsold = (itemIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.UNSOLDHIDE, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(unsoldItemsHidden(itemIds, listViewType));\n dispatch(myTraderaActions.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 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","import myTraderaItemActions from '../state/actions/my-tradera-items';\nimport dayjs from 'dayjs';\nimport featureToggles from '../utils/feature-toggles';\nimport { getMessagingThreadLink } from './messaging-helpers';\nimport myTraderaActions from '../state/actions/my-tradera';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport { openModal } from 'tradera-state/ui/action-creators';\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 { getCurrentLanguage } from 'tradera-lang/boot-languages';\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\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(\n myTraderaActions.openChangeShipping(\n item.transaction.purchaseOrderId\n )\n );\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 myTraderaActions.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 !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.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(\n myTraderaActions.openSetDiscount(\n item.transaction.purchaseOrderId\n )\n ),\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(\n myTraderaActions.openSetDiscount(\n item.transaction.purchaseOrderId\n )\n ),\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 const shareLinkHref = toLocalizedUrl(\n new URL(item.itemUrl, window.location.origin).href,\n getCurrentLanguage()\n );\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 => {\n dispatch(\n myTraderaActions.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 myTraderaActions.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 myTraderaActions from '../state/actions/my-tradera';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport featureToggles from '../utils/feature-toggles';\nimport { getMessagingThreadLink } from './messaging-helpers';\nimport { openModal } from 'tradera-state/ui/action-creators';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from '../components/leave-feedback/single-feedback-dialog';\nimport { isNormalListViewType } from './item-helper';\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 myTraderaActions.openModal({\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 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: () => true\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 myTraderaActions.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 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} 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 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_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","export default {\n list: [],\n topLevelCategories: [],\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.RECEIVE_CATEGORY_LIST:\n return {\n ...state,\n list: action.payload,\n isFetching: false,\n error: null\n };\n case actionTypes.RECEIVE_TOP_LEVEL_CATEGORIES:\n return {\n ...state,\n topLevelCategories: 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 case actionTypes.HANDLE_TOP_LEVEL_CATEGORIES_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 default (state = {}, action) => {\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';\nimport { resolveCurrency } from './helpers';\n\nexport default (state = {}, action) => {\n const initialize = () => {\n return {\n ...action.payload\n };\n };\n const setPreferredCurrency = () => {\n const { enabled, currencies } = state;\n return {\n ...state,\n preferredCurrency: resolveCurrency(\n enabled,\n action.payload.currencyCode,\n currencies\n )\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.SET_PREFERRED_CURRENCY]: setPreferredCurrency\n };\n\n if (action.type === actionTypes.INITIALIZE) {\n return initialize();\n }\n\n return !state.enabled || !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 'RESET_PUBLISH_STATE':\n return {\n ...state,\n publishedItem: null,\n publishedItemPendingVip: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\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_ERRORS':\n state = { ...action.errors };\n break;\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';\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 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 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} from './shipping-selectors';\nimport { ensureGoodShippingOptions } from './ensure-good-shipping-options';\nimport { validate } from './validate';\nimport { getSelectedShippingOptions } from './get-selected-shipping-options';\n\nconst initialState = validate({\n primaryShippingProviders: [],\n secondaryShippingProviders: [],\n validationErrors: {},\n globalValidationError: null,\n primaryValidationError: null,\n secondaryValidationError: null,\n secondaryShippingOptionOpen: false,\n selectedShippingOptions: [],\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\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 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 state.selectedShippingOptions = getSelectedShippingOptions(state);\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_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});\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';\nimport { getCurrentLanguage } from 'tradera-lang/boot-languages';\n\ndayjs.locale(getCurrentLanguage());\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 summaryText: '',\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 getCustomEndTime = state => {\n if (!state.customEndTimeHour || !state.customEndTimeMinute) {\n return null;\n }\n\n return state.customEndTimeHour + ':' + state.customEndTimeMinute;\n};\n\nfunction resolveSummaryText(days, customEndTime, isPureBin, isChangeItem) {\n const durationDays = isPureBin ? 30 : days;\n const localizations = [['syi_summary_duration_days', { durationDays }]];\n if (!isChangeItem) {\n localizations.push([\n 'syi_summary_duration_endDate',\n {\n endDate: dayjs()\n .add(durationDays, 'days')\n .format('ddd D MMM')\n }\n ]);\n }\n if (customEndTime) {\n localizations.push([\n isChangeItem\n ? 'syi_summary_duration_changed_customEndTime'\n : 'syi_summary_duration_default_customEndTime',\n { customEndTime }\n ]);\n }\n if (!isChangeItem) {\n localizations.push(['syi_summary_duration_closingParenthesis']);\n }\n return localizations;\n}\n\nconst getValidationErrors = (\n durationDays,\n customEndTime,\n allowZeroDayAuctions\n) => {\n let customEndTimeError = null;\n let customHour = dayjs().hour();\n let customMinute = dayjs().minute();\n\n if (customEndTime) {\n const splitTime = customEndTime.split(':', 2);\n customHour = splitTime[0];\n customMinute = splitTime[1];\n }\n\n if (allowZeroDayAuctions) {\n let endDate = dayjs()\n .startOf('date')\n .hour(customHour)\n .minute(customMinute)\n .add(durationDays, 'day');\n const earliestEndDate = dayjs().add(5, 'minute');\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 (customEndTime) {\n let endDate = dayjs()\n .startOf('date')\n .hour(customHour)\n .minute(customMinute)\n .add(durationDays, 'day');\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 isPureBin,\n allowZeroDayAuctions,\n isChangeItem\n) => {\n const summaryText = resolveSummaryText(\n durationDays,\n customEndTime,\n isPureBin,\n isChangeItem\n );\n const validationErrors = getValidationErrors(\n durationDays,\n customEndTime,\n allowZeroDayAuctions\n );\n return {\n ...state,\n durationDays,\n customEndTime,\n summaryText,\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 summaryText = resolveSummaryText(\n durationDays,\n getCustomEndTime(state),\n action.isPureBin,\n action.isChangeItem\n );\n const validationErrors = getValidationErrors(\n durationDays,\n getCustomEndTime(state),\n state.allowZeroDayAuctions\n );\n return {\n ...state,\n durationDays,\n summaryText,\n validationErrors\n };\n }\n case 'SET_CUSTOM_END_TIME': {\n const isPureBin = action.isPureBin;\n const summaryText = resolveSummaryText(\n state.durationDays,\n action.payload,\n isPureBin,\n action.isChangeItem\n );\n const validationErrors = getValidationErrors(\n state.durationDays,\n action.payload,\n state.allowZeroDayAuctions\n );\n let customEndTimeHour = null;\n let customEndTimeMinute = null;\n if (typeof action.payload === 'string') {\n let customEndTime = action.payload.split(':');\n customEndTimeHour = customEndTime[0];\n customEndTimeMinute = customEndTime[1];\n }\n return {\n ...state,\n customEndTimeHour: customEndTimeHour,\n customEndTimeMinute: customEndTimeMinute,\n isCustomEndTimeVisible: !!action.payload,\n summaryText,\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 action.isPureBin,\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 getCustomEndTime(state),\n state.allowZeroDayAuctions\n );\n return { ...state, validationErrors };\n }\n case 'SET_IS_PURE_BIN_SELECTED': {\n const durationDays = state.durationDays;\n const customEndTime = getCustomEndTime(state);\n const summaryText = resolveSummaryText(\n durationDays,\n customEndTime,\n action.isPureBinSelected,\n action.isChangeItem\n );\n return { ...state, summaryText };\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(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","import { filterSelectableSuggestions } 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 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 suggestedAttributes: payload.suggestedAttributes,\n selectableSuggestedAttributes: filterSelectableSuggestions(\n payload.suggestedAttributes,\n state.categoryAttributes\n ),\n suggestionsExtractorType: payload.suggestionsExtractorType\n };\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 updateSelectableImageToColorSuggestedAttributes = newState => {\n newState.selectableImageToColorSuggestedAttributes = filterSelectableSuggestions(\n newState.imageToColorSuggestedAttributes,\n newState.categoryAttributes\n );\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 return {\n ...state,\n imageToColorSuggestedAttributes:\n initialState.imageToColorSuggestedAttributes,\n selectableImageToColorSuggestedAttributes:\n initialState.selectableImageToColorSuggestedAttributes\n };\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 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};\nif (initData.pageName === 'SellItem') {\n reducers.syi = syi;\n}\n\nexport default combineReducers(reducers);\n","import { combineReducers } from 'redux';\n\nimport ads from './ads/reducer';\nimport bankId from './bank-id/reducer';\nimport categories from './categories/reducer';\nimport discover from 'tradera-state/discover/reducer';\nimport { reducer as environment } from './environment/reducer';\nimport initData from './init-data/reducer';\nimport items from './items/reducer';\nimport internationalShipping from './international-shipping/reducer';\nimport language from './language/reducer';\nimport member from './member/reducer';\nimport multiCurrency from './multi-currency/reducer';\nimport page from './page/reducer';\nimport personalisation from './personalisation/reducer';\nimport pushNotifications from './push-notifications/push-notifications-slice';\nimport shippingRegion from './shipping-region/reducer';\nimport ui from './ui/reducer';\nimport views from './views/reducer';\nimport { connectRouter } from 'connected-react-router';\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 });\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","export const selectCurrencies = state => state.multiCurrency.currencies;\n\nexport const selectPreferredCurrency = state =>\n state.multiCurrency.preferredCurrency;\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 {\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 { getCurrentLanguage } from 'tradera-lang/boot-languages';\n\nexport const getTraderaShopProductData = async id => {\n return axiosWithTokenRefresh()\n .get(toLocalizedUrl(`/tradera-shop/${id}.json`, getCurrentLanguage()))\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 { 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 dispatch => {\n dispatch(setIsLoading(true));\n try {\n const { product, item } = await getTraderaShopProductData(urlSlug);\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';\nimport getInitialState from './initial-state';\n\nconst initialize = initData => ({\n type: actionTypes.INITIALIZE,\n payload: getInitialState(initData)\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 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};\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 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","import cookieUtil from 'tradera-utils/cookie';\nimport { SHIPPING_COUNTRY } from 'tradera-constants/cookies';\nimport {\n isSwedenCountryCodeOrUndefined,\n isSwedenCountryNameOrUndefined\n} from 'tradera-utils/countrycode';\n\nconst getInitialCategoryId = initData => {\n if (initData.categoryPath && initData.categoryPath.length > 0) {\n initData.categoryPath.forEach(item => {\n if (item.selected) {\n return item.id;\n }\n });\n }\n return 0;\n};\n\nexport default initData => {\n const { isLoggedIn, memberCountry } = initData;\n return {\n activeBrands: [],\n activeFilters: [],\n attributeFilters: [],\n categoryPath: initData.categoryPath || [],\n currentCategoryId: getInitialCategoryId(initData),\n displayAllowedBuyerRegionFilter:\n (cookieUtil.hasCookie(SHIPPING_COUNTRY) &&\n !isSwedenCountryCodeOrUndefined(\n cookieUtil.readCookie(SHIPPING_COUNTRY)\n )) ||\n (isLoggedIn && !isSwedenCountryNameOrUndefined(memberCountry)),\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';\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 = initData => ({\n type: actionTypes.INITIALIZE,\n payload: initialState(initData)\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","// @ts-check\nimport { BREAKPOINTS, BREAKPOINT_SIZES } from 'tradera-constants/breakpoints';\n\n/**\n * Return breakpoint label for given width\n *\n * @param {int} [width]\n * @returns {string|null}\n */\nfunction getCurrentBreakpoint(width = window.innerWidth) {\n for (let { min, max, name } of Object.values(BREAKPOINT_SIZES)) {\n if (width >= min && width <= max) {\n return name;\n }\n }\n return null;\n}\n\n/**\n * Check if current width is within a given breakpoint range\n *\n * @param {string} name\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isBreakpoint(name, width = window.innerWidth) {\n return (\n width >= BREAKPOINT_SIZES[name].min &&\n width <= BREAKPOINT_SIZES[name].max\n );\n}\n\n/**\n * Check if current width is in a given breakpoint range or below\n *\n * @param {string} name\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isBreakpointOrLower(name, width = window.innerWidth) {\n return width <= BREAKPOINT_SIZES[name].max;\n}\n\n/**\n * Check if current width is in a given breakpoint range or above\n *\n * @param {string} name\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isBreakpointOrHigher(name, width = window.innerWidth) {\n return width >= BREAKPOINT_SIZES[name].min;\n}\n\n/**\n * Check if current breakpoint is classified as desktop (large and above)\n *\n * @returns {boolean}\n */\nfunction isDesktop() {\n return isBreakpointOrHigher(BREAKPOINTS.LG);\n}\n\n/**\n * Check if current breakpoint is classified as tablet (medium)\n *\n * @returns {boolean}\n */\nfunction isTablet() {\n return isBreakpoint(BREAKPOINTS.MD);\n}\n\n/**\n * Check if current breakpoint is classified as mobile (small and below)\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isMobile(width = window.innerWidth) {\n return isBreakpointOrLower(BREAKPOINTS.SM, width);\n}\n\nexport {\n BREAKPOINTS,\n BREAKPOINT_SIZES,\n getCurrentBreakpoint,\n isBreakpoint,\n isBreakpointOrLower,\n isBreakpointOrHigher,\n isDesktop,\n isTablet,\n isMobile\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 allCategories: initData.allCategories || [],\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 = location.pathname.endsWith('new');\nconst queryParams = new URLSearchParams(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 {\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 history 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 showLiveUpdates: false,\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 setVipLiveUpdate: (state, { payload: { showLiveUpdates } }) => {\n state.showLiveUpdates = showLiveUpdates;\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\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(\n viewItemSlice.actions.setVipLiveUpdate({\n showLiveUpdates: itemModel.showLiveUpdates\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 history.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 if (shouldResetInititalState) {\n dispatch(viewItemSlice.actions.resetInitialState());\n }\n try {\n const itemModel = (await getItemApi(itemId)).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 try {\n const result = await placeBidApi(itemId, amount, onLoggedOut);\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 actionTypes = {\n SET: 'COOKIES_SET'\n};\n\nexport const setCookie = (name, value) => ({\n type: actionTypes.SET,\n payload: {\n name: name,\n value: value\n }\n});\n\nexport default {\n actionTypes,\n setCookie\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 { toLocalizedRiotUrl } from './../utils/language';\nconst config =\n window && window.sellingGlobalConfig\n ? { ...window.sellingGlobalConfig }\n : {};\n\nconfig.imageSizeX = 200;\nconfig.imageSizeY = 150;\nconfig.maxTemplates = 100;\nconfig.domainNameCategoryId = 344477;\nconfig.URL_BASE = toLocalizedRiotUrl('/selling/');\nconfig.RIOT_MOUNTPOINT = 'syi';\n\nexport default config;\n"],"sourceRoot":""}