{"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/state/environment/selectors.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/utils/string.js","webpack:///./src/frontend/state/views/cart/reducer.js","webpack:///./src/frontend/state/views/cart/initial-state.js","webpack:///./src/frontend/state/push-notifications/constants.js","webpack:///./src/frontend/apps/my-tradera/app/state/action-types/purchase-order.js","webpack:///./src/frontend/state/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/utils/countries.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/initial-state.js","webpack:///./src/frontend/state/language/reducer.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/state/push-notifications/helpers.js","webpack:///./src/frontend/state/push-notifications/push-notifications-slice.js","webpack:///./src/frontend/state/ads/action-types.js","webpack:///./src/frontend/state/state-initializer.js","webpack:///./src/frontend/state/init-data/actions.js","webpack:///./src/frontend/state/ui/helpers.js","webpack:///./src/frontend/state/ui/reducer.js","webpack:///./src/frontend/components/breakpoint/breakpoint.js","webpack:///./src/frontend/state/categories/action-types.js","webpack:///./src/frontend/constants/transaction-types.js","webpack:///./src/frontend/apps/my-tradera/app/constants/text-strings.js","webpack:///./src/frontend/state/international-shipping/reducer.js","webpack:///./src/frontend/apps/my-tradera/app/state/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/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":["getInitialBadges","messaging","threads","threadsUnread","system","initializeFromInitData","initData","dispatch","headerElement","document","querySelector","cartItemCount","getAttribute","cartSum","messagingBadges","cache","read","CACHE_KEYS","MESSAGING_BADGES","state","isGdprModalOpen","itemLayout","messageThreadCount","messageThreadsUnreadCount","showHeaderSearch","showSearchForm","siteLayout","systemMessages","gdpr","modalOpen","settingsOpen","badges","nullifyUndefinedProperties","categoryDropdownMenu","open","CONSTANTS","MODAL","CLOSED","itemSettings","item","messagingModal","title","src","participating","recipientId","modals","currentModal","notificationOptinModal","modalType","gaLabel","description","tagGroups","profileMenu","redirectUrl","quickView","items","itemIds","currentItem","loading","BankAccountMissing","InvoiceOverdue","InvoiceUnpaid","PayoutFailed","PayoutReadyBankAccountMissing","SwishNumberMissing","videoModal","video","youtubeVideoModal","shareModal","isOpen","settings","getInitialState","cookieUtil","readCookie","GDPR_CONSENT_ALERT_DISMISSED","DEFAULT_COOKIES","key","default","pageName","includes","hasSearch","SYSTEM_MESSAGES","uiActions","initialize","actionTypes","INIT_DATA_LOAD","INIT_DATA_LOADED","UPDATE_PHONENUMBER","INVALID_PHONENUMBER","UPDATE_VERIFYCODE","INVALID_VERIFYCODE","DELETE_PHONENUMBER","SAVE_PHONENUMBER","SWISH_ENABLED","SWISH_ERROR","DELETE_BANK_ACCOUNT","UPDATE_CLEARING_NUMBER","UPDATE_ACCOUNT_NUMBER","BANK_NOT_MATCHED","IGNORE_BANK_NOT_MATCHED","BANK_ACCOUNT_SAVED","INVALID_CLEARINGNUMBER","INVALID_BANKACCOUNTNUMBER","BANK_ERROR","INIT_TINK","CANCEL_TINK","SHOW_BANK_ACCOUNTS","SELECT_BANK_ACCOUNT","TINK_COMPLETED","TINK_ERROR","SKIP_BANKID_AUTH","BEGIN_BANKID_AUTH","CANCEL_BANKID_AUTH","BANKID_IN_PROGRESS","BANKID_COMPLETED","BANKID_ERROR","PAYOUTS_LOADED","PAYOUTS_ERROR","setVerifiedPhoneNumber","a","fetch","method","credentials","headers","response","json","ok","type","payload","logger","saveBankAccount","getState","clearingNumber","selectPaymentsState","bankAccountDetails","newClearingNumber","accountNumber","newAccountNumber","body","JSON","stringify","result","maskedAccountNumber","code","saveTinkBankAccount","account","errorMessage","bankIdAuthenticate","ENDPOINTS","BANK_ID_AUTHENTICATE","purpose","bankIdUserMessage","bankIdVerification","errorCount","bankIdPollProgress","sleep","delay","resolve","setTimeout","BANK_ID_PROGRESS","Date","getTime","isCompleted","tink","bankIdInProgress","loadInitData","toLocalizedUrl","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","URL_LANGUAGES","join","selectAvailableLanguages","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","isServer","sellingGlobalData","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","querySelectorAll","scrollTo","offsetTop","openModal","options","setBreakPoint","breakpoint","TEXT_STRINGS","ERRORS","GENERIC","mobileMenu","forceClose","mobileActions","setMemberMessagingParticipation","toggle","openMessagingModal","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","selectFeatureSwitches","featureSwitches","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","formatUtcDateAsSwedishTimeZoneDate","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","showSuccessToast","SELLER_UNMARK_PAID","purchaseOrdersUnmarkAsPaidBySeller","PURCHASE_ORDER_PAID_BY_SELLER","updatePurchaseOrderPaidByBuyer","BUYER_MARK_PAID","purchaseOrdersMarkAsPaidByBuyer","BUYER_UNMARK_PAID","purchaseOrdersUnmarkAsPaidByBuyer","PURCHASE_ORDER_PAID_BY_BUYER","runPurchaseOrders","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","removeBannedCountries","setAvailableShippingCountries","onLocalizationShippingRegionSelected","currencyCode","Analytics","trackEvent","category","label","setPreferredCurrency","setPreferredLanguage","localizationRegionPickerEnabled","BREAKPOINTS","XS","SM","MD","LG","XL","BREAKPOINT_SIZES","BPOINT","bp","index","entries","min","max","checkoutSlice","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","errors","ELASTIC_MYTRADERA","isBuyerOrderInformationEnabled","isDisputesEntranceEnabled","isLeaveFeedbackReactEnabled","isMyTraderaElasticEnabled","isMessagingEnabled","isMessagingBuyerButtonsEnabled","isMessagingSellerButtonsEnabled","downloadCsvPayouts","isInrPurchaseOrderEnabled","isUpiPurchaseOrderEnabled","isPennybridgeCharitiesEnabled","isShippingCheckoutEditChangeProviderEnabled","isSyiShippingAlertPriceIncreaseEnabled","isShippingCheckoutSwishHandelPaymentReactEnabled","isShippingCheckoutPaymentInvoiceReactEnabled","isShippingCheckoutOverviewReact","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","traderaShop","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","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","SET_HAS_SEARCH","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","capitalize","cartSlice","merchantPreOrders","setCartData","setError","MODAL_TYPES","wishlistReminders","CHANNEL_TAG_GROUPS","buyingListingOutbid","buyingListingWon","sellingListingFirstBid","sellingListingAllBids","sellingListingSold","sellingPaymentReceived","resolveCode","enabled","currencyCodeOrNull","currencies","resolveCurrency","INTERNATIONAL_SHIPPING_MODAL_ID","START_AUTH","SET_ERROR","CLOSE","bannedCountries","getAvailableCountries","countries","mapCountryCodeToCountryKey","b","countryCode","lokaliseKey","ad","ae","af","ag","ai","al","am","an","ao","aq","ar","as","at","au","aw","az","ba","bb","bd","be","bf","bg","bh","bi","bj","bm","bn","bo","br","bs","bt","bv","bw","by","bz","ca","cc","cd","cf","cg","ch","ci","ck","cl","cm","cn","co","cr","cu","cv","cx","cy","cz","dj","dm","do","dz","ec","ee","eg","eh","er","es","et","fi","fj","fk","fm","fo","fr","fx","gb","gd","ge","gf","gh","gi","gl","gm","gn","gp","gq","gr","gs","gt","gu","gw","gy","hk","hm","hn","hr","ht","hu","ie","il","in","io","iq","ir","is","it","jm","jo","jp","ke","kg","kh","ki","km","kn","kp","kr","kw","ky","kz","la","lb","lc","li","lk","lr","ls","lt","lu","lv","ly","ma","mc","md","mg","mh","mk","ml","mm","mn","mo","mp","mq","mr","ms","mt","mu","mv","mw","mx","my","mz","na","nc","ne","nf","ng","ni","nl","no","np","nr","nu","nz","om","pa","pe","pf","pg","ph","pk","pl","pm","pn","pr","ps","pt","pw","py","qa","re","ro","ru","rs","rw","sa","sb","sc","sd","sg","sh","si","sj","sk","sl","sm","sn","so","sr","st","sv","sy","sz","tc","td","tf","tg","th","tj","tk","tl","tm","tn","tr","tt","tv","tw","tz","ua","ug","um","us","uy","uz","va","vc","ve","vg","vi","vn","vu","wf","ws","ye","yt","yu","za","zm","zw","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","shouldShowRequestedCombinedShippingToast","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","getInitialPreferredLanguage","availableLanguages","defaultLanguage","availableIsoCodes","lang","indexOf","l","getLanguageDisplayName","Intl","DisplayNames","of","languageSlice","_state","initServerLanguage","preferredLanguage","DEFAULT_LANGUAGE","displayName","SUPPORTED_LANGUAGES","format","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","hasRequestedCombinedShipping","ignoreQueryPrefix","otherQueryParams","forceRedirect","replaceState","addQueryPrefix","shouldOpenBiddingModal","bidding","substr","shouldSaveInWishlist","shouldOpenBinModal","getBaseRedirectUrl","queryParams","Math","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","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","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","initializeState","adsActions","setTcfLoaded","initializeUiFromInitData","pushNotificationActions","initShippingRegion","discoverActions","initEnvironment","initLanguage","initMember","initInitData","initMultiCurrency","itemsActions","pageActions","initStartPage","initTraderaShop","fetchSystemMessages","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","mediaQuery","minWidth","maxWidth","useMediaQuery","useBreakpoint","getWindow","innerWidth","setBreakpoint","handleResize","bool","oneOf","withBreakpoint","WrappedComponent","WithBreakpoint","currentBreakpoint","isTablet","isDesktop","REQUEST_CATEGORY_LIST","RECEIVE_CATEGORY_LIST","HANDLE_CATEGORY_LIST_ERROR","AUCTION","CART","BIN","NO_SELECTED_SHIPPING","internationalShippingSlice","allowedBuyerRegion","messagingLink","ownItem","providers","setInternationalShipping","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","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","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","createBrowserHistory","AUCTION_BIN","PURE_BIN","SHOP_ITEM","getGeoPublicApiUrl","GEO_PUBLIC_API_URL","forceGeoDevCookie","cleanedMemberAlias","facebookId","memberDetailedSellerRatingAverage","memberCountry","memberEmailMd5","memberEmailSha256","memberHeroImage","memberBirthdate","initializeServerMember","defaultAction","setIsFetchingGeolocation","isFetchingGeolocation","setMemberHeroImage","getGeolocation","reject","fetchGeolocation","setCurrencyIfNotChosen","log","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","checkStatus","ID","getInitData","tradVersion","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","SYI_SHIPPING_BY_WEIGHT_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","PAYNOVA_DIRECT_INVOICE","PAYNOVA_INSTALLMENTS","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","getSelectedShippingProducts","shippingByWeight","offerTakeaway","providerId","takeAwayOption","summaryDisplayName","getIds","isTakeAway","commonActions","sellSimilar","getMessagingThreadLink","traderaUserId","singleThread","openForm","hasStampsAsSelectedShippingType","unpaidShippingUrl","unpaidShippingId","isDiscountAfterPaymentSupported","dateLimit","subtract","date","isAfter","hasTransactionDateNewerThen60Days","isDiscountBeforePaymentSupported","hide","unshift","itemsFromSeller","getActionsForItem","isLeading","fixedItemUrl","fixItemUrlIfNeeded","activeBuyerActions","dispute","lostActions","hiddenByMember","unsoldActions","isShopItem","common","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","allCategories","normalize","responseData","normalized","activeBrands","activeFilters","attributeFilters","currentCategoryId","fallbackItemsById","filterCategories","filterPrice","headerText","internalSearch","internalSearchBar","introText","isSavedSearchEmailEnabled","isShopOwnedByCurrentMember","itemsOnDisplay","itemsById","itemsOnDisplayById","mainText","pagination","fallbackUrl","discoverTranslationResult","categoryFilter","parameter","normalizeFilters","singleOptionFilters","selectedValue","ACTIVE_FILTER_STATES","priceRangeFilter","fallbackItems","requestSearchResults","hasResult","handleSearchResultsError","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","offerShipping","globalValidationError","validationErrors","global","validateProviders","hasAnyNonValidOption","hasAnyValidOption","weightIsInvalid","isAdvanced","useAdvancedWidget","isWeightValid","weightValidationError","primaryValidations","secondaryValidations","getFirstValidationError","primaryValidationError","secondaryValidationError","secondaryShippingOptionOpen","primary","secondary","getSelectedShippingOptions","selectedVariant","shippingOptionsLoading","shippingOptionsError","showPrimaryShippingCalculator","hasPrimaryCalculatorSuggestions","showSecondaryShippingCalculator","hasSecondaryCalculatorSuggestions","isLoadingProvidersWithProducts","defaultCalculatorDimensions","primaryCalculatorDimensions","secondaryCalculatorDimensions","forceFreeShipping","getProviderByProductType","productType","shippingContainsProduct","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_OPTIONS_BY_WEIGHT","productsPerWeightSpan","bringEnabled","shippingContainsTakeaway","productsDecorated","weightClass","filteredProductsWithDecoration","uuid","uuidv4","SET_SHIPPING_OPTION_SELECTED","selectedOptions","SET_SHIPPING_SELECTED","SET_TAKEAWAY_SELECTED","shippingByWeightEnabled","SET_SECONDARY_SHIPPING_OPTION_OPEN","REMOVE_SHIPPING_OPTION","MAKE_SECONDARY_SHIPPING_OPTION_PRIMARY","tmp","FORCE_FREE_SHIPPING","FREE_SHIPPING_PAID_BY_PROVIDER","SET_SHIPPING_PROVIDERS_WITH_PRODUCTS","SET_SHIPPING_PROVIDERS_WITH_PRODUCTS_FETCHING","SET_SHIPPING_OPTIONS_LOADING","SET_SHIPPING_OPTIONS_ERROR","SET_SHIPPING_CALCULATOR_DIMENSIONS","dimensions","SET_SHOW_SHIPPING_CALCULATOR","SET_SHIPPING_FROMCOUNTRY","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","categoryAttribute","suggestedAttribute","v","isSelectableSuggestion","o","isMaxReached","maxNumberOfValues","draftAttributes","selectableSuggestedAttributes","selectableCategorySuggestedAttributes","selectableImageToColorSuggestedAttributes","imageToColorSuggestedAttributes","updateSelectableSuggestedAttributes","primarySuggestedAttributes","secondarySuggestedAttributes","primarySuggestedAttribute","psa","secondarySuggestedAttribute","ssa","suggestedAttributeValues","isAlreadySuggested","updateSelectableImageToColorSuggestedAttributes","updateCategoryAttributesOptionsStatuses","draftAttributeValues","tav","numberOfValuesSelected","RESET_ATTRIBUTES","RESET_SELECTED_ATTRIBUTES","RESET_IMAGE_ATTRIBUTES_SUGGESTIONS","SET_CATEGORY_ATTRIBUTES","SET_DRAFT_ATTRIBUTES","SET_CATEGORY_ATTRIBUTE_OPTION","attributeId","isMultiSelect","optionValue","activate","UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES","SET_CATEGORY_ATTRIBUTES_SUGGESTIONS","categorySuggestedAttributes","suggestedAttributes","suggestionsExtractorType","SET_IMAGE_ATTRIBUTES_SUGGESTIONS","consent","shouldGiveConsent","isSyiMemberConsentEnabled","hasTraderaPayConsent","hasValidationError","createInitalState","SET_TRADERAPAY_CONSENT","hasLoaded","viewItemState","isBidding","placeBidResponse","info","initialBidFormValue","combineReducers","minNumberOfValues","bankId","traderaStateBankId","isChecked","newLevels","isLeaf","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","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","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","optionsWithDefaults","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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AAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJ17B,GAAI,aACJ27B,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJpxB,GAAI,aACJqxB,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,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","file":"script/chunks/chunk.3.e6bd7ff846.js","sourcesContent":["import CONSTANTS from 'tradera-constants/state';\nimport { nullifyUndefinedProperties } from 'tradera-utils/object';\nimport {\n DEFAULT_COOKIES,\n GDPR_CONSENT_ALERT_DISMISSED\n} from 'tradera-constants/cookies';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { cache, CACHE_KEYS } from 'tradera-utils/cache';\nimport uiActions from './actions';\n\nexport const getInitialBadges = () => ({\n messaging: {\n threads: 0,\n threadsUnread: 0\n },\n system: 0\n});\n\nexport const getInitialState = ({\n cartItemCount,\n cartSum,\n isGdprModalOpen,\n itemLayout,\n messageThreadCount,\n messageThreadsUnreadCount,\n showHeaderSearch,\n showSearchForm,\n siteLayout,\n systemMessages\n}) => {\n const gdpr = {\n modalOpen: isGdprModalOpen,\n settingsOpen: false\n };\n\n const badges = getInitialBadges();\n badges.messaging.threads = messageThreadCount;\n badges.messaging.threadsUnread = messageThreadsUnreadCount;\n\n return nullifyUndefinedProperties({\n cartItemCount,\n cartSum,\n categoryDropdownMenu: { open: CONSTANTS.MODAL.CLOSED },\n badges,\n gdpr,\n itemLayout: itemLayout,\n itemSettings: {\n open: CONSTANTS.MODAL.CLOSED,\n item: {}\n },\n messagingModal: {\n open: CONSTANTS.MODAL.CLOSED,\n title: '',\n src: '',\n participating: false,\n recipientId: '',\n item: null\n },\n modals: {\n currentModal: null\n },\n notificationOptinModal: {\n open: CONSTANTS.MODAL.CLOSED,\n modalType: null,\n gaLabel: null,\n title: null,\n description: null,\n tagGroups: []\n },\n profileMenu: { open: CONSTANTS.MODAL.CLOSED, redirectUrl: false },\n quickView: {\n open: CONSTANTS.MODAL.CLOSED,\n items: {},\n itemIds: [],\n currentItem: 0,\n loading: false\n },\n siteLayout,\n showHeaderSearch,\n showSearchForm,\n systemMessages: {\n BankAccountMissing: false,\n InvoiceOverdue: false,\n InvoiceUnpaid: false,\n PayoutFailed: false,\n PayoutReadyBankAccountMissing: false,\n SwishNumberMissing: false,\n ...systemMessages\n },\n videoModal: {\n open: CONSTANTS.MODAL.CLOSED,\n video: ''\n },\n youtubeVideoModal: {\n open: CONSTANTS.MODAL.CLOSED,\n video: ''\n },\n shareModal: {\n isOpen: false,\n settings: null\n }\n });\n};\n\nexport const initializeFromInitData = initData => dispatch => {\n const headerElement = document.querySelector('[data-site-header-slim]');\n const cartItemCount = parseInt(\n headerElement?.getAttribute('data-cart-item-count') || '0'\n );\n const cartSum = parseInt(\n headerElement?.getAttribute('data-cart-sum') || '0'\n );\n\n const messagingBadges = cache.read(CACHE_KEYS.MESSAGING_BADGES) || {\n threads: 0,\n threadsUnread: 0\n };\n\n const state = getInitialState({\n cartItemCount,\n cartSum,\n isGdprModalOpen:\n cookieUtil.readCookie(GDPR_CONSENT_ALERT_DISMISSED) === null,\n itemLayout:\n cookieUtil.readCookie(DEFAULT_COOKIES['ITEM_LAYOUT'].key) ||\n DEFAULT_COOKIES['ITEM_LAYOUT'].default,\n messageThreadCount: messagingBadges.threads,\n messageThreadsUnreadCount: messagingBadges.threadsUnread,\n showHeaderSearch:\n initData.pageName && initData.pageName.includes('StartPage'),\n showSearchForm: !!initData.hasSearch,\n siteLayout:\n cookieUtil.readCookie(DEFAULT_COOKIES['SITE_LAYOUT'].key) ||\n DEFAULT_COOKIES['SITE_LAYOUT'].default,\n systemMessages: cache.read(CACHE_KEYS.SYSTEM_MESSAGES) || {}\n });\n dispatch(uiActions.initialize(state));\n};\n","import { logger } from 'packages';\n//jshint module : true\nimport 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 { URL_LANGUAGES } from 'tradera-lang/constants.mjs';\nexport const OPTIONAL_LANG = `/:lang(${URL_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","import { isServer } from 'tradera-utils/nextjs';\n\nexport default !isServer && 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","export const selectFeatureSwitches = state => state.environment.featureSwitches;\n\nexport const selectAppInfo = state => ({\n isHybridAppContextForAndroid:\n state.environment.isHybridAppContextForAndroid,\n isHybridAppContextForIos: state.environment.isHybridAppContextForIos,\n isHybridAppContext: state.environment.isHybridAppContext,\n isNativeAppContext: state.environment.isNativeAppContext,\n hybridAppVersion: state.environment.hybridAppVersion\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 { formatUtcDateAsSwedishTimeZoneDate } from 'tradera-utils/date';\nimport { PAGE_LIST_TYPES } from '../../constants/list-types';\n\nconst isTakeaway = shippingType => {\n return shippingType === 'Takeaway' || shippingType === 'TakeawayOnly';\n};\n\nconst getSoldItemStateFor = sellerState => {\n if (sellerState.shipped && sellerState.feedbackLeft) {\n return 'Done';\n }\n if (sellerState.shipped) {\n return 'Shipped';\n }\n return sellerState.paid ? 'Paid' : 'NotPaid';\n};\n\nexport const initialPayloadItems = (data, listType) => {\n return data.purchaseOrders\n .map(purchaseOrder =>\n purchaseOrder.rows.map(row => ({\n ...row,\n caller: {},\n haveMultipleRows: purchaseOrder.rows.length > 1,\n haveCombinedShipping: !!purchaseOrder.combinedShippingInformation,\n isArchived: purchaseOrder.state.isArchived,\n key: row.listing.itemId,\n itemId: row.listing.itemId,\n itemUrl: row.listing.itemUrl,\n listing: {\n ...row.listing,\n restart: {},\n endDate: {\n formatted: formatUtcDateAsSwedishTimeZoneDate(\n row.listing.endDate\n )\n }\n },\n bidInformation: {\n bidCount: row.buying.bidCount\n },\n seller: {\n ...purchaseOrder.sellerMember,\n id: purchaseOrder.sellerMember.memberId\n },\n transaction: {\n ...row.transaction,\n ...(purchaseOrder.shipping.selectedShipping\n ? {\n selectedShipping: {\n ...purchaseOrder.shipping.selectedShipping,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.selectedShipping\n .shippingType\n )\n }\n }\n : null),\n ...(purchaseOrder.shipping.shippingDiscount\n ? {\n shippingDiscount: {\n ...purchaseOrder.shipping.shippingDiscount,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.shippingDiscount\n .shippingType\n )\n }\n }\n : null),\n ...(purchaseOrder.shipping.shipping?.url\n ? {\n trackingLink: purchaseOrder.shipping.shipping?.url\n }\n : null),\n bookedShipment: {\n ...purchaseOrder.shipping.shipping\n },\n isPaymentExpired: purchaseOrder.state.isPaymentExpired,\n paidShipmentCheckoutId:\n purchaseOrder.shipping.shipping?.shipmentCheckoutId,\n shipmentId: purchaseOrder.shipping.shipping?.shipmentId,\n hasUnpaidShipping: purchaseOrder.state.hasUnpaidShipping,\n isRefundAllowed: purchaseOrder.state.isRefundAllowed,\n isDiscountAllowed: purchaseOrder.state.isDiscountAllowed,\n isPaidWithIntegratedPaymentOption:\n purchaseOrder.state.isPaidWithIntegratedPayment,\n purchaseOrderId: purchaseOrder.purchaseOrderId,\n hasBuyerProtection:\n purchaseOrder.payment.hasBuyerProtection,\n ...(listType === PAGE_LIST_TYPES.BUYER_PURCHASES\n ? {\n buyerState: {\n ...row.transaction.sellerState,\n ...row.transaction.buyerState,\n paid:\n purchaseOrder.state.isPaid ||\n purchaseOrder.state.isMarkedAsPaidByBuyer,\n shippingBooked:\n purchaseOrder.state.isShippingBooked,\n shipped: purchaseOrder.state.isShipped,\n hidden: purchaseOrder.state.isHiddenForBuyer,\n inr: row.transaction.buyerState.isInrSubmitted\n }\n }\n : {\n sellerState: {\n upiSubmitted:\n purchaseOrder.state.isUpiSubmitted,\n state: getSoldItemStateFor({\n ...row.transaction.sellerState,\n shipped: purchaseOrder.state.isShipped,\n paid: purchaseOrder.state.isPaid\n }),\n ...row.transaction.sellerState,\n paid: purchaseOrder.state.isPaid,\n shippingBooked:\n purchaseOrder.state.isShippingBooked,\n shipped: purchaseOrder.state.isShipped,\n hidden: purchaseOrder.state.isHiddenForSeller\n }\n }),\n transactionDate: {\n formatted: formatUtcDateAsSwedishTimeZoneDate(\n row.transaction.transactionDate\n )\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 { showSuccessToast } from 'tradera-services/toasts';\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 showSuccessToast('siteWideNotifications_orderMarkedAsPaid');\n } else {\n await fetch(URLS.SELLER_UNMARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersUnmarkAsPaidBySeller(\n [purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n );\n }\n dispatch({\n type: actionTypes.PURCHASE_ORDER_PAID_BY_SELLER,\n payload: {\n isPaid,\n purchaseOrderId\n }\n });\n return dispatch(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 initialize,\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';\nimport { selectFeatureSwitches } from 'tradera-state/environment/selectors';\nimport { selectMemberCountryCodeIso2 } from 'tradera-state/member/selectors';\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\nexport const initializeFromInitData = initData => dispatch => {\n const localizationRegionPickerEnabled =\n initData &&\n initData.featureSwitches &&\n !!initData.featureSwitches['localization-region-picker'];\n const memberCountryCodeIso2 = initData.memberCountryCodeIso2;\n dispatch(\n initialize({ localizationRegionPickerEnabled, memberCountryCodeIso2 })\n );\n};\n\nexport const initializeFromState = () => (dispatch, getState) => {\n const featureToggles = selectFeatureSwitches(getState());\n const memberCountryCodeIso2 = selectMemberCountryCodeIso2(getState());\n dispatch(\n initialize({\n localizationRegionPickerEnabled: !!featureToggles[\n 'localization-region-picker'\n ],\n memberCountryCodeIso2\n })\n );\n};\n","import axios from 'axios';\n\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { finalizeResponse, handleError } from 'tradera-utils/api';\nimport { removeBannedCountries } from 'tradera-utils/countries';\n\nexport const fetchAvailableShippingCountries = () =>\n axios\n .get(ENDPOINTS.AVAILABLE_SHIPPING_COUNTRIES)\n .then(finalizeResponse())\n .then(({ data }) => ({\n shippingCountries: data.availableCountries\n .map(country => country.countryCodeIso2.toLowerCase())\n .filter(removeBannedCountries)\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\n// ATTENTION!\n// Do not any more dependencies to initData.featureSwitches!\n// Feature switches MUST be read from Redux.\n// The functions below must only be used in MyTradera and the only\n// reason they are still here is because it requires large changes\n// to MyTradera to get rid of them.\nexport default {\n isBuyerOrderInformationEnabled: isEnabled('buyer-order-information'),\n isDisputesEntranceEnabled: isEnabled('disputes-entrance'),\n isLeaveFeedbackReactEnabled: isEnabled('leave-feedback-react'),\n isMyTraderaElasticEnabled: isEnabled('mytradera-elasticsearch'),\n isMessagingEnabled: isEnabled('messaging'),\n isMessagingBuyerButtonsEnabled: isEnabled(\n 'messaging-contact-buyer-buttons'\n ),\n isMessagingSellerButtonsEnabled: isEnabled(\n 'messaging-contact-seller-buttons'\n ),\n downloadCsvPayouts: isEnabled('download-csv-payouts'),\n isInrPurchaseOrderEnabled: isEnabled('inr-purchaseorder'),\n isUpiPurchaseOrderEnabled: isEnabled('upi-purchaseorder'),\n isPennybridgeCharitiesEnabled: isEnabled('pennybridge-charities'),\n isShippingCheckoutEditChangeProviderEnabled: isEnabled(\n 'shipping-checkout-edit-change-provider'\n ),\n isSyiShippingAlertPriceIncreaseEnabled: isEnabled(\n 'syi-shipping-alert-price-increase'\n ),\n isShippingCheckoutSwishHandelPaymentReactEnabled: isEnabled(\n 'shipping-checkout-swish-handel-payment-react'\n ),\n isShippingCheckoutPaymentInvoiceReactEnabled: isEnabled(\n 'shipping-checkout-payment-invoice-react'\n ),\n isShippingCheckoutOverviewReact: isEnabled(\n 'shipping-checkout-overview-react'\n )\n};\n","import 'react';\nimport { itemHasBidsButReservePriceNotReached } from './item-labels';\nimport { columns } from '../../constants/column-definitions';\nimport { PAGE_NAMES } from '../../constants/page';\nimport { formatPrice } from '../../helpers/formats';\nimport {\n getBidCount,\n getMaxBid,\n getShippingCost\n} from '../../helpers/item-helper';\nimport { infoItemComponents } from 'tradera-apps/my-tradera/app/components/listing/item/info-item-components';\n\nconst labels = {\n [columns.CurrentPrice]: 'Pris',\n [columns.TransactionDate]: 'Avslutad',\n [columns.EndDate]: 'Sluttid',\n [columns.ShippingCost]: 'Frakt',\n [columns.Bids]: '#Bud',\n [columns.ItemId]: 'Objektnr',\n [columns.OpeningBid]: 'Utrop',\n [columns.ReservePrice]: 'Res.pris',\n [columns.BuyItNow]: 'Köp nu',\n [columns.OwnReference]: 'Ref',\n [columns.MaxBid]: 'Maxbud',\n [columns.TimeLeft]: 'Tid kvar'\n};\n\nconst columnCssClassCore = {\n [columns.CurrentPrice]: 'myt-list3__table-column-current-price', // show tablet\n [columns.TransactionDate]: 'myt-list3__table-column-end-date',\n [columns.EndDate]: 'myt-list3__table-column-end-date',\n [columns.ShippingCost]: 'myt-list3__table-column-shipping-cost', // show tablet\n [columns.Bids]: 'myt-list3__table-column-current-bids', // show tablet\n [columns.ItemId]: 'myt-list3__table-column-item-id',\n [columns.OpeningBid]: 'myt-list3__table-column-opening-bid',\n [columns.ReservePrice]: 'myt-list3__table-column-reserve-price',\n [columns.BuyItNow]: 'myt-list3__table-column-buy-it-now',\n [columns.OwnReference]: 'myt-list3__table-column-own-reference',\n [columns.MaxBid]: 'myt-list3__table-column-maxbid',\n [columns.TimeLeft]: 'myt-list3__table-column-timeleft'\n};\n\nconst getCoreCssClass = column => columnCssClassCore[column];\nconst getHeading = (label, cssClass, columnKey) => ({\n term: label,\n cssClass: cssClass,\n columnKey\n});\n\nexport const getTranslatedColumnKey = (t, columnKey) => {\n switch (columnKey) {\n case columns.CurrentPrice:\n return t('myt_columns_price');\n case columns.TransactionDate:\n return t('myt_columns_transactionDate');\n case columns.EndDate:\n return t('myt_columns_endTime');\n case columns.ShippingCost:\n return t('myt_columns_shipping');\n case columns.Bids:\n return `#${t('myt_columns_bids')}`;\n case columns.ItemId:\n return t('myt_columns_objectNo');\n case columns.OpeningBid:\n return t('myt_columns_startingPrice');\n case columns.ReservePrice:\n return t('myt_columns_reservePrice');\n case columns.BuyItNow:\n return t('myt_columns_buyNow');\n case columns.OwnReference:\n return t('myt_columns_ownReference');\n case columns.MaxBid:\n return t('myt_columns_maxBid');\n case columns.TimeLeft:\n return t('myt_columns_timeLeft');\n default:\n return '';\n }\n};\n\nexport const getHeadings = (t, columnDefinitions) => {\n return columnDefinitions\n ? columnDefinitions.map(columnKey =>\n getHeading(\n getTranslatedColumnKey(t, columnKey),\n columnCssClassCore[columnKey]\n )\n )\n : [];\n};\n\nexport const getUserHeading = (t, pageName) => {\n const highestBidder = t('myt_columns_highestBidder');\n\n switch (pageName) {\n case PAGE_NAMES.BuyerActiveItems:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.SellerActive:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.SellerUnsold:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.BuyerPurchases:\n return getHeading(\n 'Mina Köp',\n 'myt-list3__table-column-counterpart'\n );\n default:\n return null;\n }\n};\n\n/**\n * @name GetColumns\n * @desc Builds the columns out for a single item;\n */\nexport const getColumns = (columnDefinitions, listViewType) => item => {\n const getColumn = (label, value, cssClass, title, columnKey) => ({\n term: label,\n definition: value,\n cssClass: cssClass,\n tagTitle: title,\n columnKey\n });\n\n const hasTransactionDate =\n !!item &&\n item.transaction &&\n item.transaction &&\n item.transaction.transactionDate;\n const price = item.transaction\n ? parseInt(item.transaction.price)\n : parseInt(item.currentPrice);\n\n const getCurrentPriceMeta = () =>\n itemHasBidsButReservePriceNotReached(item)\n ? columnCssClassCore[columns.CurrentPrice] + ' text-alert bold'\n : columnCssClassCore[columns.CurrentPrice];\n\n const getItemId = item.itemId;\n const itemType = item.listing.itemType;\n const hasHighestBidder =\n item && item.bidInformation && item.bidInformation.leadingBidder\n ? true\n : false;\n const shouldShowBids =\n itemType === 'Auction' ||\n (hasHighestBidder && itemType === 'AuctionBin') ||\n (hasHighestBidder &&\n item.transaction &&\n item.listing.purchaseType === 'Auction')\n ? true\n : false;\n const bidCount = getBidCount(item);\n const getTransactionDate = hasTransactionDate\n ? item.transaction.transactionDate.formatted\n : null;\n const getEndDate = item.listing.endDate.formatted;\n const getCurrentPrice = () => ({\n component: infoItemComponents.ITEM_PRICE,\n transaction: item.transaction,\n price: formatPrice(price)\n });\n const getTimeLeftAsString = item.listing.timeLeft\n ? item.listing.timeLeft.timeleft\n : null;\n\n const columnCssClass = {\n [columns.CurrentPrice]: getCurrentPriceMeta(),\n [columns.TransactionDate]:\n getCoreCssClass(columns.TransactionDate) +\n (hasTransactionDate && item.transaction.transactionDate.critical\n ? ' text-alert'\n : ''),\n [columns.EndDate]:\n getCoreCssClass(columns.EndDate) +\n (item.listing.endDate.critical ? ' text-alert' : ''),\n [columns.ShippingCost]: getCoreCssClass(columns.ShippingCost),\n [columns.Bids]: getCoreCssClass(columns.Bids),\n [columns.ItemId]: getCoreCssClass(columns.ItemId),\n [columns.OpeningBid]: getCoreCssClass(columns.OpeningBid),\n [columns.ReservePrice]: getCoreCssClass(columns.ReservePrice),\n [columns.BuyItNow]: getCoreCssClass(columns.BuyItNow),\n [columns.OwnReference]: getCoreCssClass(columns.OwnReference),\n [columns.Discount]: getCoreCssClass(columns.Discount) + ' text-alert',\n [columns.TimeLeft]: getCoreCssClass(columns.TimeLeft),\n [columns.MaxBid]: getCoreCssClass(columns.MaxBid)\n };\n\n const columnTitle = {\n [columns.CurrentPrice]: itemHasBidsButReservePriceNotReached(item)\n ? 'Reservationspris ej uppnÃ¥tt'\n : formatPrice(price),\n [columns.TransactionDate]: hasTransactionDate\n ? item.transaction.transactionDate.full\n : null,\n [columns.EndDate]:\n item &&\n item.listing &&\n item.listing.endDate &&\n item.listing.endDate.critical\n ? item.listing.timeLeft.timeleft\n : item.listing.endDate.full,\n [columns.ShippingCost]: '',\n [columns.Bids]: bidCount,\n [columns.ItemId]: '',\n [columns.OpeningBid]: '',\n [columns.ReservePrice]: '',\n [columns.BuyItNow]: '',\n [columns.OwnReference]: '',\n [columns.Discount]: '',\n [columns.TimeLeft]: getTimeLeftAsString\n };\n\n const getBids =\n shouldShowBids && bidCount\n ? {\n component: infoItemComponents.BIDS,\n itemId: getItemId,\n bidCount: bidCount\n }\n : '-';\n const getOpeningBid =\n item.listing.pricing.openingBid > 0\n ? formatPrice(item.listing.pricing.openingBid)\n : ' ';\n const getReservePrice =\n item.listing.pricing.reservePrice > 0\n ? formatPrice(item.listing.pricing.reservePrice)\n : '-';\n const getBuyItNow =\n item.listing.pricing.buyItNow > 0\n ? formatPrice(item.listing.pricing.buyItNow)\n : '-';\n const getOwnReference = item.listing.ownReference\n ? item.listing.ownReference\n : ' ';\n const callerMaxBid = getMaxBid(item) || '-';\n const getTimeLeft = {\n component: infoItemComponents.TIME_LEFT,\n timeLeft: item.listing.timeLeft\n };\n const shippingCost = getShippingCost(item, listViewType)();\n\n const definitions = {\n [columns.CurrentPrice]: getCurrentPrice(),\n [columns.TransactionDate]: getTransactionDate,\n [columns.EndDate]: getEndDate,\n [columns.ShippingCost]: shippingCost,\n [columns.Bids]: getBids,\n [columns.ItemId]: getItemId,\n [columns.OpeningBid]: getOpeningBid,\n [columns.ReservePrice]: getReservePrice,\n [columns.BuyItNow]: getBuyItNow,\n [columns.OwnReference]: getOwnReference,\n [columns.MaxBid]: callerMaxBid,\n [columns.TimeLeft]: getTimeLeft\n };\n\n return columnDefinitions.map(columnKey =>\n getColumn(\n columnKey === 'CurrentPrice' ? undefined : labels[columnKey],\n definitions[columnKey],\n columnCssClass[columnKey],\n columnTitle[columnKey],\n columnKey\n )\n );\n};\n\nexport default {\n getColumns,\n getHeadings\n};\n","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.traderaShop]: {\n url: toLocalizedUrl('/tradera-shop'),\n title: t('myt_buyShippingSupplies_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 { formatUtcDateAsSwedishTimeZoneDate } 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';\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')}{' '}\n {formatUtcDateAsSwedishTimeZoneDate(endDate)}\n

\n ) : (\n

\n {t('vip_willEndTime')}{' '}\n {formatUtcDateAsSwedishTimeZoneDate(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 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';\n\nexport default class LoadingPortal extends Component {\n static propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n };\n\n constructor() {\n super();\n this.el = document.createElement('div');\n this.loadingPortalRoot = document.getElementById('loading-portal');\n }\n\n componentDidMount() {\n if (this.loadingPortalRoot) {\n this.loadingPortalRoot.appendChild(this.el);\n setTimeout(() => {\n this.el.classList.add('loading-portal-visible');\n }, 0);\n }\n }\n\n componentWillUnmount() {\n if (this.loadingPortalRoot) {\n this.loadingPortalRoot.removeChild(this.el);\n }\n }\n\n render() {\n const { children, className = 'loading-portal' } = this.props;\n this.el.className = className;\n return ReactDOM.createPortal(children, this.el);\n }\n}\n","export default {\n INITIALIZE: 'UI/INITIALIZE',\n TOGGLE_HEADER_SEARCH: 'UI/TOGGLE_HEADER_SEARCH',\n OPEN_GDPR_MODAL: 'UI/OPEN_GDPR_MODAL',\n CLOSE_GDPR_MODAL: 'UI/CLOSE_GDPR_MODAL',\n OPEN_GDPR_SETTINGS: 'UI/OPEN_GDPR_SETTINGS',\n CLOSE_GDPR_SETTINGS: 'UI/CLOSE_GDPR_SETTINGS',\n OPEN_QUICK_VIEW: 'UI/OPEN_QUICK_VIEW',\n CLOSE_QUICK_VIEW: 'UI/CLOSE_QUICK_VIEW',\n LOADING_QUICK_VIEW: 'UI/LOADING_QUICK_VIEW',\n OPEN_VIDEO_MODAL: 'UI/OPEN_VIDEO_MODAL',\n CLOSE_VIDEO_MODAL: 'UI/CLOSE_VIDEO_MODAL',\n OPEN_YOUTUBE_VIDEO_MODAL: 'UI/OPEN_YOUTUBE_VIDEO_MODAL',\n CLOSE_YOUTUBE_VIDEO_MODAL: 'UI/CLOSE_YOUTUBE_VIDEO_MODAL',\n OPEN_MESSAGING_MODAL: 'UI/OPEN_MESSAGING_MODAL',\n CLOSE_MESSAGING_MODAL: 'UI/CLOSE_MESSAGING_MODAL',\n OPEN_NOTIFICATION_OPTIN_MODAL: 'UI/OPEN_NOTIFICATION_OPTIN_MODAL',\n CLOSE_NOTIFICATION_OPTIN_MODAL: 'UI/CLOSE_NOTIFICATION_OPTIN_MODAL',\n OPEN_MODAL: 'UI/OPEN_MODAL',\n CLOSE_MODAL: 'UI/CLOSE_MODAL',\n OPEN_SHARE_MODAL: 'UI/OPEN_SHARE_MODAL',\n CLOSE_SHARE_MODAL: 'UI/CLOSE_SHARE_MODAL',\n ITEM_LAYOUT: 'UI/ITEM_LAYOUT',\n UPDATE_SYSTEM_MESSAGES: 'UI/UPDATE_SYSTEM_MESSAGES',\n UPDATE_MESSAGING_NOTIFICATIONS: 'UI/UPDATE_MESSAGING_NOTIFICATIONS',\n OPEN_PROFILE_MENU: 'UI/OPEN_PROFILE_MENU',\n CLOSE_PROFILE_MENU: 'UI/CLOSE_PROFILE_MENU',\n OPEN_CATEGORY_DROPDOWN_MENU: 'UI/OPEN_CATEGORY_DROPDOWN_MENU',\n CLOSE_CATEGORY_DROPDOWN_MENU: 'UI/CLOSE_CATEGORY_DROPDOWN_MENU',\n OPEN_SEARCH_FORM: 'UI/OPEN_SEARCH_FORM',\n CLOSE_SEARCH_FORM: 'UI/CLOSE_SEARCH_FORM',\n REQUEST_ITEM_SETTINGS: 'UI/REQUEST_ITEM_SETTINGS',\n OPEN_ITEM_SETTINGS: 'UI/OPEN_ITEM_SETTINGS',\n CLOSE_ITEM_SETTINGS: 'UI/CLOSE_ITEM_SETTINGS',\n SITE_LAYOUT: 'UI/SITE_LAYOUT',\n SET_HAS_SEARCH: 'UI/SET_HAS_SEARCH',\n // 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","export const capitalize = text => `${text[0].toUpperCase()}${text.slice(1)}`;\n","import { createSlice } from '@reduxjs/toolkit';\nimport getInitialState from './initial-state';\n\nconst cartSlice = createSlice({\n name: 'cart',\n initialState: getInitialState(),\n reducers: {\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n },\n setCartData: (state, { payload }) => {\n state.isFetching = false;\n state.merchantPreOrders = payload.merchantPreOrders;\n state.errors = {};\n },\n setError: (state, { payload }) => {\n state.errors[payload.id] = payload.message;\n }\n }\n});\n\nexport const { setFetching, setCartData, setError } = cartSlice.actions;\n\nexport default cartSlice.reducer;\n","export default () => {\n return {\n isFetching: false,\n merchantPreOrders: [],\n errors: {}\n };\n};\n","export const MODAL_TYPES = {\n default: 'default',\n wishlistReminders: 'wishlistReminders',\n selling: 'selling'\n};\n\nexport const CHANNEL_TAG_GROUPS = {\n wishlistReminders: [\n 'wishlist_reminder_3_min_optin',\n 'wishlist_reminder_15_min_optin'\n ],\n buyingListingOutbid: ['member_outbid_optin'],\n buyingListingWon: ['member_won_optin'],\n sellingListingFirstBid: ['selling_first_bid_optin'],\n sellingListingAllBids: ['selling_new_bid_optin'],\n sellingListingSold: ['selling_sold_optin'],\n sellingPaymentReceived: ['selling_payment_received_optin']\n};\n","export const actionTypes = {\n PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING:\n 'PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING',\n PURCHASE_ORDER_SHIPPED: 'PURCHASE_ORDER_SHIPPED',\n PURCHASE_ORDER_LIST: 'PURCHASE_ORDER_LIST',\n PURCHASE_ORDER_PAID_BY_SELLER: 'PURCHASE_ORDER_PAID_BY_SELLER',\n PURCHASE_ORDER_PAID_BY_BUYER: 'PURCHASE_ORDER_PAID_BY_BUYER',\n PURCHASE_ORDER_RESET: 'PURCHASE_ORDER_RESET',\n PURCHASE_ORDER_DELETE_SHIPMENT: 'PURCHASE_ORDER_DELETE_SHIPMENT',\n PURCHASE_ORDER_HIDDEN: 'PURCHASE_ORDER_HIDDEN',\n PURCHASE_ORDERS_SHIPPING_BOOKED: 'PURCHASE_ORDERS_SHIPPING_BOOKED',\n PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER:\n 'PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER',\n PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER:\n 'PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER'\n};\n","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","const bannedCountries = new Set([\n 'by',\n 'cu',\n 'fx',\n 'ir',\n 'kp',\n 'ru',\n 'sy',\n 'ua'\n]);\n\nexport const removeBannedCountries = countryCodeIso2 =>\n !bannedCountries.has(countryCodeIso2.toLowerCase());\n\nexport const getAvailableCountries = t => {\n return Object.keys(countries)\n .filter(removeBannedCountries)\n .map(code => ({\n code,\n name: t(mapCountryCodeToCountryKey(code))\n }))\n .sort((a, b) => (a.name > b.name ? 1 : -1));\n};\n\n// We map this way to ensure that each key in lokalise is present in code.\n// This allows us to clean up unnecessary codes in the future.\nexport const mapCountryCodeToCountryKey = countryCode => {\n const lokaliseKey = countries[countryCode.toLowerCase()];\n if (!lokaliseKey)\n throw `CountryCode ${countryCode} has no mapping to lokalise key`;\n return lokaliseKey;\n};\n\nexport const countries = {\n ad: 'country_ad',\n ae: 'country_ae',\n af: 'country_af',\n ag: 'country_ag',\n ai: 'country_ai',\n al: 'country_al',\n am: 'country_am',\n an: 'country_an',\n ao: 'country_ao',\n aq: 'country_aq',\n ar: 'country_ar',\n as: 'country_as',\n at: 'country_at',\n au: 'country_au',\n aw: 'country_aw',\n az: 'country_az',\n ba: 'country_ba',\n bb: 'country_bb',\n bd: 'country_bd',\n be: 'country_be',\n bf: 'country_bf',\n bg: 'country_bg',\n bh: 'country_bh',\n bi: 'country_bi',\n bj: 'country_bj',\n bm: 'country_bm',\n bn: 'country_bn',\n bo: 'country_bo',\n br: 'country_br',\n bs: 'country_bs',\n bt: 'country_bt',\n bv: 'country_bv',\n bw: 'country_bw',\n by: 'country_by',\n bz: 'country_bz',\n ca: 'country_ca',\n cc: 'country_cc',\n cd: 'country_cd',\n cf: 'country_cf',\n cg: 'country_cg',\n ch: 'country_ch',\n ci: 'country_ci',\n ck: 'country_ck',\n cl: 'country_cl',\n cm: 'country_cm',\n cn: 'country_cn',\n co: 'country_co',\n cr: 'country_cr',\n cu: 'country_cu',\n cv: 'country_cv',\n cx: 'country_cx',\n cy: 'country_cy',\n cz: 'country_cz',\n de: 'country_de',\n dj: 'country_dj',\n dk: 'country_dk',\n dm: 'country_dm',\n do: 'country_do',\n dz: 'country_dz',\n ec: 'country_ec',\n ee: 'country_ee',\n eg: 'country_eg',\n eh: 'country_eh',\n er: 'country_er',\n es: 'country_es',\n et: 'country_et',\n fi: 'country_fi',\n fj: 'country_fj',\n fk: 'country_fk',\n fm: 'country_fm',\n fo: 'country_fo',\n fr: 'country_fr',\n fx: 'country_fx',\n ga: 'country_ga',\n gb: 'country_gb',\n gd: 'country_gd',\n ge: 'country_ge',\n gf: 'country_gf',\n gh: 'country_gh',\n gi: 'country_gi',\n gl: 'country_gl',\n gm: 'country_gm',\n gn: 'country_gn',\n gp: 'country_gp',\n gq: 'country_gq',\n gr: 'country_gr',\n gs: 'country_gs',\n gt: 'country_gt',\n gu: 'country_gu',\n gw: 'country_gw',\n gy: 'country_gy',\n hk: 'country_hk',\n hm: 'country_hm',\n hn: 'country_hn',\n hr: 'country_hr',\n ht: 'country_ht',\n hu: 'country_hu',\n id: 'country_id',\n ie: 'country_ie',\n il: 'country_il',\n in: 'country_in',\n io: 'country_io',\n iq: 'country_iq',\n ir: 'country_ir',\n is: 'country_is',\n it: 'country_it',\n jm: 'country_jm',\n jo: 'country_jo',\n jp: 'country_jp',\n ke: 'country_ke',\n kg: 'country_kg',\n kh: 'country_kh',\n ki: 'country_ki',\n km: 'country_km',\n kn: 'country_kn',\n kp: 'country_kp',\n kr: 'country_kr',\n kw: 'country_kw',\n ky: 'country_ky',\n kz: 'country_kz',\n la: 'country_la',\n lb: 'country_lb',\n lc: 'country_lc',\n li: 'country_li',\n lk: 'country_lk',\n lr: 'country_lr',\n ls: 'country_ls',\n lt: 'country_lt',\n lu: 'country_lu',\n lv: 'country_lv',\n ly: 'country_ly',\n ma: 'country_ma',\n mc: 'country_mc',\n md: 'country_md',\n mg: 'country_mg',\n mh: 'country_mh',\n mk: 'country_mk',\n ml: 'country_ml',\n mm: 'country_mm',\n mn: 'country_mn',\n mo: 'country_mo',\n mp: 'country_mp',\n mq: 'country_mq',\n mr: 'country_mr',\n ms: 'country_ms',\n mt: 'country_mt',\n mu: 'country_mu',\n mv: 'country_mv',\n mw: 'country_mw',\n mx: 'country_mx',\n my: 'country_my',\n mz: 'country_mz',\n na: 'country_na',\n nc: 'country_nc',\n ne: 'country_ne',\n nf: 'country_nf',\n ng: 'country_ng',\n ni: 'country_ni',\n nl: 'country_nl',\n no: 'country_no',\n np: 'country_np',\n nr: 'country_nr',\n nu: 'country_nu',\n nz: 'country_nz',\n om: 'country_om',\n pa: 'country_pa',\n pe: 'country_pe',\n pf: 'country_pf',\n pg: 'country_pg',\n ph: 'country_ph',\n pk: 'country_pk',\n pl: 'country_pl',\n pm: 'country_pm',\n pn: 'country_pn',\n pr: 'country_pr',\n ps: 'country_ps',\n pt: 'country_pt',\n pw: 'country_pw',\n py: 'country_py',\n qa: 'country_qa',\n re: 'country_re',\n ro: 'country_ro',\n ru: 'country_ru',\n rs: 'country_rs',\n rw: 'country_rw',\n sa: 'country_sa',\n sb: 'country_sb',\n sc: 'country_sc',\n sd: 'country_sd',\n se: 'country_se',\n sg: 'country_sg',\n sh: 'country_sh',\n si: 'country_si',\n sj: 'country_sj',\n sk: 'country_sk',\n sl: 'country_sl',\n sm: 'country_sm',\n sn: 'country_sn',\n so: 'country_so',\n sr: 'country_sr',\n st: 'country_st',\n sv: 'country_sv',\n sy: 'country_sy',\n sz: 'country_sz',\n tc: 'country_tc',\n td: 'country_td',\n tf: 'country_tf',\n tg: 'country_tg',\n th: 'country_th',\n tj: 'country_tj',\n tk: 'country_tk',\n tl: 'country_tl',\n tm: 'country_tm',\n tn: 'country_tn',\n to: 'country_to',\n tr: 'country_tr',\n tt: 'country_tt',\n tv: 'country_tv',\n tw: 'country_tw',\n tz: 'country_tz',\n ua: 'country_ua',\n ug: 'country_ug',\n um: 'country_um',\n us: 'country_us',\n uy: 'country_uy',\n uz: 'country_uz',\n va: 'country_va',\n vc: 'country_vc',\n ve: 'country_ve',\n vg: 'country_vg',\n vi: 'country_vi',\n vn: 'country_vn',\n vu: 'country_vu',\n wf: 'country_wf',\n ws: 'country_ws',\n ye: 'country_ye',\n yt: 'country_yt',\n yu: 'country_yu',\n za: 'country_za',\n zm: 'country_zm',\n zw: 'country_zw'\n};\n","import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\nimport LoadingPortal from 'tradera-components/portals/loading-portal';\n\nconst LoaderComponent = ({\n className,\n children,\n visibleClassName,\n ...otherProps\n}) => {\n const loaderRef = useRef(null);\n useEffect(() => {\n const timeout = setTimeout(() => {\n loaderRef?.current?.classList.add(visibleClassName);\n }, 0);\n return () => clearTimeout(timeout);\n }, [visibleClassName]);\n\n return (\n
\n {children}\n
\n );\n};\n\n// Global loading with overlay that covers the whole page, except top menu\nconst GlobalLoader = () => (\n \n \n \n);\n\n// Legacy global loader that uses portal\nconst PortalLoader = () => (\n \n \n \n);\n\n// Local loader that covers its closest positioned parent\n// Tip: use position-relative class for containing parent\nconst LocalLoader = ({ className = '', ...otherProps }) => (\n \n \n \n);\n\nconst Loader = ({ usePortal }) => {\n return usePortal ? : ;\n};\n\nLoader.propTypes = {\n usePortal: PropTypes.bool.isRequired\n};\n\nLoader.defaultProps = {\n usePortal: true\n};\n\nexport default Loader;\nexport { PortalLoader, GlobalLoader, LocalLoader };\n","import axios from 'axios';\nimport qs from 'qs';\nimport {\n utilizeCancelToken,\n checkResponseVersion,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\n\n/**\n *\n * @param {string} endpoint\n * @param {object} params\n * @param {string} baseURL\n * @param version\n * @returns {Promise<*>}\n */\nexport const getSearchResults = async (\n endpoint,\n params,\n baseURL = '',\n version\n) => {\n if (!params) {\n if (process && process.env && process.env.NODE_ENV !== 'production') {\n console.warn(\n 'getSearchResults must have queryParams as the first argument'\n );\n }\n return;\n }\n\n const { cancel, cancelToken } = utilizeCancelToken('fetchCategoryList');\n if (cancel) cancel();\n\n return axios\n .get(`${endpoint}.json`, {\n cancelToken,\n baseURL,\n params,\n paramsSerializer: function(params) {\n return qs.stringify(params, { arrayFormat: 'repeat' });\n }\n })\n .then(version ? checkResponseVersion(version) : response => response)\n .then(finalizeResponse())\n .catch(handleError());\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport { isDenmarkCountryCode } from 'tradera-utils/countrycode';\nimport initData from 'init-data';\n\nconst initialState = {\n shortDescription: null,\n validationError: null,\n descriptionLanguageCodeIso2: null,\n isDescriptionLanguageCodeIso2ChangeAvailable:\n initData &&\n initData.memberCountryCodeIso2 &&\n isDenmarkCountryCode(initData.memberCountryCodeIso2) &&\n initData.featureSwitches &&\n initData.featureSwitches['danish-description']\n};\n\nconst getValidationError = state => {\n if (!state.shortDescription || state.shortDescription.trim() === '') {\n return 'syi_validation_missing_title';\n }\n\n if (\n state.isDescriptionLanguageCodeIso2ChangeAvailable &&\n !state.descriptionLanguageCodeIso2\n ) {\n return 'syi_validation_missing_descriptionLanguageCodeIso2';\n }\n};\n\nconst validate = state => ({\n ...state,\n validationError: getValidationError(state)\n});\n\nconst shortDescriptionSlice = createSlice({\n name: 'shortDescription',\n initialState,\n reducers: {\n setShortDescription: (state, action) =>\n validate({ ...state, shortDescription: action.payload }),\n resetShortDescription: state =>\n validate({ ...state, shortDescription: null }),\n setDescriptionLanguageCodeIso2: (state, action) =>\n validate({\n ...state,\n descriptionLanguageCodeIso2: action.payload\n })\n }\n});\n\nexport const {\n setShortDescription,\n resetShortDescription,\n setDescriptionLanguageCodeIso2\n} = shortDescriptionSlice.actions;\n\nexport default shortDescriptionSlice.reducer;\n","export const ROLES = {\n BUYER: 'buyer',\n SELLER: 'seller'\n};\nexport const MAX_COMMENT_LENGTH = 80;\nexport const UNSET_RATING_VALUE = 0;\nexport const MIN_RATING_VALUE = 1;\nexport const MAX_RATING_VALUE = 5;\n\nexport const RATING_NAMES = {\n DESCRIPTION: 'ItemAsDescribed',\n COMMUNICATION: 'CommResponsiveness',\n SHIPPING_TIME: 'ShippingTime',\n SHIPPING_COST: 'ShippingHandlingCharges',\n PAYMENT_TIME: 'PaymentTime'\n};\n\nexport const RATING_NAMES_SELLER = [RATING_NAMES.PAYMENT_TIME];\n\nexport const RATING_NAMES_BUYER = [\n RATING_NAMES.DESCRIPTION,\n RATING_NAMES.COMMUNICATION,\n RATING_NAMES.SHIPPING_TIME,\n RATING_NAMES.SHIPPING_COST\n];\n\nexport const RATING_SETTINGS = {\n [RATING_NAMES.DESCRIPTION]: {\n name: RATING_NAMES.DESCRIPTION,\n titleKey: 'leaveFeedback_rateItemAsDecribedTitle',\n descriptionKeys: [\n 'leaveFeedback_rateItemAsDecribed_ratingOne',\n 'leaveFeedback_rateItemAsDecribed_ratingTwo',\n 'leaveFeedback_rateItemAsDecribed_ratingThree',\n 'leaveFeedback_rateItemAsDecribed_ratingFour',\n 'leaveFeedback_rateItemAsDecribed_ratingFive'\n ]\n },\n [RATING_NAMES.COMMUNICATION]: {\n name: RATING_NAMES.COMMUNICATION,\n titleKey: 'leaveFeedback_rateCommResponsivenessTitle',\n descriptionKeys: [\n 'leaveFeedback_rateCommResponsiveness_ratingOne',\n 'leaveFeedback_rateCommResponsiveness_ratingTwo',\n 'leaveFeedback_rateCommResponsiveness_ratingThree',\n 'leaveFeedback_rateCommResponsiveness_ratingFour',\n 'leaveFeedback_rateCommResponsiveness_ratingFive'\n ]\n },\n [RATING_NAMES.SHIPPING_TIME]: {\n name: RATING_NAMES.SHIPPING_TIME,\n titleKey: 'leaveFeedback_rateShippingTimeTitle',\n descriptionKeys: [\n 'leaveFeedback_rateShippingTime_ratingOne',\n 'leaveFeedback_rateShippingTime_ratingTwo',\n 'leaveFeedback_rateShippingTime_ratingThree',\n 'leaveFeedback_rateShippingTime_ratingFour',\n 'leaveFeedback_rateShippingTime_ratingFive'\n ]\n },\n [RATING_NAMES.SHIPPING_COST]: {\n name: RATING_NAMES.SHIPPING_COST,\n titleKey: 'leaveFeedback_rateShippingHandlingChargesTitle',\n descriptionKeys: [\n 'leaveFeedback_rateShippingHandlingCharges_ratingOne',\n 'leaveFeedback_rateShippingHandlingCharges_ratingTwo',\n 'leaveFeedback_rateShippingHandlingCharges_ratingThree',\n 'leaveFeedback_rateShippingHandlingCharges_ratingFour',\n 'leaveFeedback_rateShippingHandlingCharges_ratingFive'\n ]\n },\n [RATING_NAMES.PAYMENT_TIME]: {\n name: RATING_NAMES.PAYMENT_TIME,\n titleKey: 'leaveFeedback_ratePaymentTimeTitle',\n descriptionKeys: [\n 'leaveFeedback_ratePaymentTime_ratingOne',\n 'leaveFeedback_ratePaymentTime_ratingTwo',\n 'leaveFeedback_ratePaymentTime_ratingThree',\n 'leaveFeedback_ratePaymentTime_ratingFour',\n 'leaveFeedback_ratePaymentTime_ratingFive'\n ]\n }\n};\n","import 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 shouldShowRequestedCombinedShippingToast\n} from 'tradera-apps/tradera/components/vip/helpers/navigation-helper';\nimport { showSuccessToast } from 'tradera-services/toasts';\n\nconst modifyHistory = (match, history) => {\n return !(history.action === 'POP' && match.params.length > 0); // When using back button from a list to another (ie from \"sold\" to \"not sold\"), we should not modify the history object\n};\n\nconst defaultPayload = () => {\n return {\n filters: {\n modifiers: {\n query: {},\n paging: {}\n },\n filterBar: null,\n shownFilters: null\n }\n };\n};\n\n// eslint-disable-next-line react/display-name\nconst withPageInit = (Component, initialPayload = defaultPayload) => props => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n\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\n if (shouldShowRequestedCombinedShippingToast()) {\n showSuccessToast(\n 'checkout_shipping_requestCombinedShippingPriceInfo',\n 'checkout_shipping_combinedShippingPriceRequested'\n );\n removeHashAndSetNormalList();\n }\n }, [dispatch, state.page.listType]);\n\n const setDefaultListViewType = useCallback(() => {\n if (window.location.search.length !== 0) {\n return null;\n }\n if (\n state.page.listType === PAGE_LIST_TYPES.BUYER_PURCHASES &&\n !listViewType\n ) {\n return dispatch(\n setCookie(\n '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';\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 { nullifyUndefinedProperties } from 'tradera-utils/object';\nimport { capitalize } from 'tradera-utils/string';\nimport {\n SUPPORTED_LANGUAGES,\n DEFAULT_LANGUAGE\n} from 'tradera-lang/constants.mjs';\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\nconst getLanguageDisplayName = languageCodeIso2 =>\n capitalize(\n // Only works on server side, lacks good browser support\n new Intl.DisplayNames([languageCodeIso2], { type: 'language' }).of(\n languageCodeIso2\n )\n );\n\nexport const getInitialServerLanguage = ({\n preferredLanguage = DEFAULT_LANGUAGE,\n memberCountryCodeIso2 = null\n}) => {\n const defaultLanguage = {\n languageCodeIso2: preferredLanguage,\n displayName: getLanguageDisplayName(preferredLanguage)\n };\n const availableLanguages = SUPPORTED_LANGUAGES.map(languageCodeIso2 => ({\n languageCodeIso2,\n displayName: getLanguageDisplayName(languageCodeIso2)\n }));\n\n return {\n preferred: getInitialPreferredLanguage(\n preferredLanguage,\n availableLanguages,\n defaultLanguage\n ),\n available: availableLanguages,\n memberCountryCodeIso2\n };\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","import { createSlice } from '@reduxjs/toolkit';\nimport getInitialState, { getInitialServerLanguage } 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 initServerLanguage: (_state, { payload }) => {\n return getInitialServerLanguage(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 {\n initialize,\n initServerLanguage,\n setPreferred\n} = languageSlice.actions;\nexport default languageSlice.reducer;\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 hasRequestedCombinedShipping: 'has_requested_combined_shipping='\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\nexport const shouldShowRequestedCombinedShippingToast = () =>\n document.location.hash.includes(URL_HASHES.hasRequestedCombinedShipping);\n\nconst getBaseRedirectUrl = () => {\n // Add random query parameter to force reload when redirecting to this url\n // and only the hash differs\n const queryParams = {\n ...qs.parse(location.search, { ignoreQueryPrefix: true }),\n forceRedirect: Math.round(Math.random() * 100000)\n };\n return (\n location.protocol +\n '//' +\n location.host +\n location.pathname +\n qs.stringify(queryParams, { addQueryPrefix: true })\n );\n};\n\nexport const getBiddingRedirectUrl = amount => {\n const url = getBaseRedirectUrl() + '#' + URL_HASHES.openBiddingModal;\n if (!amount) return url;\n return `${url}=${amount}`;\n};\n\nexport const getWishlistRedirectUrl = () =>\n getBaseRedirectUrl() + '#' + URL_HASHES.saveInWishlist;\n\nexport const getBinRedirectUrl = () =>\n getBaseRedirectUrl() + '#' + URL_HASHES.openBinModal;\n","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 { 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 {\n formatQueryParams,\n stripItmFromQueryParameters,\n toQueryParameters\n} from 'tradera-utils/url';\n\nimport adsActions from './ads/actions';\nimport uiActions from './ui/actions';\nimport * as pushNotificationActions from './push-notifications/push-notifications-slice';\nimport { initializeFromInitData as initShippingRegion } from './shipping-region/actions';\nimport discoverActions from './discover/actions';\nimport { 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';\nimport { initializeFromInitData as initializeUiFromInitData } from './ui/initial-state';\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(initializeUiFromInitData(initData));\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 dispatch(uiActions.fetchSystemMessages());\n\n /**\n * We hydrate the store with discover results from initData\n * this will be dispatched before any rendering to reduce the time from first byte to first render.\n */\n if (initData?.discoverResponse) {\n dispatch(\n discoverActions.receiveSearchResults({\n endpoint: window.location.pathname,\n queryParams: stripItmFromQueryParameters(\n formatQueryParams(toQueryParameters(window.location.search))\n ),\n result: initData.discoverResponse\n })\n );\n } else if (initData?.item) {\n dispatch(\n viewItemActions.handleItemModel(initData.item, initData.memberId)\n );\n } else if (initData?.reportItem) {\n dispatch(handleReportItemModel(initData.reportItem));\n } else if (initData?.traderaShopProduct) {\n dispatch(\n adsActions.setAds(\n initData.traderaShopProduct.item.reduxContainer.ads\n )\n );\n }\n};\n","import actionTypes from './action-types';\n\nexport const initialize = initData => ({\n type: actionTypes.INITIALIZE,\n payload: initData\n});\n\nexport const defaultAction = data => ({\n type: actionTypes.DEFAULT_ACTION,\n payload: data\n});\n","/**\n * Count the number of system messages that should cause alerts and badges\n *\n * @param {object} systemMessages\n * @returns {number}\n */\nconst getSystemMessageAlertCount = (systemMessages = {}) => {\n return (\n (systemMessages.InvoiceOverdue ? 1 : 0) +\n (systemMessages.PayoutFailed ? 1 : 0) +\n (systemMessages.PayoutReadyBankAccountMissing ? 1 : 0) +\n (systemMessages.SwishNumberMissing ? 1 : 0) +\n (systemMessages.HyperwalletPayeeVerificationRequired ? 1 : 0)\n );\n};\n\nexport { getSystemMessageAlertCount };\n","import CONSTANTS from 'tradera-constants/state';\nimport { cache, CACHE_KEYS } from 'tradera-utils/cache';\nimport actionTypes from './action-types';\nimport { getInitialBadges } 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 return {\n ...state,\n badges: getInitialBadges()\n };\n };\n\n const openItemSettings = () => {\n const { payload } = action;\n return {\n ...state,\n itemSettings: {\n open: CONSTANTS.MODAL.OPEN,\n ...payload\n }\n };\n };\n\n const closeItemSettings = () => {\n return {\n ...state,\n itemSettings: {\n open: CONSTANTS.MODAL.CLOSED,\n item: {}\n }\n };\n };\n\n const openShareModal = () => ({\n ...state,\n shareModal: {\n isOpen: true,\n settings: action.payload\n }\n });\n\n const initialize = () => {\n const { payload } = action;\n return {\n ...payload\n };\n };\n\n const closeShareModal = () => ({\n ...state,\n shareModal: {\n isOpen: false,\n settings: null\n }\n });\n\n const 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';\nimport { getWindow } from 'tradera-utils/window';\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(getWindow().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};\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 },\n reducers: {\n setInternationalShipping: (state, action) => {\n state.messagingLink = action.payload.messagingLink;\n state.ownItem = action.payload.ownItem;\n const {\n imageUrl,\n title,\n shippingOptions,\n allowedBuyerRegion\n } = action.payload.data;\n state.allowedBuyerRegion = allowedBuyerRegion;\n state.imageUrl = imageUrl;\n state.title = title;\n state.fromCountryCodeIso2 =\n shippingOptions[0]?.fromCountryCodeIso2 || null;\n const { providers, rows } = shippingOptions\n .sort((a, b) =>\n a.toCountryCodeIso2 > b.toCountryCodeIso2 ? 1 : -1\n )\n .reduce(\n ({ providers, rows }, shippingOption) => {\n if (\n !providers.includes(shippingOption.shippingProvider)\n ) {\n providers = [\n ...providers,\n shippingOption.shippingProvider\n ];\n }\n if (\n rows.length === 0 ||\n rows[rows.length - 1].toCountryCodeIso2 !==\n shippingOption.toCountryCodeIso2\n ) {\n rows = [\n ...rows,\n {\n toCountryCodeIso2:\n shippingOption.toCountryCodeIso2\n }\n ];\n }\n rows[rows.length - 1] = {\n ...rows[rows.length - 1],\n [shippingOption.shippingProvider]: shippingOption\n };\n return { providers, rows };\n },\n { providers: [], rows: [] }\n );\n\n state.providers = providers;\n state.rows = rows;\n }\n }\n});\n\nexport const fetchInternationalShipping = ({ itemId, sellerId }) => async (\n dispatch,\n getState\n) => {\n const 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';\nimport { isServer } from 'tradera-utils/nextjs';\n\nvar initData = (!isServer && window.sellingGlobalData) || {};\nvar defaultDrafts = initData.defaultDrafts;\n\nconst resetUnwantedProperties = draft => {\n draft.itemId = 0;\n};\n\nconst isNullOrUndefined = val => val === null || val === undefined;\n\nconst getType = draft => {\n var hasOpeningPrice = !isNullOrUndefined(draft.openingBid);\n var hasFixedPrice = !isNullOrUndefined(draft.fixedPrice);\n if (hasOpeningPrice && !hasFixedPrice) {\n return 'Auction';\n }\n\n if (hasOpeningPrice && hasFixedPrice) {\n return 'AuctionBin';\n }\n\n if (!hasOpeningPrice && hasFixedPrice) {\n return 'PureBin';\n }\n\n return 'Unknown';\n};\n\nconst ensureApplicationId = draft => {\n if (!draft.metadata) {\n draft.metadata = {};\n }\n draft.metadata.applicationId = 'SYI-Riot';\n};\n\nconst ensureBraintree = draft => {\n if (\n userData.braintree.isBraintreeOnly &&\n draft.paymentOptions.length == 0\n ) {\n draft.paymentOptions.push('Braintree');\n }\n};\n\nconst isPureBin = draft => draft && getType(draft) === 'PureBin';\n\nconst isAuctionBin = draft => draft && getType(draft) === 'AuctionBin';\n\nconst getDefaultTemplateValue = propertyName =>\n defaultDrafts.newTemplate[propertyName];\n\nconst loadDraft = async draftId => {\n if (!draftId) {\n throw 'missing draftId';\n }\n\n const response = await httpClient.get(ENDPOINTS.SELLING_DRAFT(draftId));\n return response.data.draft;\n};\n\nconst loadDrafts = async () => {\n const response = await httpClient.get(ENDPOINTS.SELLING_DRAFTS);\n return response.data.items;\n};\n\nconst loadDefaultDraft = () => ({\n ...defaultDrafts.newItem,\n allowedBuyerRegion: undefined\n});\n\nconst loadDefaultTemplateDraft = () => ({\n ...defaultDrafts.newTemplate,\n allowedBuyerRegion: undefined\n});\n\nconst loadDraftFromTemplate = async templateId => {\n try {\n const response = await httpClient.post(\n ENDPOINTS.SELLING_DRAFT_LOAD_FROM_TEMPLATE,\n {\n templateId\n }\n );\n let draft = response.data.draft;\n resetUnwantedProperties(draft);\n draft.draftReason = 'Template';\n return draft;\n } catch {\n throw 'Could not load the draft from the template';\n }\n};\n\nconst saveDraft = async draft => {\n if (draft.draftReason === 'Template') {\n // Drafts for Templates cannot be saved\n throw 'Cannot save Template draft';\n }\n\n ensureApplicationId(draft);\n ensureBraintree(draft);\n\n const response = await httpClient.post(ENDPOINTS.SELLING_DRAFT_SAVE, draft);\n\n if (response.data.errorCode || !response.data.draftId) {\n throw response.data;\n }\n\n return response.data;\n};\n\nconst resolveImages = syiSlice => {\n var slots = syiSlice.images.slots;\n var images = [];\n for (var i = 0; i < slots.length; i++) {\n var slot = slots[i];\n if (slot.imageId == null) {\n continue;\n }\n if (slot.isListingImage) {\n images.push({\n draftImage: null,\n listingImage: {\n imageId: slot.imageId,\n rotationDegrees: slot.rotationDegrees,\n filename: slot.filename,\n imageGroupId: slot.imageGroupId\n },\n imageUrl: slot.imageUrl\n });\n } else {\n images.push({\n draftImage: {\n imageId: slot.imageId,\n rotationDegrees: slot.rotationDegrees\n },\n listingImage: null,\n imageUrl: slot.imageUrl\n });\n }\n }\n return images;\n};\n\nconst getCustomEndTime = itemDuration => {\n if (\n typeof itemDuration.customEndTimeHour !== 'string' ||\n typeof itemDuration.customEndTimeMinute !== 'string'\n ) {\n return null;\n }\n\n return (\n itemDuration.customEndTimeHour + ':' + itemDuration.customEndTimeMinute\n );\n};\n\nconst buildDraftFromState = syiSlice => {\n var draft = {};\n draft.draftId = syiSlice.draft.draftId;\n draft.draftReason = syiSlice.draft.draftReason;\n draft.MemberId = syiSlice.draft.memberId;\n draft.itemId = syiSlice.draft.itemId;\n draft.restart = syiSlice.draft.restart;\n draft.publishedPromoted = syiSlice.draft.publishedPromoted;\n draft.publishedHighlighted = syiSlice.draft.publishedHighlighted;\n draft.createdDate = syiSlice.draft.createdDate;\n draft.lastModifiedDate = syiSlice.draft.lastModifiedDate;\n draft.publishedDate = syiSlice.draft.publishedDate;\n draft.publishedAsItemType = syiSlice.draft.publishedAsItemType;\n draft.reference = syiSlice.draft.reference;\n draft.additionalDescriptions = syiSlice.draft.additionalDescriptions; //TODO\n draft.metadata = syiSlice.draft.metadata;\n if (syiSlice.draft.templateId) {\n draft.templateId = syiSlice.draft.templateId;\n }\n if (syiSlice.draft.templateName) {\n draft.templateName = syiSlice.draft.templateName;\n }\n\n draft.shortDescription = syiSlice.shortDescription.shortDescription;\n draft.longDescription = syiSlice.longDescription.longDescription;\n draft.descriptionLanguageCodeIso2 =\n syiSlice.shortDescription.descriptionLanguageCodeIso2;\n draft.currency = syiSlice.draft.currency;\n draft.categoryId = syiSlice.category.draftCategoryId;\n // categoryPath is needed on frontend for when cancelling edit of property.\n draft.categoryPath = syiSlice.category.draftCategoryPath;\n draft.images = resolveImages(syiSlice);\n draft.openingBid = syiSlice.price.openingBid;\n draft.reservePrice = syiSlice.price.reservePrice;\n draft.fixedPrice = syiSlice.price.isPureBinSelected\n ? syiSlice.price.fixedPrice\n : syiSlice.price.auctionBinPrice;\n draft.vat = syiSlice.price.vat;\n\n draft.durationDays = syiSlice.itemDuration.durationDays;\n draft.customEndTime = getCustomEndTime(syiSlice.itemDuration);\n draft.shippingOptions = syiSlice.shipping.selectedShippingOptions;\n draft.fromCountry = syiSlice.shipping.fromCountry;\n draft.paymentOptions = syiSlice.payment.selectedPaymentOptions;\n\n draft.itemCondition = syiSlice.itemCondition.itemCondition;\n draft.allowedBuyerRegion = syiSlice.buyerRegion.selectedBuyerRegion;\n\n draft.campaignCode = syiSlice.campaignCode.campaignCode;\n draft.campaignCodeId = syiSlice.campaignCode.campaignCodeId;\n\n draft.displayPromoted = syiSlice.extraFeatures.displayPromoted;\n draft.displayHighlighted = syiSlice.extraFeatures.displayHighlighted;\n\n draft.charityId = syiSlice.charityCampaign.charityId;\n if (\n featureToggles.isPennybridgeCharitiesEnabled &&\n syiSlice.charity?.charityId\n ) {\n draft.charity = syiSlice.charity;\n }\n draft.allowZeroDayAuctions = syiSlice.charityCampaign.allowZeroDayAuctions;\n draft.version = syiSlice.draft.version;\n\n draft.attributeValues = {\n termAttributeValues: syiSlice.attributes.categoryAttributes.map(\n attribute => {\n const values = attribute.options.reduce((acc, option) => {\n if (option.isActive) {\n acc.push(option.value);\n }\n return acc;\n }, []);\n return {\n id: attribute.id,\n backingField: attribute.backingField,\n userGenerated: true,\n values\n };\n }\n )\n };\n\n return draft;\n};\n\nconst deleteDraft = draftId => {\n return deleteDrafts([draftId]);\n};\n\nconst deleteDrafts = async draftIds => {\n try {\n await httpClient.post(ENDPOINTS.SELLING_DRAFTS_DELETE, {\n draftIds: draftIds\n });\n } catch {\n throw 'Could not delete the draft';\n }\n};\n\nexport default {\n isPureBin,\n isAuctionBin,\n getDefaultTemplateValue,\n loadDraft,\n loadDrafts,\n loadDefaultDraft,\n loadDefaultTemplateDraft,\n loadDraftFromTemplate,\n saveDraft,\n buildDraftFromState,\n deleteDraft,\n deleteDrafts,\n getCustomEndTime\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport { Analytics } from 'packages';\nimport getInitialState from './initial-state';\n\nconst profileSlice = createSlice({\n name: 'profile',\n initialState: getInitialState(),\n reducers: {\n setTranslatedReviews: (state, { payload }) => {\n state.translatedReviews = [\n ...state.translatedReviews,\n ...payload.items\n ];\n state.isTranslationOnDemandDisabled = false;\n state.translatedReviewsLoading = false;\n state.translatedReviewsLoadingError = false;\n state.translatedReviewsProviderName = payload.providerName;\n },\n 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 = ({\n localizationRegionPickerEnabled,\n memberCountryCodeIso2\n}) => {\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 = memberCountryCodeIso2\n ? memberCountryCodeIso2\n : GdprSettings.isFunctionalEnabled() &&\n cookieUtil.hasCookie(SHIPPING_COUNTRY) &&\n cookieUtil.readCookie(SHIPPING_COUNTRY);\n return {\n availableShippingCountries: [],\n isLoadingAvailableShippingCountries: false,\n hasLoadedAvailableShippingCountries: false,\n shippingCountry: { countryCodeIso2: preferredShippingCountry || 'SE' },\n localizationRegionPickerEnabled,\n regionPickerDismissed,\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 const {\n localizationRegionPickerEnabled,\n memberCountryCodeIso2\n } = payload;\n return initialState({\n localizationRegionPickerEnabled,\n memberCountryCodeIso2\n });\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","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';\nimport { FORCE_GEO_DEV } from 'tradera-constants/cookies';\nimport { isServer } from 'tradera-utils/nextjs';\n\nexport const fetchGeolocation = () => {\n if (isServer) {\n return Promise.reject(\n 'Cannot fetch geo information from server as that would give the wrong result.'\n );\n }\n\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 memberEmailMd5,\n memberEmailSha256,\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 memberEmailMd5,\n memberEmailSha256,\n memberFirstName,\n memberId,\n memberHeroImage,\n memberLastName,\n memberBirthdate,\n paymentSettings\n });\n};\n","import actionTypes from './action-types';\nimport { fetchGeolocation, getGeoPublicApiUrl } 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 initializeServerMember = member => ({\n type: actionTypes.INITIALIZE,\n payload: member\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 console.log(\n 'fetchGeolocation failed with error',\n error,\n ' url was',\n getGeoPublicApiUrl('')\n );\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 SYI_SHIPPING_BY_WEIGHT_DISMISSED: 'syiShippingByWeightDismissed',\n BATCH_PAYOUTS_ALERT_DISMISSED: 'batchPayoutsAlertDismissed',\n // State caches\n CACHE_MESSAGING_BADGES: 'cache.messagingBadges',\n CACHE_RECENTLY_VIEWED_ITEMS: 'cache.recentlyViewedItems',\n CACHE_SYSTEM_MESSAGES: 'cache.systemMessages',\n // Apple ID login user\n APPLE_ID_USER: 'appleId.user'\n};\n\nconst STORAGE_VALUES = {\n SAVE_SEARCH_HINT_CLICKED: 'CLOSE_CLICKED'\n};\n\nexport { STORAGE_KEYS, STORAGE_VALUES };\n","export const infoItemComponents = {\n BIDS: 'BIDS',\n TIME_LEFT: 'TIME_LEFT',\n ITEM_PRICE: 'ITEM_PRICE'\n};\n","import GdprSettings from 'tradera-utils/gdpr-settings';\nimport { STORAGE_KEYS } from 'tradera-constants/storage';\nimport logger from 'packages/logger';\nimport { isServer } from 'tradera-utils/nextjs';\n\n/**\n * Storage wrapper/utility\n */\nclass Storage {\n /**\n * @param {object} storage - Storage-compatible object\n * @param {function} [setFilter] - Functions that returns true/false for a storage key, deciding if it should be set in storage\n */\n constructor(storage, setFilter) {\n this.storage = storage;\n this.setFilter = setFilter;\n }\n\n get length() {\n return this.storage.length;\n }\n\n /**\n * @param {int} index\n * @returns {string}\n */\n key(index) {\n return this.storage.key(index);\n }\n\n /**\n * @param {string} key\n * @returns {null|any}\n */\n getItem(key) {\n const value = this.storage.getItem(key);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (error) {\n logger(error, {\n contexts: {\n storage: {\n action: 'getItem',\n key,\n value\n }\n }\n });\n }\n }\n return null;\n }\n\n getItemsByPrefix(prefix) {\n const items = {};\n for (let i = 0; i < this.storage.length; i++) {\n let key = this.key(i);\n if (key.startsWith(prefix)) {\n items[key] = this.getItem(key);\n }\n }\n return items;\n }\n\n /**\n * @param {string} key\n * @param {any} value\n * @returns {undefined}\n */\n setItem(key, value) {\n if (this.setFilter && !this.setFilter(key)) {\n return undefined;\n }\n try {\n this.storage.setItem(key, JSON.stringify(value));\n } catch (error) {\n logger(error, {\n contexts: {\n storage: {\n action: 'setItem',\n key,\n stringifiedLength: JSON.stringify(value).length,\n value\n }\n }\n });\n }\n }\n\n /**\n * @param {string} key\n * @returns {undefined}\n */\n removeItem(key) {\n return this.storage.removeItem(key);\n }\n\n clear() {\n return this.storage.clear();\n }\n\n /**\n * Removes all items whose keys start with prefix\n * @param {string} prefix\n */\n clearByPrefix(prefix) {\n // Loop in reverse because storage indexes will change as you delete items.\n for (let i = this.storage.length - 1; i >= 0; --i) {\n let key = this.key(i);\n if (key.startsWith(prefix)) {\n this.removeItem(key);\n }\n }\n }\n}\n\n/**\n * In-memory Storage object for testing & fallback\n */\nclass MemoryStorage {\n constructor() {\n this.storage = new Map();\n }\n\n get length() {\n return this.storage.size;\n }\n\n key(index) {\n const keys = Array.from(this.storage.keys());\n if (index in keys) {\n return keys[index];\n } else {\n return null;\n }\n }\n\n getItem(key) {\n return this.storage.get(key);\n }\n\n setItem(key, value) {\n this.storage.set(key, value);\n }\n\n removeItem(key) {\n this.storage.delete(key);\n }\n\n clear() {\n this.storage.clear();\n }\n}\n\n/**\n * Test if a storage implementation is available\n *\n * @param {Storage} storage\n * @returns {boolean}\n */\nfunction testStorage(storage) {\n if (!storage) {\n return false;\n }\n const TEST_KEY = 'STORAGE_TEST';\n const TEST_VALUE = '1';\n try {\n // This will throw an exception in some browsers when cookies/localStorage are explicitly disabled (i.e. Chrome)\n storage.setItem(TEST_KEY, TEST_VALUE);\n if (storage.getItem(TEST_KEY) === TEST_VALUE) {\n storage.removeItem(TEST_KEY);\n } else {\n throw new Error();\n }\n } catch (e) {\n return false;\n }\n return true;\n}\n\n// Standard local store with GDPR cookie filter and in-memory storage fallback\nconst defaultStorage =\n !isServer && testStorage(window.localStorage)\n ? window.localStorage\n : new MemoryStorage();\nconst gdprSettings = GdprSettings;\nconst localStore = new Storage(defaultStorage, key => {\n if (!Object.values(STORAGE_KEYS).includes(key)) {\n logger(`Storage key '${key}' not found in STORAGE_KEYS`);\n return false;\n }\n if (!gdprSettings.isFunctionalEnabled()) {\n console.warn('Local storage blocked by GDPR settings', true);\n return false;\n }\n return true;\n});\n\nexport { Storage, MemoryStorage, localStore };\n","/**\n * Using an accessible dialog or \"modal\" window. From Reach UI\n * https://ui.reach.tech/dialog\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { DialogOverlay, DialogContent } from '@reach/dialog';\nimport MediaQuery from 'react-responsive';\n\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\n\nconst mobileOnlyProps = { maxWidth: BREAKPOINT_SIZES[BREAKPOINTS.SM].max };\nconst desktopOnlyProps = { minWidth: BREAKPOINT_SIZES[BREAKPOINTS.MD].min };\nconst allDeviceProps = { minWidth: BREAKPOINT_SIZES[BREAKPOINTS.XS].min };\n\nclass DialogModal extends Component {\n static propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n desktop: PropTypes.bool,\n dismissOnOverlayClick: PropTypes.bool,\n mediaQueryProps: PropTypes.object,\n mobile: PropTypes.bool,\n mobileFullscreen: PropTypes.bool,\n onDismiss: PropTypes.func,\n style: PropTypes.object\n };\n\n static defaultProps = {\n className: '',\n desktop: false,\n dismissOnOverlayClick: true,\n mobile: false,\n mobileFullscreen: true\n };\n\n getDefaultMediaProps() {\n const { mobile, desktop } = this.props;\n if (mobile && desktop) {\n return allDeviceProps;\n }\n if (mobile) {\n return mobileOnlyProps;\n }\n if (desktop) {\n return desktopOnlyProps;\n }\n return allDeviceProps;\n }\n\n render() {\n const {\n children,\n className,\n dismissOnOverlayClick,\n onDismiss,\n mediaQuery,\n mobileFullscreen,\n style\n } = this.props;\n\n let mediaQueryProps;\n if (!mediaQuery) {\n mediaQueryProps = this.getDefaultMediaProps();\n } else {\n mediaQueryProps = mediaQuery;\n }\n\n return (\n \n {}}\n className={\n mobileFullscreen\n ? ' mobile-fullscreen'\n : ' mobile-alert'\n }>\n \n {children}\n \n \n \n );\n }\n}\n\nexport default DialogModal;\n","import { toLocalizedUrl } from 'tradera-utils/url';\nimport { getLanguage } from 'tradera-apps/syi/script/app_react/utils/language';\nimport { whenInitialized } from 'tradera-lang/boot-languages';\nimport i18n from 'i18next';\n\nfunction TriotException(message) {\n this.message = message;\n this.name = 'TriotException';\n}\n\n// Inherit riot's api\nvar triot = Object.create(riot);\n\n// Expose a global observable as triot.bus\n// Used by non-riot components, such as data-services\nObject.defineProperties(triot, {\n bus: {\n value: triot.observable(),\n enumerable: false,\n writable: false,\n configurable: false\n }\n});\n\n// Add the global bus to all riot components\n// so they can reach it as this.bus, ie this.bus.on('eventName' .. )\n// No more need to pass the bus around and no\n// more \"var bus = riot.observable()\" on different places\ntriot.mixin({\n init: function() {\n this.on('before-mount', function () {\n Object.defineProperties(this, {\n bus: {\n value: triot.bus,\n enumerable: false,\n writable: false,\n configurable: false\n }\n });\n });\n }\n});\n\ntriot.mixin({\n init: function() {\n this.toLocalizedUrl = url => {\n return toLocalizedUrl(url, getLanguage());\n };\n }\n});\n\ntriot.mixin({\n init: function() {\n let translate = () => '';\n this.t = (...args) => translate(...args);\n whenInitialized().then(({ t }) => {\n translate = t;\n this.update();\n });\n }\n});\n\n// Triot's mount functionality doesn't break if we try to mount\n// a component that doesn't exist. We add a safeMount function\n// that throws if number of mounted components < 1.\nfunction safeMount (selector, tagName, opts) {\n var mountedComponents = triot.mount(selector, tagName, opts);\n if (mountedComponents.length < 1) {\n throw new TriotException('No component mounted with selector: ' + selector);\n }\n return mountedComponents;\n}\n\n// Expose safeMount as triot.safeMount\nObject.defineProperties(triot, {\n safeMount: {\n value: safeMount,\n enumerable: false,\n writable: false,\n configurable: false\n }\n});\n\n// Function to unmount all components\nfunction unmountAll (keepRootTag) {\n var unmounted = 0;\n while (triot.vdom.length > 0) {\n triot.vdom[0].unmount(keepRootTag);\n unmounted++;\n }\n return unmounted;\n}\n\nfunction setupTeardown () {\n triot.bus.on('triot:teardown', function (payload) {\n payload = payload || {};\n var keepRootTag = !!payload.keepRootTag;\n unmountAll(keepRootTag);\n triot.bus.off('*');\n\n setupTeardown();\n });\n}\n\nsetupTeardown();\n\nexport default triot\n","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';\nimport { getWindow } from 'tradera-utils/window';\nimport { isServer } from 'tradera-utils/nextjs';\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 if (isServer) {\n throw new Error('Setting cookie is not supported on the server');\n }\n\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 getWindow().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(getWindow().document.cookie);\n }\n\n eraseCookie(key, path, domain) {\n if (!key || !this.readCookie(key)) {\n return false;\n }\n\n if (isServer) {\n throw new Error('Setting cookie is not supported on the server');\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 = { isLoggedIn: false }, 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 PAYNOVA_DIRECT_INVOICE: 'PaynovaDirectInvoice',\n PAYNOVA_INSTALLMENTS: 'PaynovaInstallments'\n};\n\nexport const PAYMENT_OPTION_STATUS = {\n AVAILABLE: 'Available',\n UNAVAILABLE_DUE_TO_AMOUNT: 'UnavailableDueToAmount'\n};\n\nexport default () => {\n return {\n buyerMember: null,\n checkoutSummary: {\n hasError: false,\n isFetching: false\n },\n hasError: false,\n items: null,\n isFetching: false,\n payment: {\n hasError: false,\n isFetching: false,\n paymentOptions: null,\n selectedPayment: null,\n paymentMethodData: null\n },\n sellerMember: null,\n modal: {\n open: '',\n status: MODAL_STATUS.START\n },\n showDisableOverlay: false,\n ongoingPaymentAttempt: null,\n shippingInfo: {\n shippingOptions: null,\n shippingPriceRange: null,\n shippingDiscount: null\n },\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\nexport const getSelectedShippingProducts = (\n shippingByWeight,\n selectedShippingOptions,\n offerTakeaway\n) => {\n const result = selectedShippingOptions.map(selected => {\n const shippingOption = shippingByWeight\n .flatMap(options => options.products)\n .find(\n product =>\n product.providerId === selected.type &&\n product.weight === selected.weight &&\n product.id === selected.productId\n );\n return shippingOption\n ? {\n ...shippingOption,\n cost: selected?.cost\n }\n : null;\n });\n\n if (offerTakeaway) {\n const takeAwayOption =\n result.length === 0\n ? {\n type: 'TakeawayOnly',\n providerId: 'TakeawayOnly',\n name: 'Endast avhämtning',\n summaryDisplayName: 'Endast avhämtning'\n }\n : {\n type: 'Takeaway',\n providerId: 'Takeaway',\n name: 'Avhämtning',\n summaryDisplayName: 'Avhämtning'\n };\n result.push(takeAwayOption);\n }\n\n return result.filter(x => x !== null);\n};\n","import myTraderaItemActions from '../state/actions/my-tradera-items';\nimport dayjs from 'dayjs';\nimport featureToggles from '../utils/feature-toggles';\nimport { getMessagingThreadLink } from './messaging-helpers';\nimport 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\nconst hasStampsAsSelectedShippingType = item => {\n return (\n item.transaction.selectedShipping &&\n item.transaction.selectedShipping.type == 'PostNordStamp'\n );\n};\n\n// isPrimaryAction = will be primary action unless one before has not already been set as primary action\n// Hence, the order of the actions matter.\nconst commonActions = item => ({\n sellSimilar: () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Sälj liknande',\n getTranslatedLabel: t => t('myt_itemCard_actions_sellSimilar'),\n url: `/selling/sell-similar/${item.itemId}`,\n gaLabel: 'SellSimilar',\n isVisible: () => true,\n isPrimaryAction: () => true\n })\n});\n\nconst hasTransactionDateNewerThen60Days = item => {\n const dateLimit = dayjs().subtract(60, 'day');\n return dayjs(item.transaction?.transactionDate?.date).isAfter(dateLimit);\n};\n\nexport const soldActions = (\n item,\n listViewType,\n memberId,\n memberMessagingParticipation\n) => {\n const common = commonActions(item);\n const actions = [\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Ändra fraktpris',\n getTranslatedLabel: t =>\n item.haveCombinedShipping && item.haveMultipleRows\n ? item.transaction.shippingDiscount\n ? t(\n 'myt_itemCard_actions_update_combinedshipping_change'\n )\n : t('myt_itemCard_actions_update_combinedshipping')\n : t('myt_itemCard_actions_update_shipping'),\n dispatch: dispatch => {\n dispatch(\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 !hasStampsAsSelectedShippingType(item) &&\n !item.isArchived\n );\n }\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Betala frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_payShipping'),\n url: item.transaction.unpaidShippingUrl || `/my/shipping/checkout`,\n gaLabel: 'PayShipping',\n isVisible: () => item.transaction.hasUnpaidShipping,\n isPrimaryAction: () => item.transaction.hasUnpaidShipping\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avbryt fraktbokning',\n getTranslatedLabel: t => t('myt_itemCard_actions_deleteShipping'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellingDeleteShipment(\n item.transaction.unpaidShippingId,\n item.transaction.purchaseOrderId,\n listViewType\n )\n );\n },\n gaLabel: 'DeleteShipping',\n isVisible: () =>\n item.transaction.hasUnpaidShipping && !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avmarkera som bokad',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_unmarkAsShippingBooked'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellingUnmarkAsShippingBooked(\n [item.transaction.purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n );\n },\n gaLabel: 'UnmarkAsShippingBooked',\n isVisible: () => {\n return (\n !item.transaction.trackingLink &&\n !item.haveMultipleRows &&\n item.transaction.sellerState.shippingBooked &&\n !item.transaction.sellerState.shipped\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.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","import initData from 'init-data';\n\nexport default {\n list: [],\n topLevelCategories:\n initData.allCategories?.map(({ id, name, href }) => ({\n id,\n title: name,\n href\n })) || [],\n isFetching: false,\n error: null\n};\n","import actionTypes from './action-types';\nimport initialState from './initial-state';\n\nexport default (state = initialState, action) => {\n if (!action || !action.type) return state;\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...state,\n ...action.payload\n };\n case actionTypes.RECEIVE_CATEGORY_LIST:\n return {\n ...state,\n list: action.payload,\n isFetching: false,\n error: null\n };\n case actionTypes.REQUEST_CATEGORY_LIST:\n return { ...state, isFetching: true, error: null };\n case actionTypes.HANDLE_CATEGORY_LIST_ERROR:\n return { ...state, isFetching: false, error: action.payload };\n default:\n return state;\n }\n};\n","import CONSTANTS from 'tradera-apps/tradera/components/discover/constants/constants';\n\nconst normalizeFilters = filters => {\n if (filters) {\n let normalized = {};\n filters.map(filter => {\n const { parameter } = filter;\n normalized = {\n ...normalized,\n [parameter]: {\n ...filter\n }\n };\n });\n return normalized;\n }\n};\n\nconst activeFilters = filters => {\n if (filters) {\n let normalized = [];\n filters.map(filter => {\n const { selectedValue } = filter;\n if (CONSTANTS.ACTIVE_FILTER_STATES.includes(selectedValue)) {\n normalized.push(filter);\n }\n });\n return normalized;\n }\n};\n\nconst normalize = responseData => {\n const normalized = {\n activeBrands: [],\n activeFilters: [],\n attributeFilters: [],\n categoryPath: responseData.categoryPath || [],\n currentCategoryId: responseData.categoryPath?.[0]?.id || 0,\n fallbackItemsById: [],\n filterCategories: {},\n filterPrice: {},\n filters: {},\n headerText: responseData.headerText || null,\n internalSearch: responseData.internalSearchBar || {},\n introText: responseData.introText || null,\n isSavedSearchEmailEnabled:\n responseData?.isSavedSearchEmailEnabled || false,\n isShopOwnedByCurrentMember:\n responseData?.itemsOnDisplay?.isShopOwnedByCurrentMember || false,\n itemsById: [],\n itemsOnDisplayById: [],\n mainText: responseData.mainText || null,\n pagination: responseData.pagination || null,\n fallbackUrl: responseData.fallbackUrl || null,\n totalItems: responseData.totalItems || 0,\n discoverTranslationResult: responseData.discoverTranslationResult || {},\n reduxContainer: responseData.reduxContainer || {}\n };\n\n if (responseData.filters) {\n normalized.filterCategories = responseData.filters.categoryFilter;\n normalized.filters = normalizeFilters(\n responseData.filters.singleOptionFilters\n );\n normalized.activeFilters = activeFilters(\n responseData.filters.singleOptionFilters\n );\n normalized.filterPrice = responseData.filters.priceRangeFilter;\n normalized.attributeFilters = responseData.filters.attributeFilters;\n }\n\n if (responseData.items) {\n responseData.items.map(item => {\n normalized.itemsById.push(item.itemId);\n });\n }\n\n if (responseData.itemsOnDisplay) {\n responseData.itemsOnDisplay.items.map(item => {\n normalized.itemsOnDisplayById.push(item.itemId);\n });\n }\n\n if (responseData.fallbackItems) {\n responseData.fallbackItems.map(item => {\n normalized.fallbackItemsById.push(item.itemId);\n });\n }\n\n normalized.status = responseData.status;\n return normalized;\n};\n\nexport { normalize };\n","import actionTypes from './action-types';\nimport memberActionTypes from '../member/action-types';\nimport { normalize } from './helpers';\n\nexport default (state = {}, action) => {\n const requestSearchResults = () => {\n return {\n ...state,\n error: null\n };\n };\n\n const receiveSearchResults = () => {\n const {\n payload: { result = {}, endpoint = null, queryParams = null }\n } = action;\n return {\n ...state,\n endpoint,\n error: null,\n hasResult: true,\n queryParams,\n ...normalize(result)\n };\n };\n\n const handleSearchResultsError = () => {\n return {\n ...state,\n error: action.payload,\n hasResult: true,\n ...normalize({})\n };\n };\n\n const setSingleFilter = () => ({\n ...state,\n filters: {\n ...state.filters,\n [action.payload.filter]: {\n ...state.filters[action.payload.filter],\n selectedValue: action.payload.value\n }\n }\n });\n\n const addItemOnDisplay = () => {\n const { payload } = action;\n return {\n ...state,\n itemsOnDisplayById: state.itemsOnDisplayById.includes(\n payload.itemId\n )\n ? [...state.itemsOnDisplayById]\n : [...state.itemsOnDisplayById, payload.itemId]\n };\n };\n\n const removeItemOnDisplay = () => {\n const { payload } = action;\n const items = state.itemsOnDisplayById.filter(\n item => item !== payload.itemId\n );\n return {\n ...state,\n itemsOnDisplayById: [...items]\n };\n };\n\n const setCategoryPath = () => {\n return {\n ...state,\n categoryPath: action.payload,\n currentCategoryId: (action.payload && action.payload[0].id) || 0\n };\n };\n\n const setCurrentCategoryId = () => {\n return {\n ...state,\n currentCategoryId: action.payload\n };\n };\n\n // Set show/hide buyer region filter when member geo changes\n const showOrHideAllowedBuyerRegionFilter = () => {\n const { payload } = action;\n return {\n ...state,\n displayAllowedBuyerRegionFilter:\n state.displayAllowedBuyerRegionFilter ||\n payload?.isoCode !== 'SE'\n };\n };\n\n const reset = () => {\n return action.payload.initialState;\n };\n\n const initialize = () => {\n return {\n ...action.payload\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.INITIALIZE]: initialize,\n [actionTypes.REQUEST_SEARCH_RESULTS]: requestSearchResults,\n [actionTypes.RECEIVE_SEARCH_RESULTS]: receiveSearchResults,\n [actionTypes.HANDLE_SEARCH_RESULTS_ERROR]: handleSearchResultsError,\n [actionTypes.SET_SINGLE_FILTER]: setSingleFilter,\n [actionTypes.ADD_ITEM_ON_DISPLAY]: addItemOnDisplay,\n [actionTypes.REMOVE_ITEM_ON_DISPLAY]: removeItemOnDisplay,\n [actionTypes.SET_CATEGORY_PATH]: setCategoryPath,\n [actionTypes.SET_CURRENT_CATEGORY_ID]: setCurrentCategoryId,\n [memberActionTypes.SET_GEOLOCATION]: showOrHideAllowedBuyerRegionFilter,\n [actionTypes.RESET]: reset\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","import actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...action.payload\n };\n case actionTypes.DEFAULT_ACTION:\n return {\n ...state,\n default: action.payload\n };\n default:\n return state;\n }\n};\n","import actionTypes from './action-types';\n\n// The max size of the item cache * before adding new items *\nconst ITEM_CACHE_MAX_SIZE = 500;\nconst RECENTLY_VIEWED_MAX_LENGTH = 4;\n\nexport 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 'SET_CATEGORY_RESTRICTION':\n return { ...state, categoryRestriction: action.payload };\n case 'TOGGLE_MODAL':\n var newValue =\n state.openModal === action.payload ? null : action.payload;\n return { ...state, openModal: newValue };\n case 'SHOW_MODAL':\n return {\n ...state,\n openModal: action.modalId,\n openModalData: action.modalData\n };\n case 'HIDE_MODAL':\n return { ...state, openModal: null };\n case 'ENABLE_AUTOSAVE':\n return { ...state, autoSaveEnabled: true };\n case 'DISABLE_AUTOSAVE':\n return { ...state, autoSaveEnabled: false };\n case 'SET_DRAFT_CAN_BE_RESUMED':\n return { ...state, draftCanBeResumed: action.payload };\n case 'SET_ITEM_UPDATING':\n return { ...state, itemUpdating: action.payload };\n case 'SET_ITEM_UPDATED':\n return { ...state, itemUpdated: action.payload };\n default:\n return state;\n }\n};\n","var initialState = {\n shortDescription: null,\n longDescription: null,\n categoryId: null,\n images: null,\n openingBid: null,\n reservePrice: null,\n fixedPrice: null,\n durationDays: null,\n customEndTime: null,\n shippingOptions: null,\n paymentOptions: null,\n itemCondition: null,\n step1: true,\n step2: true,\n step3: true,\n step4: true\n};\n\nexport default (state, action) => {\n var step1Errors = function(state) {\n return (\n !!state.shortDescription ||\n !!state.categoryId ||\n !!state.images ||\n !!state.longDescription ||\n !!state.itemCondition\n );\n };\n\n var step2Errors = function(state) {\n return (\n !!state.openingBid ||\n !!state.reservePrice ||\n !!state.fixedPrice ||\n !!state.durationDays ||\n !!state.customEndTime\n );\n };\n\n var step3Errors = function(state) {\n return !!state.shippingOptions;\n };\n\n var step4Errors = function(state) {\n return !!state.paymentOptions;\n };\n\n state = state || initialState;\n switch (action.type) {\n case 'SET_ERROR':\n state = { ...state };\n state[action.propertyName] = action.error;\n break;\n default:\n return state;\n }\n\n const e1 = step1Errors(state);\n const e2 = step2Errors(state);\n const e3 = step3Errors(state);\n const e4 = step4Errors(state);\n state = {\n ...state,\n step1: e1 || undefined,\n step2: e2 || undefined,\n step3: e3 || undefined,\n step4: e4 || undefined\n };\n\n return state;\n};\n","const optionHasError = option => !option.type;\n\nexport const ensureGoodShippingOptions = shippingOptions => {\n shippingOptions = shippingOptions || [];\n return shippingOptions.find(optionHasError) ? [] : shippingOptions;\n};\n","import { validateValidShippingPrice } from './validate-valid-shipping-price';\nimport initData from 'init-data';\n\nconst errors = {\n noShipping: 'syi_validation_shipping_no_shipping',\n empty: 'syi_validation_shipping_enter_method_and_cost',\n invalid: 'syi_validation_shipping_method_invalid',\n duplicate: 'syi_validation_shipping_method_identical',\n weight: 'syi_validation_shipping_enter_weight'\n};\n\nexport function validate(newState) {\n if (!newState.offerTakeaway && !newState.offerShipping) {\n newState.globalValidationError = errors.noShipping;\n newState.validationErrors = {\n global: errors.noShipping\n };\n return newState;\n }\n\n newState.globalValidationError = null;\n\n if (!initData.featureSwitches['shipping-by-weight']) {\n const validateProviders = providers => {\n let hasAnyNonValidOption = false;\n let hasAnyValidOption = false;\n let weightIsInvalid = false;\n providers.forEach(provider => {\n provider.products.forEach(product => {\n if (!product.selected || !newState.offerShipping) {\n // Not selected, set to valid without error\n product.isValid = true;\n product.validationError = null;\n product.isWeightValid = true;\n product.weightValidationError = null;\n } else {\n const errorMessage = validateValidShippingPrice(\n product,\n provider.useAdvancedWidget\n );\n if (errorMessage) {\n product.isValid = false;\n product.validationError = errorMessage;\n hasAnyNonValidOption = true;\n } else {\n product.isValid = true;\n product.validationError = null;\n hasAnyValidOption = true;\n }\n if (provider.useAdvancedWidget && !product.productId) {\n product.isWeightValid = false;\n product.weightValidationError = errors.weight;\n weightIsInvalid = true;\n } else {\n product.isWeightValid = true;\n product.weightValidationError = null;\n }\n }\n });\n });\n return { hasAnyNonValidOption, hasAnyValidOption, weightIsInvalid };\n };\n\n const primaryValidations = validateProviders(\n newState.primaryShippingProviders\n );\n const secondaryValidations = validateProviders(\n newState.secondaryShippingProviders\n );\n\n const getFirstValidationError = ({\n hasAnyNonValidOption,\n weightIsInvalid,\n hasAnyValidOption\n }) => {\n if (hasAnyNonValidOption) {\n return errors.invalid;\n }\n if (weightIsInvalid) {\n return errors.weight;\n }\n if (!hasAnyValidOption) {\n return errors.empty;\n }\n return null;\n };\n\n const getDuplicateError = () => {\n if (\n newState.selectedShippingOptions.length > 1 &&\n JSON.stringify(newState.selectedShippingOptions[0]) ===\n JSON.stringify(newState.selectedShippingOptions[1])\n ) {\n return errors.duplicate;\n }\n return null;\n };\n\n newState.primaryValidationError = newState.offerShipping\n ? getFirstValidationError(primaryValidations)\n : null;\n newState.secondaryValidationError =\n newState.offerShipping && newState.secondaryShippingOptionOpen\n ? getFirstValidationError(secondaryValidations) ||\n getDuplicateError()\n : null;\n }\n\n const validationErrors = {};\n if (newState.primaryValidationError)\n validationErrors.primary = newState.primaryValidationError;\n if (newState.secondaryValidationError)\n validationErrors.secondary = newState.secondaryValidationError;\n newState.validationErrors = validationErrors;\n\n return newState;\n}\n","export function validateValidShippingPrice(so, isAdvanced) {\n if (\n so.type == null ||\n so.type === '' ||\n so.type === 'Takeaway' ||\n so.type === 'TakeawayOnly'\n ) {\n return null;\n }\n if (so.cost === null || so.cost === undefined) {\n return isAdvanced ? null : 'syi_validation_shipping_price_missing';\n }\n if (!isInt(so.cost)) {\n return 'syi_validation_shipping_amount_whole_number';\n }\n if (so.cost > 10000) {\n return 'syi_validation_shipping_max_price';\n }\n if (so.cost < 0) {\n return 'syi_validation_shipping_min_price';\n }\n return null;\n}\n\nfunction isInt(number) {\n return number % 1 === 0;\n}\n","import { getAllProducts } from './shipping-selectors';\n\nexport const getSelectedShippingOptions = state => {\n const result = state.offerShipping\n ? getAllProducts(state)\n .filter(product => product.selected)\n .map(product => {\n const cost =\n product.cost || product.cost === 0\n ? product.cost\n : product.selectedVariant\n ? product.selectedVariant.price\n : product.cost;\n return {\n type: product.selectedVariant?.type || product.type,\n cost,\n name: product.name,\n summaryDisplayName: product.summaryDisplayName,\n weight: product.weight,\n productId: product.productId\n };\n })\n : [];\n\n if (state.offerTakeaway) {\n const takeAwayOption =\n result.length === 0\n ? {\n type: 'TakeawayOnly',\n name: 'Endast avhämtning',\n summaryDisplayName: 'Endast avhämtning'\n }\n : {\n type: 'Takeaway',\n name: 'Avhämtning',\n summaryDisplayName: 'Avhämtning'\n };\n result.push(takeAwayOption);\n }\n return result;\n};\n","import { createReducer } from '@reduxjs/toolkit';\nimport {\n getAllProducts,\n getPrimaryOrSecondaryProducts,\n getSelectedProduct,\n getSelectedShippingProducts\n} from './shipping-selectors';\nimport { ensureGoodShippingOptions } from './ensure-good-shipping-options';\nimport { validate } from './validate';\nimport { getSelectedShippingOptions } from './get-selected-shipping-options';\nimport { v4 as uuidv4 } from 'uuid';\n\nconst getUuid = () => uuidv4();\n\nconst initialState = validate({\n primaryShippingProviders: [],\n secondaryShippingProviders: [],\n validationErrors: {},\n globalValidationError: null,\n primaryValidationError: null,\n secondaryValidationError: null,\n secondaryShippingOptionOpen: false,\n shippingByWeight: [],\n selectedShippingOptions: [],\n shippingOptionsLoading: false,\n shippingOptionsError: false,\n showPrimaryShippingCalculator: false,\n hasPrimaryCalculatorSuggestions: false,\n showSecondaryShippingCalculator: false,\n hasSecondaryCalculatorSuggestions: false,\n offerTakeaway: false,\n offerShipping: false,\n isLoadingProvidersWithProducts: false,\n defaultCalculatorDimensions: {\n height: 0,\n width: 0,\n length: 0,\n weight: 0\n },\n primaryCalculatorDimensions: null,\n secondaryCalculatorDimensions: null,\n forceFreeShipping: false,\n fromCountry: null\n});\n\nconst getProviderByProductType = (providers, productType) =>\n providers.find(\n provider =>\n !!provider.products.find(product => product.type === productType)\n );\n\nconst shippingContainsTakeaway = shippingOptions =>\n shippingOptions.some(\n shippingOption =>\n shippingOption.type === 'Takeaway' ||\n shippingOption.type === 'TakeawayOnly'\n );\n\nconst shippingContainsProduct = shippingOptions =>\n shippingOptions.some(\n shippingOption =>\n shippingOption.type !== 'Takeaway' &&\n shippingOption.type !== 'TakeawayOnly'\n );\n\nexport default createReducer(initialState, {\n SET_SUGGESTED_SHIPPING_PRODUCTS: (state, action) => {\n const products = getPrimaryOrSecondaryProducts(\n state,\n action.payload.primary\n );\n products.forEach(product => {\n // Clear previous selections\n product.selected = false;\n product.selectedVariant = null;\n product.productId = null;\n product.cost = state.forceFreeShipping ? 0 : null;\n product.weight = null;\n\n const suggestedProduct = action.payload.shippingProducts.find(\n p => p.type === product.type\n );\n if (suggestedProduct) {\n product.calculatorSuggestion = {\n description: suggestedProduct.description,\n cost: suggestedProduct.cost,\n additionalInfo: suggestedProduct.additionalInfo\n };\n } else {\n product.calculatorSuggestion = null;\n }\n });\n\n if (action.payload.primary) {\n state.hasPrimaryCalculatorSuggestions = true;\n } else {\n state.hasSecondaryCalculatorSuggestions = true;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n CLEAR_SUGGESTED_SHIPPING_PRODUCTS: (state, action) => {\n const products = getPrimaryOrSecondaryProducts(\n state,\n action.payload.primary\n );\n products.forEach(product => {\n const suggestion = product.calculatorSuggestion;\n product.calculatorSuggestion = null;\n if (product.selected) {\n // Clear automatic calculator suggestion selections,\n // but save selection for selected product if changed.\n if (!suggestion) {\n // No values are set from suggestion. Save selection\n return;\n }\n if (\n product.selectedVariant &&\n product.selectedVariant.price !== suggestion.cost\n ) {\n // Values are changes from suggestion. Save selection\n return;\n }\n if (\n product.selectedVariant?.price === suggestion.cost &&\n (product.cost || product.cost === 0)\n ) {\n // Own price set. Save selection\n return;\n }\n if (\n !product.selectedVariant &&\n product.cost !== suggestion.cost\n ) {\n // Own price set. Save selection\n return;\n }\n // No values are manually changed. Go ahead and remove selection\n }\n product.selectedVariant = null;\n product.productId = null;\n product.cost = state.forceFreeShipping ? 0 : null;\n product.weight = null;\n });\n\n if (action.payload.primary) {\n state.hasPrimaryCalculatorSuggestions = false;\n } else {\n state.hasSecondaryCalculatorSuggestions = false;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n RESET_SHIPPING_OPTIONS: state => {\n // TODO: primaryShippingOption is never set. Probably remove.\n state.primaryShippingOption = null;\n state.secondaryShippingOption = null;\n state.selectedShippingOptions = [];\n state.offerShipping = false;\n return validate(state);\n },\n RESET_SELECTED_SHIPPING_OPTIONS: state => {\n const products = getAllProducts(state);\n products.forEach(product => {\n product.selected = false;\n product.selectedVariant = null;\n product.productId = null;\n product.cost = null;\n product.weight = null;\n });\n state.forceFreeShipping = false;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_OPTIONS: (state, action) => {\n const shippingOptions = ensureGoodShippingOptions(action.payload);\n\n // Set a product to visible and hides the rest, if the type to be visible is found in the list.\n const updateVisibilities = (products, typeToBeVisible) => {\n if (products.length === 1) return;\n const typeToBeVisibleExists = products.find(\n product => product.type === typeToBeVisible\n );\n if (!typeToBeVisibleExists) return;\n products.forEach(\n product => (product.visible = product.type === typeToBeVisible)\n );\n };\n\n const updateProductIfType = (\n product,\n { type, cost, productId, weight }\n ) => {\n let isProductForOption = null;\n if (!product.variants || product.variants.length === 0) {\n isProductForOption = product.type === type;\n } else {\n isProductForOption = !!product.variants.find(\n x => x.id === productId && x.type === type\n );\n }\n if (isProductForOption) {\n product.selected = true;\n product.cost = cost;\n product.productId = productId;\n product.weight = weight;\n } else {\n product.selected = false;\n }\n };\n\n const updateProviderProducts = (products, option) => {\n products.forEach(product => updateProductIfType(product, option));\n updateVisibilities(products, option.type);\n };\n\n if (typeof shippingOptions[0] === 'object') {\n const option = shippingOptions[0];\n const providers = state.primaryShippingProviders;\n providers.forEach(provider =>\n updateProviderProducts(provider.products, option)\n );\n state.offerShipping = true;\n } else {\n state.offerShipping = false;\n }\n\n if (typeof shippingOptions[1] === 'object') {\n const option = shippingOptions[1];\n const providers = state.secondaryShippingProviders;\n providers.forEach(provider =>\n updateProviderProducts(provider.products, option)\n );\n const provider = getProviderByProductType(providers, option.type);\n state.showMoreSecondaryOptions =\n state.showMoreSecondaryOptions ||\n (provider && !provider.promoted);\n state.secondaryShippingOptionOpen = true;\n } else {\n state.secondaryShippingOptionOpen = false;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n\n return validate(state);\n },\n TOGGLE_SHIPPING_OPTION: (state, action) => {\n const providers = action.payload.primary\n ? state.primaryShippingProviders\n : state.secondaryShippingProviders;\n const showShippingCalculator = action.payload.primary\n ? state.showPrimaryShippingCalculator\n : state.showSecondaryShippingCalculator;\n\n // Hide products so only one is visible per provider\n const productProvider = getProviderByProductType(\n providers,\n action.payload.type\n );\n productProvider.products.forEach(product => (product.visible = false));\n\n const products = providers.flatMap(provider => provider.products);\n const product = products.find(p => p.type === action.payload.type);\n const previousValue = product.selected;\n products.forEach(p => (p.selected = false));\n product.selected = !previousValue;\n product.visible = true;\n\n if (showShippingCalculator) {\n const suggestedProduct = product.calculatorSuggestion;\n if (suggestedProduct) {\n if (\n product.variants?.some(\n variant => variant.price === suggestedProduct.cost\n )\n ) {\n const matchingVariant = product.variants.find(\n variant => variant.price === suggestedProduct.cost\n );\n product.selectedVariant = matchingVariant;\n product.productId = matchingVariant.id;\n product.weight = matchingVariant.weight;\n } else {\n product.cost = state.forceFreeShipping\n ? 0\n : suggestedProduct.cost;\n }\n } else {\n // Clear previous selections\n product.selectedVariant = null;\n product.productId = null;\n product.cost = state.forceFreeShipping ? 0 : null;\n product.weight = null;\n }\n }\n\n if (product.variants.length === 1) {\n const variant = product.variants[0];\n product.selectedVariant = variant;\n product.productId = variant.id;\n product.weight = variant.weight;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_OPTION_COST: (state, action) => {\n const product = getSelectedProduct(state, action.payload.primary);\n product.cost = action.payload.cost;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_OPTION_VARIANT: (state, action) => {\n const product = getSelectedProduct(state, action.payload.primary);\n\n product.selectedVariant = action.payload.variant;\n product.productId = action.payload.variant?.id;\n product.weight = action.payload.variant?.weight;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n\n SET_SHIPPING_OPTIONS_BY_WEIGHT: (state, action) => {\n const {\n productsPerWeightSpan,\n shippingOptions,\n bringEnabled\n } = action.payload;\n\n state.offerShipping = shippingContainsProduct(shippingOptions);\n state.offerTakeaway = shippingContainsTakeaway(shippingOptions);\n\n //Decorate products with cost, type & productId for draft api:\n const productsDecorated = productsPerWeightSpan.map(weightClass => {\n const productsWithDecoration = weightClass.products.map(\n product => ({\n ...product,\n cost: product.price,\n productId: product.id,\n type: product.providerId,\n uuid: getUuid()\n })\n );\n const filteredProductsWithDecoration = productsWithDecoration.filter(\n shippingProvider =>\n shippingProvider.providerId !== 'BringDenmark' ||\n bringEnabled\n );\n return { ...weightClass, products: filteredProductsWithDecoration };\n });\n\n state.shippingByWeight = productsDecorated;\n state.selectedShippingOptions = getSelectedShippingProducts(\n productsDecorated,\n shippingOptions,\n state.offerTakeaway\n );\n state.shippingOptionsLoading = false;\n state.shippingOptionsError = false;\n return validate(state);\n },\n\n SET_SHIPPING_OPTION_SELECTED: (state, action) => {\n const { payload } = action;\n\n const selectedOptions = getSelectedShippingProducts(\n state.shippingByWeight,\n payload,\n state.offerTakeaway\n );\n\n if (shippingContainsProduct(selectedOptions)) {\n state.offerShipping = true;\n } else {\n state.offerShipping = false;\n }\n\n state.selectedShippingOptions = selectedOptions;\n\n return validate(state);\n },\n\n SET_SHIPPING_SELECTED: (state, action) => {\n state.offerShipping = action.payload.offerShipping;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_TAKEAWAY_SELECTED: (state, action) => {\n state.offerTakeaway = action.payload.offerTakeaway;\n if (action.payload.shippingByWeightEnabled) {\n state.selectedShippingOptions = getSelectedShippingProducts(\n state.shippingByWeight,\n state.selectedShippingOptions,\n state.offerTakeaway\n );\n } else {\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n }\n\n return validate(state);\n },\n SET_SECONDARY_SHIPPING_OPTION_OPEN: (state, action) => {\n return validate({\n ...state,\n secondaryShippingOptionOpen:\n action.payload.secondaryShippingOptionOpen\n });\n },\n REMOVE_SHIPPING_OPTION: (state, action) => {\n getPrimaryOrSecondaryProducts(state, action.payload.primary).forEach(\n product => (product.selected = false)\n );\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n MAKE_SECONDARY_SHIPPING_OPTION_PRIMARY: state => {\n const tmp = state.primaryShippingProviders;\n state.primaryShippingProviders = state.secondaryShippingProviders;\n state.secondaryShippingProviders = tmp;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n FORCE_FREE_SHIPPING: state => {\n const products = getAllProducts(state);\n products.forEach(product => {\n product.cost = 0;\n });\n state.forceFreeShipping = true;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n FREE_SHIPPING_PAID_BY_PROVIDER: (state, action) => {\n const { providerName } = action.payload;\n const products = getAllProducts(state);\n products.forEach(product => {\n if (product.type !== providerName) {\n return;\n }\n product.cost = 0;\n });\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_PROVIDERS_WITH_PRODUCTS: (state, action) => {\n state.primaryShippingProviders = action.payload;\n state.secondaryShippingProviders = action.payload;\n state.isLoadingProvidersWithProducts = false;\n\n return validate(state);\n },\n SET_SHIPPING_PROVIDERS_WITH_PRODUCTS_FETCHING: state => {\n state.isLoadingProvidersWithProducts = true;\n\n return validate(state);\n },\n SET_SHIPPING_OPTIONS_LOADING: state => {\n state.shippingOptionsLoading = true;\n state.shippingOptionsError = false;\n\n return validate(state);\n },\n SET_SHIPPING_OPTIONS_ERROR: state => {\n state.shippingOptionsLoading = false;\n state.shippingOptionsError = true;\n\n return validate(state);\n },\n SET_SHIPPING_CALCULATOR_DIMENSIONS: (state, action) => {\n state.defaultCalculatorDimensions = {\n ...initialState.defaultCalculatorDimensions,\n ...action.payload.dimensions\n };\n state[\n action.payload.primary\n ? 'primaryCalculatorDimensions'\n : 'secondaryCalculatorDimensions'\n ] = action.payload.dimensions;\n },\n SET_SHOW_SHIPPING_CALCULATOR: (state, action) => {\n state[\n action.payload.primary\n ? 'showPrimaryShippingCalculator'\n : 'showSecondaryShippingCalculator'\n ] = action.payload.value;\n },\n SET_SHIPPING_FROMCOUNTRY: (state, action) => {\n state.fromCountry = action.payload.fromCountry;\n }\n});\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\nexport const filterCombinedSelectableSuggestions = (\n primarySuggestedAttributes,\n secondarySuggestedAttributes,\n categoryAttributes\n) => {\n const selectableSuggestions = [];\n categoryAttributes.forEach(categoryAttribute => {\n const primarySuggestedAttribute = primarySuggestedAttributes.find(\n psa => psa.id == categoryAttribute.id\n );\n const secondarySuggestedAttribute = secondarySuggestedAttributes.find(\n ssa => ssa.id == categoryAttribute.id\n );\n const suggestedAttributeValues = [];\n if (primarySuggestedAttribute) {\n primarySuggestedAttribute.values.forEach(v => {\n const isSelectableSuggestion = categoryAttribute.options.some(\n o => o.value === v\n );\n const isMaxReached =\n suggestedAttributeValues.length >=\n categoryAttribute.maxNumberOfValues;\n if (isSelectableSuggestion && !isMaxReached) {\n suggestedAttributeValues.push(v);\n }\n });\n }\n if (secondarySuggestedAttribute) {\n secondarySuggestedAttribute.values.forEach(v => {\n const isSelectableSuggestion = categoryAttribute.options.some(\n o => o.value === v\n );\n const isAlreadySuggested = suggestedAttributeValues.some(\n o => o === v\n );\n const isMaxReached =\n suggestedAttributeValues.length >=\n categoryAttribute.maxNumberOfValues;\n if (\n isSelectableSuggestion &&\n !isMaxReached &&\n !isAlreadySuggested\n ) {\n suggestedAttributeValues.push(v);\n }\n });\n }\n if (suggestedAttributeValues.length > 0) {\n selectableSuggestions.push({\n id: categoryAttribute.id,\n values: suggestedAttributeValues\n });\n }\n });\n return selectableSuggestions;\n};\n","import {\n filterSelectableSuggestions,\n filterCombinedSelectableSuggestions\n} from './attributes-helpers';\n\nvar initialState = {\n // The attributes for the current category\n categoryAttributes: [],\n // The attributes of the draft.\n /**\n draftAttributes: {\n termAttributeValues: [\n {\n id: 1,\n backingField: 'clothes_size',\n userGenerated: true,\n values: [\n 'b'\n ]\n }\n ],\n numberAttributeValues: []\n }\n */\n draftAttributes: {},\n // A list of the selected attributes (draftAttributes) for display on the page.\n // Exists for ease of use in views.\n // Format:\n /**\n {\n title: 'Klädstorlek',\n value: 'L'\n }\n */\n selectableSuggestedAttributes: [],\n selectableCategorySuggestedAttributes: [],\n selectableImageToColorSuggestedAttributes: [],\n // Attribute suggestions from the image-to-color service.\n imageToColorSuggestedAttributes: [],\n validationErrors: {}\n};\n\nconst setCategoryAttributesSuggestions = (state, action) => {\n const { payload } = action;\n const newState = {\n ...state,\n categorySuggestedAttributes: payload.suggestedAttributes,\n selectableCategorySuggestedAttributes: filterSelectableSuggestions(\n payload.suggestedAttributes,\n state.categoryAttributes\n ),\n suggestionsExtractorType: payload.suggestionsExtractorType\n };\n updateSelectableSuggestedAttributes(newState);\n return newState;\n};\n\nconst setImageToColorSuggestions = (state, action) => {\n const { payload } = action;\n const newState = {\n ...state,\n imageToColorSuggestedAttributes: payload.suggestedAttributes\n };\n updateSelectableImageToColorSuggestedAttributes(newState);\n return newState;\n};\n\nconst updateSelectableSuggestedAttributes = newState => {\n newState.selectableSuggestedAttributes = filterCombinedSelectableSuggestions(\n newState.selectableCategorySuggestedAttributes,\n newState.selectableImageToColorSuggestedAttributes,\n newState.categoryAttributes\n );\n};\n\nconst updateSelectableImageToColorSuggestedAttributes = newState => {\n newState.selectableImageToColorSuggestedAttributes = filterSelectableSuggestions(\n newState.imageToColorSuggestedAttributes,\n newState.categoryAttributes\n );\n updateSelectableSuggestedAttributes(newState);\n};\n\nconst setCategoryAttributeOption = (state, action) => {\n const { payload } = action;\n const attribute = state.categoryAttributes.find(\n a => a.id === payload.attributeId\n );\n let options = attribute.options;\n if (\n !attribute.isMultiSelect ||\n (!payload.optionValue && !payload.activate)\n ) {\n options = options.map(o =>\n !o.isActive ? o : { ...o, isActive: false }\n );\n }\n if (payload.optionValue) {\n options = options.map(o =>\n o.value !== payload.optionValue\n ? o\n : { ...o, isActive: payload.activate }\n );\n }\n const numberOfValuesSelected = options.filter(o => o.isActive).length;\n return {\n ...state,\n categoryAttributes: state.categoryAttributes.map(a =>\n a.id !== payload.attributeId\n ? a\n : { ...attribute, options, numberOfValuesSelected }\n )\n };\n};\n\nconst updateCategoryAttributesOptionsStatuses = state => {\n const categoryAttributes = state.categoryAttributes.map(a => {\n const draftAttributeValues =\n state.draftAttributes.termAttributeValues?.find(\n tav => a.id === tav.id\n )?.values || [];\n const options = a.options.map(o => {\n const isActive = draftAttributeValues.includes(o.value);\n return o.isActive === isActive ? o : { ...o, isActive };\n });\n const numberOfValuesSelected = options.filter(o => o.isActive).length;\n return { ...a, options, numberOfValuesSelected };\n });\n return { ...state, categoryAttributes };\n};\n\nconst setDraftAttributes = (state, action) => {\n const newState = {\n ...state,\n draftAttributes: {\n ...action.payload\n }\n };\n return newState;\n};\n\nconst setCategoryAttributes = (state, action) => {\n const newState = {\n ...state,\n categoryAttributes: [...action.payload]\n };\n updateSelectableImageToColorSuggestedAttributes(newState);\n return newState;\n};\n\nconst resetAttributes = state => {\n return {\n ...initialState,\n // Resetting image-to-color suggested attributes is done separately\n imageToColorSuggestedAttributes: state.imageToColorSuggestedAttributes,\n selectableImageToColorSuggestedAttributes:\n state.selectableImageToColorSuggestedAttributes\n };\n};\n\nconst resetSelectedAttributes = state => {\n return updateCategoryAttributesOptionsStatuses({\n ...state,\n draftAttributes: {}\n });\n};\n\nconst resetImageAttributeSuggestions = state => {\n const newState = {\n ...state,\n imageToColorSuggestedAttributes:\n initialState.imageToColorSuggestedAttributes\n };\n updateSelectableImageToColorSuggestedAttributes(newState);\n return newState;\n};\n\nconst validate = state => {\n const validationErrors = {};\n state.categoryAttributes.forEach(attribute => {\n if (attribute.minNumberOfValues === 0) {\n return;\n }\n if (attribute.options.length === 0) {\n // There were no options to choose from.\n // May not happen when backend implementation is done,\n // we should not get an empty list of options.\n return;\n }\n const values = attribute.options.reduce((acc, option) => {\n if (option.isActive) {\n acc.push(option.value);\n }\n return acc;\n }, []);\n if (values.length === 0) {\n validationErrors[\n attribute.backingField\n ] = `attributes:::syi_validation_missing_attribute_${attribute.backingField}`;\n }\n });\n\n return { ...state, validationErrors };\n};\n\nconst reducers = {\n RESET_ATTRIBUTES: resetAttributes,\n RESET_SELECTED_ATTRIBUTES: resetSelectedAttributes,\n RESET_IMAGE_ATTRIBUTES_SUGGESTIONS: resetImageAttributeSuggestions,\n SET_CATEGORY_ATTRIBUTES: setCategoryAttributes,\n SET_DRAFT_ATTRIBUTES: setDraftAttributes,\n SET_CATEGORY_ATTRIBUTE_OPTION: setCategoryAttributeOption,\n UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES: updateCategoryAttributesOptionsStatuses,\n SET_CATEGORY_ATTRIBUTES_SUGGESTIONS: setCategoryAttributesSuggestions,\n SET_IMAGE_ATTRIBUTES_SUGGESTIONS: setImageToColorSuggestions\n};\n\nexport default (state, action) => {\n state = state || initialState;\n const reducer = reducers[action.type];\n if (reducer) {\n return validate(reducer(state, action));\n }\n return state;\n};\n","import { createReducer } from '@reduxjs/toolkit';\nimport userData from 'tradera-apps/syi/script/app_react/services/user-data';\nimport config from 'tradera-apps/syi/script/app_react/services/config';\n\nconst createInitalState = () => {\n if (!userData || !userData.consent || !userData.braintree) {\n // seems syi is not loaded, return empty object\n return {};\n }\n const shouldGiveConsent =\n config.isSyiMemberConsentEnabled && userData.braintree.isBraintreeOnly;\n\n return {\n hasTraderaPayConsent: !!userData.consent.hasTraderaPayConsent,\n shouldGiveConsent,\n hasValidationError:\n shouldGiveConsent && !userData.consent.hasTraderaPayConsent\n };\n};\n\nconst initialState = createInitalState();\n\nexport default createReducer(initialState, {\n SET_TRADERAPAY_CONSENT: (state, action) => {\n state.hasTraderaPayConsent = action.payload;\n state.hasValidationError = !action.payload;\n }\n});\n","import { mapItemDetails } from 'tradera-state/views/view-item/reducer';\n\nvar initialState = {\n itemDetails: null,\n bidInfo: null,\n hasLoaded: false,\n\n viewItemState: null,\n isBidding: false,\n itemState: null,\n placeBidResponse: {\n info: null,\n isSuccessful: null,\n validationResult: null,\n error: null\n },\n myMaxBidAmount: null,\n initialBidFormValue: null,\n serverSecondsLeft: null\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_PREVIEW_ITEM_DETAILS': {\n return {\n ...state,\n itemDetails: mapItemDetails(action.payload)\n };\n }\n case 'SET_PREVIEW_BID_INFO': {\n const { bidInfo, memberId } = action.payload;\n\n return {\n ...state,\n bidInfo: {\n bidId: bidInfo.bidId || 0,\n leadingBidAmount: bidInfo.leadingBidAmount || 0,\n leadingBidderMemberId:\n bidInfo.leadingBidderMemberId || null,\n leadingBidMemberAlias:\n bidInfo.leadingBidMemberAlias || null,\n nextValidBidAmount: bidInfo.nextValidBidAmount,\n transactionType: bidInfo.transactionType || null,\n bidCount: bidInfo.bidCount,\n reservePriceReached: bidInfo.reservePriceReached || false,\n hasLeadingBid:\n !!memberId &&\n memberId === bidInfo.leadingBidderMemberId,\n hasLostLeadingBid: false\n }\n };\n }\n case 'SET_PREVIEW_ITEM_STATE':\n return { ...state, itemState: action.payload };\n case 'SET_PREVIEW_SERVER_SECONDS_LEFT':\n return { ...state, serverSecondsLeft: action.payload };\n case 'SET_PREVIEW_IS_LOADING':\n return { ...state, hasLoaded: action.payload };\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport draft from './reducers/draft';\nimport category from './reducers/category';\nimport payment from './reducers/payment';\nimport syi from './reducers/syi';\nimport errors from './reducers/errors';\nimport shipping from './reducers/shipping';\nimport templates from './reducers/templates';\nimport template from './reducers/template';\nimport buyerRegion from './reducers/buyer-region';\nimport itemCondition from './reducers/item-condition';\nimport campaignCode from './reducers/campaign-code';\nimport fees from './reducers/fees';\nimport itemDuration from './reducers/item-duration';\nimport shortDescription from './reducers/short-description';\nimport extraFeatures from './reducers/extra-features';\nimport images from './reducers/images';\nimport price from './reducers/price';\nimport edit from './reducers/edit';\nimport longDescription from './reducers/long-description';\nimport scroll from './reducers/scroll';\nimport charityCampaign from './reducers/charity-campaign';\nimport drafts from './reducers/drafts';\nimport attributes from './reducers/attributes';\nimport language from './reducers/language';\nimport traderaStateBankId from 'tradera-state/bank-id/reducer';\nimport memberConsent from './reducers/member-consent';\nimport preview from './reducers/preview';\nimport charity from './reducers/charity';\n\nexport default combineReducers({\n attributes,\n bankId: traderaStateBankId,\n buyerRegion,\n campaignCode,\n category,\n charity,\n charityCampaign,\n draft,\n drafts,\n edit,\n errors,\n extraFeatures,\n fees,\n images,\n itemCondition,\n itemDuration,\n language,\n longDescription,\n memberConsent,\n payment,\n preview,\n price,\n scroll,\n shipping,\n shortDescription,\n syi,\n templates,\n template\n});\n","var initialState = null;\n\nexport default (state, action) => {\n state = state || initialState;\n\n switch (action.type) {\n case 'SET_DRAFTS':\n if (action.payload) {\n state = [...action.payload];\n } else {\n state = null;\n }\n break;\n }\n return state;\n};\n","import { getLanguage } from 'tradera-apps/syi/script/app_react/utils/language';\n\nexport default state => {\n state = state || {\n preferredLanguage: getLanguage()\n };\n\n return state;\n};\n","var initialState = null;\n\nexport default (state, action) => {\n state = state || initialState;\n\n switch (action.type) {\n case 'SET_TEMPLATES':\n if (action.payload) {\n state = [...action.payload];\n } else {\n state = null;\n }\n break;\n case 'UPDATE_TEMPLATE_IN_LIST':\n if (state) {\n state = [...state];\n let index = state.findIndex(\n template =>\n template.templateId == action.template.templateId\n );\n if (index > -1) {\n const images = action.template.images;\n const image = images.length > 0 ? images[0] : {};\n state[index].templateId = action.template.templateId;\n state[index].name = action.template.templateName;\n state[index].shortDescription =\n action.template.shortDescription;\n state[index].imageUrl = image.imageUrl;\n state[index].imageRotationDegrees =\n image.draftImage && image.draftImage.rotationDegrees;\n }\n }\n break;\n }\n return state;\n};\n","import { actionTypes as purchaseOrderActionTypes } from '../action-types/purchase-order';\nimport myTraderaItemActions from '../actions/my-tradera-items';\n\nconst initialState = {\n purchaseOrders: []\n};\n\nconst updatePurchaseOrderPaidBySeller = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isPaid: action.payload.isPaid\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderPaidByBuyer = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isMarkedAsPaidByBuyer:\n action.payload.isMarkedAsPaidByBuyer\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShipped = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isShipped: action.payload.isShipped\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderRequestCombinedShipping = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n combinedShippingInformation: {\n ...purchaseOrder.combinedShippingInformation,\n buyerRequestedCombinedShippingPriceDate: Date.now(),\n hasBuyerRequestedCombinedShippingPrice:\n action.payload\n .hasBuyerRequestedCombinedShippingPrice\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShippingPrice = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.purchaseOrderId\n ? {\n ...purchaseOrder,\n ...(purchaseOrder.combinedShippingInformation\n ? {\n combinedShippingInformation: {\n ...purchaseOrder.combinedShippingInformation,\n sellerSetCombinedShippingPriceDate: Date.now()\n }\n }\n : null),\n shippingAmount: action.newPrice,\n totalAmount:\n parseInt(action.newPrice) +\n parseInt(purchaseOrder.totalItemAmount),\n shipping: {\n ...purchaseOrder.shipping,\n shippingDiscount: {\n shippingCost: action.newPrice,\n shippingType: action.shippingProvider\n }\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShipment = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n hasUnpaidShipping: false\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShippedBooked = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isShippingBooked: false\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrders = (state, action) => {\n return {\n ...state,\n paging: {\n ...action.payload.paging\n },\n statistics: action.payload.statistics,\n purchaseOrders: action.payload.purchaseOrders.map(purchaseOrder => {\n const { rows, ...filteredPurchaseOrder } = purchaseOrder;\n return {\n ...filteredPurchaseOrder\n };\n })\n };\n};\n\nconst checkHaveGivenFeedBackTo = (action, purchaseOrder) => {\n const itemsToGiveFeedBackTo = purchaseOrder.itemsToGiveFeedBackTo\n .map(itemToGiveFeedBackTo => {\n const haveGivenFeedBackTo = action.payload.submittables.filter(\n submittable => {\n return submittable.transactionId === itemToGiveFeedBackTo;\n }\n ).length;\n if (haveGivenFeedBackTo) {\n return null;\n }\n return itemToGiveFeedBackTo;\n })\n .filter(Boolean);\n return itemsToGiveFeedBackTo;\n};\n\nconst updatePurchaseOrderFeedback = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n itemsToGiveFeedBackTo: checkHaveGivenFeedBackTo(\n action,\n purchaseOrder\n )\n }\n : purchaseOrder\n )\n };\n};\n\n// Updating hidden always hides the order from the current list\nconst updatePurchaseOrderHidden = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.filter(\n purchaseOrder =>\n purchaseOrder.purchaseOrderId !== action.payload.purchaseOrderId\n )\n };\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER:\n return updatePurchaseOrderPaidBySeller(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isPaid: true\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER:\n return updatePurchaseOrderPaidBySeller(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isPaid: false\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER:\n return updatePurchaseOrderPaidByBuyer(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isMarkedAsPaidByBuyer: true\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER:\n return updatePurchaseOrderPaidByBuyer(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isMarkedAsPaidByBuyer: false\n }\n });\n case purchaseOrderActionTypes.PURCHASE_ORDER_RESET:\n return initialState;\n case purchaseOrderActionTypes.PURCHASE_ORDERS_SHIPPING_BOOKED:\n return updatePurchaseOrderShippedBooked(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING:\n return updatePurchaseOrderRequestCombinedShipping(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_SHIPPED:\n return updatePurchaseOrderShipped(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_PAID_BY_BUYER:\n return updatePurchaseOrderPaidByBuyer(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_PAID_BY_SELLER:\n return updatePurchaseOrderPaidBySeller(state, action);\n case myTraderaItemActions.actionTypes.SET_NEW_SHIPPING_PRICE:\n return updatePurchaseOrderShippingPrice(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_LIST:\n return updatePurchaseOrders(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_DELETE_SHIPMENT:\n return updatePurchaseOrderShipment(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER:\n case purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER:\n return updatePurchaseOrderFeedback(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_HIDDEN:\n return updatePurchaseOrderHidden(state, action);\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport cookies from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport filters from 'tradera-apps/my-tradera/app/state/reducers/filters';\nimport myTradera from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport myTraderaItems from 'tradera-apps/my-tradera/app/state/reducers/my-tradera-items';\nimport payments from 'tradera-apps/my-tradera/app/state/reducers/payments-reducer';\nimport payout from 'tradera-apps/my-tradera/app/state/payouts/reducer';\nimport purchaseOrder from 'tradera-apps/my-tradera/app/state/reducers/purchase-order';\n\nexport default combineReducers({\n cookies,\n filters,\n myTradera,\n myTraderaItems,\n payments,\n payout,\n purchaseOrder\n});\n","import { mapItemDetails } from '../view-item/reducer';\nimport actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...action.payload\n };\n case actionTypes.SET_IS_LOADING:\n return { ...state, loading: action.payload };\n case actionTypes.SET_ITEM_DETAILS:\n return { ...state, itemDetails: mapItemDetails(action.payload) };\n case actionTypes.SET_PRODUCT:\n return { ...state, product: action.payload };\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport viewItem from './view-item/reducer';\nimport { reducer as reportItem } from './report-item/reducer';\nimport profile from './profile/reducer';\nimport startPage from './start-page/reducer';\nimport checkout from './checkout/reducer';\nimport syi from './syi/reducer';\nimport myTradera from './my-tradera/reducer';\nimport shippingCalculator from './shipping-calculator/reducer';\nimport cart from './cart/reducer';\nimport traderaShop from './tradera-shop/reducer';\nimport 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';\n\nconst initialize = initialState => ({\n type: actionTypes.INITIALIZE,\n payload: initialState\n});\n\nconst toggleHeaderSearch = payload => ({\n type: actionTypes.TOGGLE_HEADER_SEARCH,\n payload\n});\n\nconst openGdprModal = payload => ({\n type: actionTypes.OPEN_GDPR_MODAL,\n payload\n});\n\nconst closeGdprModal = payload => ({\n type: actionTypes.CLOSE_GDPR_MODAL,\n payload\n});\n\nconst openGdprSettings = payload => ({\n type: actionTypes.OPEN_GDPR_SETTINGS,\n payload\n});\n\nconst closeGdprSettings = payload => ({\n type: actionTypes.CLOSE_GDPR_SETTINGS,\n payload\n});\n\nconst openQuickView = payload => (dispatch, getState) => {\n const { openedFrom, ...restOfPayload } = payload;\n\n if (getState().ui.quickView.loading) {\n return;\n }\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: true\n });\n\n return getItem(restOfPayload.itemId)\n .then(({ data }) => {\n if (data) {\n const updatedData = {\n ...data,\n imageFormats: data.imageFormats?.map(i => ({\n ...i,\n alt: i.alt || data.shortDescription\n }))\n };\n dispatch(itemActions.add([updatedData]));\n }\n dispatch({\n type: actionTypes.OPEN_QUICK_VIEW,\n payload: restOfPayload\n });\n gtm.trackAction('Quick View', `Open: from ${openedFrom}`);\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: false\n });\n return data;\n })\n .catch(error => {\n dispatch(closeQuickView());\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: false\n });\n logger(error);\n });\n};\n\nconst closeQuickView = payload => ({\n type: actionTypes.CLOSE_QUICK_VIEW,\n payload\n});\n\nconst openVideoModal = payload => ({\n type: actionTypes.OPEN_VIDEO_MODAL,\n payload\n});\n\nconst closeVideoModal = payload => ({\n type: actionTypes.CLOSE_VIDEO_MODAL,\n payload\n});\n\nconst openYoutubeVideoModal = payload => ({\n type: actionTypes.OPEN_YOUTUBE_VIDEO_MODAL,\n payload\n});\n\nconst closeYoutubeVideoModal = payload => ({\n type: actionTypes.CLOSE_YOUTUBE_VIDEO_MODAL,\n payload\n});\n\n/**\n * signIn\n * @param {object} payload\n * @param {string} payload.redirectUrl - where to send the user after login completes\n */\nconst signIn = payload => (dispatch, getStore) => {\n const {\n environment: { featureSwitches }\n } = getStore();\n\n if (!featureSwitches['login-anywhere']) {\n window.location = `/login${getReturnUrl(payload.redirectUrl)}`;\n } else {\n dispatch(openProfileMenu(payload.redirectUrl));\n }\n};\n\n/*\n Changes made to messaging modal will affect My Tradera as well!\n*/\nconst openMessagingModal = payload => ({\n type: actionTypes.OPEN_MESSAGING_MODAL,\n payload\n});\n\nconst closeMessagingModal = payload => ({\n type: actionTypes.CLOSE_MESSAGING_MODAL,\n payload\n});\n\n/**\n * Open a notification optin modal\n *\n * @param {boolean} type - type of notifications to show modal for\n * @returns {function(*, *): boolean}\n */\nconst openNotificationOptinModal = (\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n) => async (dispatch, getState) => {\n const { pushNotifications } = getState();\n if (!pushNotifications.enabled) {\n return;\n }\n if (pushNotifications.shownModals[modalType] === true) {\n return;\n }\n dispatch({\n type: actionTypes.OPEN_NOTIFICATION_OPTIN_MODAL,\n payload: {\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n }\n });\n};\n\nconst closeNotificationOptinModal = payload => ({\n type: actionTypes.CLOSE_NOTIFICATION_OPTIN_MODAL,\n payload\n});\n\nconst openProfileMenu = payload => ({\n type: actionTypes.OPEN_PROFILE_MENU,\n payload\n});\n\nconst closeProfileMenu = payload => ({\n type: actionTypes.CLOSE_PROFILE_MENU,\n payload\n});\n\nconst openCategoryDropdownMenu = payload => ({\n type: actionTypes.OPEN_CATEGORY_DROPDOWN_MENU,\n payload\n});\n\nconst closeCategoryDropdownMenu = payload => ({\n type: actionTypes.CLOSE_CATEGORY_DROPDOWN_MENU,\n payload\n});\n\nconst openSearchForm = payload => ({\n type: actionTypes.OPEN_SEARCH_FORM,\n payload\n});\n\nconst closeSearchForm = payload => ({\n type: actionTypes.CLOSE_SEARCH_FORM,\n payload\n});\n\nconst updateItemLayout = value => {\n const defaultCookie = DEFAULT_COOKIES['ITEM_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n return {\n type: actionTypes.ITEM_LAYOUT,\n payload: value\n };\n};\n\nconst updateSiteLayout = value => {\n const defaultCookie = DEFAULT_COOKIES['SITE_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n return {\n type: actionTypes.SITE_LAYOUT,\n payload: value\n };\n};\n\nconst updateSystemMessages = systemMessages => ({\n type: actionTypes.UPDATE_SYSTEM_MESSAGES,\n payload: systemMessages\n});\n\nconst fetchSystemMessages = () => async (dispatch, getState) => {\n const {\n environment: { featureSwitches },\n member: { isLoggedIn }\n } = getState();\n if (featureSwitches && featureSwitches['mytradera-alerts'] && isLoggedIn) {\n try {\n let systemMessages = cache.read(CACHE_KEYS.SYSTEM_MESSAGES);\n if (!systemMessages) {\n const fetchedMessages = await getSystemMessages();\n systemMessages = {};\n if (fetchedMessages && 'items' in fetchedMessages.data) {\n fetchedMessages.data.items.forEach(({ type }) => {\n systemMessages[type] = true;\n });\n cache.write(CACHE_KEYS.SYSTEM_MESSAGES, systemMessages);\n }\n }\n dispatch(updateSystemMessages(systemMessages));\n } catch (error) {\n // Invalidate cache to fetch fresh again next action\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n await dispatch(logOut());\n window.location = '/login/logout';\n break;\n case API_ERRORS.IGNORE_ME:\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n break;\n default:\n logger(error);\n break;\n }\n }\n }\n};\n\nconst updateMessagingNotifications = payload => ({\n type: actionTypes.UPDATE_MESSAGING_NOTIFICATIONS,\n payload\n});\n\nconst fetchMessagingNotifications = () => async dispatch => {\n try {\n let messagingNotifications = cache.read(CACHE_KEYS.MESSAGING_BADGES);\n if (!messagingNotifications) {\n const { data } = await getMessagingNotifications();\n messagingNotifications = data;\n }\n dispatch(updateMessagingNotifications(messagingNotifications));\n } catch (error) {\n // Fail silently\n }\n};\n\nconst dismissSwish = () => dispatch => {\n dispatch({\n type: actionTypes.UPDATE_SYSTEM_MESSAGES,\n payload: {\n SwishNumberMissing: false\n }\n });\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n getDismissSwish().catch(() => {\n // Fail silently\n });\n};\n\nconst logOut = () => async dispatch => {\n cache.remove(CACHE_KEYS.MESSAGING_BADGES);\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n dispatch({\n type: actionTypes.LOG_OUT,\n payload: {}\n });\n};\n\nconst openItemSettings = payload => ({\n type: actionTypes.OPEN_ITEM_SETTINGS,\n payload: { item: payload }\n});\n\nconst closeItemSettings = payload => ({\n type: actionTypes.CLOSE_ITEM_SETTINGS,\n payload\n});\n\nexport default {\n initialize,\n toggleHeaderSearch,\n openGdprModal,\n closeGdprModal,\n openGdprSettings,\n closeGdprSettings,\n openQuickView,\n closeQuickView,\n openVideoModal,\n closeVideoModal,\n openYoutubeVideoModal,\n closeYoutubeVideoModal,\n signIn,\n openMessagingModal,\n closeMessagingModal,\n openNotificationOptinModal,\n closeNotificationOptinModal,\n updateItemLayout,\n updateSiteLayout,\n updateSystemMessages,\n fetchSystemMessages,\n updateMessagingNotifications,\n fetchMessagingNotifications,\n dismissSwish,\n openProfileMenu,\n closeProfileMenu,\n openCategoryDropdownMenu,\n closeCategoryDropdownMenu,\n openSearchForm,\n closeSearchForm,\n openItemSettings,\n closeItemSettings,\n logOut\n};\n","import axios from 'axios';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n API_ERRORS,\n axiosConfigs,\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\nimport { touchWebClient } from 'tradera-utils/http';\n\nfunction getSystemMessages() {\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.MEMBER_SYSTEM_MESSAGES, {\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(\n handleError({\n // Ignore 400 & 401 errors that slip through token refresh\n 400: API_ERRORS.IGNORE_ME,\n 401: API_ERRORS.IGNORE_ME\n })\n );\n}\n\nfunction getMessagingNotifications() {\n return touchWebClient.get('api/messaging/stats', {\n cancelTokenId: 'fetchMessagingNotifications',\n ...axiosConfigs.authenticated\n });\n}\n\nfunction getDismissSwish() {\n return axios\n .get(ENDPOINTS.PAYMENT_SWISH_OPTOUT, {\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nexport { getSystemMessages, getMessagingNotifications, getDismissSwish };\n","const getJSValue = {\n True: true,\n False: false,\n All: 'All'\n};\n\nconst setJSValue = {\n true: 'True',\n false: 'False',\n All: 'All'\n};\n\nexport const setEnum = value => setJSValue[value];\nexport const getEnum = value => getJSValue[value];\n","import { createSlice } from '@reduxjs/toolkit';\nimport { assertNoUndefinedProperties } from 'tradera-utils/assert';\nimport { getItemState } from '../view-item/item-state-helper';\nimport { getAmountDetails } from 'tradera-apps/tradera/components/vip/bidding/bid-details'; // TODO put getAmountDetails somewhere else\nimport { VIEW_STATES } from './constants';\n\nexport const initialState = {\n amount: 0,\n breadCrumbs: [],\n categoryId: 0,\n categoryNames: [],\n categories: [],\n categoryLevel: 0,\n description: null,\n hasEnded: false,\n images: [],\n itemId: 0,\n itemUrl: null,\n paymentOptions: [],\n paymentTerms: null,\n reasons: [],\n resultMessage: null,\n shippingOptions: [],\n shippingTerms: [],\n sellerMemberId: 0,\n title: null,\n viewState: VIEW_STATES.LOADING,\n itemDetails: null\n};\n\nconst slice = createSlice({\n name: 'reportItem',\n initialState,\n reducers: {\n resetInitialState: () => {\n return initialState;\n },\n setReportItem: (state, { payload: { item, itemUrl, reasons } }) => {\n const itemDetails = item.itemDetails;\n const bidInfo = item.bidInfo;\n const itemState = getItemState(\n itemDetails.hasEnded,\n itemDetails.itemType,\n bidInfo.bidCount,\n bidInfo.reservePriceReached,\n itemDetails.openingBid,\n bidInfo.nextValidBidAmount,\n bidInfo.transactionType,\n bidInfo.leadingBidderMemberId\n );\n const amountDetails = getAmountDetails(\n () => '', // We are currently not interested in displaying what the amount means in the current UX.\n itemState,\n itemDetails.fixedPrice,\n bidInfo.leadingBidAmount,\n itemDetails.openingBid,\n bidInfo.bidCount > 0\n );\n state.amount = amountDetails.amount;\n state.allowedBuyerRegion = itemDetails.allowedBuyerRegion;\n state.breadCrumbs = item.breadCrumbs;\n state.categoryId = itemDetails.categoryId;\n state.categoryNames = item.breadCrumbs.map(\n breadCrumb => breadCrumb.text\n );\n state.description = itemDetails.description;\n state.endDate = itemDetails.endDate;\n state.hasEnded = itemDetails.hasEnded;\n state.images = itemDetails.images;\n state.itemId = itemDetails.itemId;\n state.itemUrl = itemUrl;\n state.paymentOptions = itemDetails.paymentOptions;\n state.reasons = reasons;\n state.shippingOptions = itemDetails.shippingOptions;\n state.shippingTerms = itemDetails.shippingTerms;\n state.sellerMemberId = itemDetails.sellerMemberId;\n state.title = itemDetails.title;\n state.viewState = itemDetails.hasEnded\n ? VIEW_STATES.ITEM_ENDED\n : VIEW_STATES.FORM;\n state.itemDetails = itemDetails;\n assertNoUndefinedProperties(state);\n },\n setViewState: (state, { payload }) => {\n state.viewState = payload;\n },\n setCategories: (state, { payload: categories, categoryLevel }) => {\n state.categories = categories;\n state.categoryLevel = categoryLevel;\n }\n }\n});\n\nexport const {\n resetInitialState,\n setReportItem,\n setViewState,\n setCategories\n} = slice.actions;\nexport const reducer = slice.reducer;\n","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 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';\nimport { getWindow } from 'tradera-utils/window';\n\nconst isNewDraft = getWindow().location.pathname?.endsWith('new');\nconst queryParams = new URLSearchParams(getWindow().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 video: img.video\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';\nimport { isServer } from 'tradera-utils/nextjs';\n\nconst config =\n !isServer && 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":""}