{"version":3,"sources":["features/dispatchPosition/selectors.js","features/activeOrder/service.js","helpers/clearSessionStore.js","features/createOrder/actions.js","components/LoadingSpinner/LoadingSpinner.js","features/background/mapStyle.js","features/background/defaultMapOptions.js","features/activeOrder/orderOnWay.js","features/activeOrder/orderPickedUp.js","features/activeOrder/orderArrived.js","features/activeOrder/orderComplete.js","features/activeOrder/orderCanceled.js","features/activeOrder/activeOrder.js","features/activeOrder/reducer.js","features/activeOrder/sagas.js","features/carPositionPicker/actions.js","features/carPositionPicker/selectors.js","features/carPositionPicker/carPositionPicker.js","features/carPositionPicker/reducer.js","features/carPositionPicker/constants.js","helpers/locations.js","features/dispatchPosition/dispatchCarPositionPicker.js","features/dispatchPosition/dispatchPosition.js","features/dispatchPosition/service.js","helpers/updatePostionToServeComponentsHelper.js","features/dispatchPosition/sagas.js","features/dispatchPosition/reducer.js","constants/apiConstants.js","features/summary/LegacyReciept/legacyActions.js","features/summary/service.js","helpers/legacyApiHelper.js","features/summary/actions.js","features/summary/rate.js","features/summary/validators.js","features/map/static/staticMap.js","helpers/date.js","features/summary/receipt/pdf/pdf.style.js","features/summary/receipt/pdf/pdf.js","components/TextArea/LegacyTextArea.js","features/summary/receipt/receipt.js","features/summary/LegacyReciept/legacyStringsSummary.js","features/summary/LegacyReciept/legacyDamageReasons.js","features/summary/LegacyReciept/legacyPDF/pdf.style.js","features/summary/LegacyReciept/legacyPDF/pdf.js","features/summary/LegacyReciept/legacyRate.js","features/summary/LegacyReciept/LegacyReciept.js","features/summary/summary.js","features/summary/reducer.js","features/summary/sagas.js","constants/routeConstants.js","constants/orderStatusConstants.js","features/loading/selectors.js","features/loading/constants.js","features/createOrder/viewConstants.js","features/createOrder/selectors.js","history.js","assets/images/gat_symbol_animate.svg","assets/images/search-dark.svg","assets/images/location-pin.svg","assets/images/pin.svg","assets/images/car-position-icon.svg","assets/images/arrow-down.svg","helpers/cookieHelper.js","assets/images/star-solid.svg","assets/images/star.svg","features/loading/actions.js","assets/images/arrow-down-outline.svg","assets/fonts/DinProFont/DINPro-Bold_13934.ttf","assets/fonts/DinProFont/DINPro-Regular_13937.ttf","assets/fonts/DinProFont/DINPro-Light_13935.ttf","assets/fonts/DinProFont/DINPro-Medium_13936.ttf","features/summary/LegacyReciept/legacyApi.js","components/LocationSearchInput/LocationSearchInput.js","helpers/addressComponentsHelper.js","features/carPositionPicker/CarPositionPresentation.style.js","features/carPositionPicker/carPositionPresentation.js","features/loading/reducer.js","features/loading/Loading.js","helpers/formatPrice.js","components/ButtonContainer/NextStepButton.js","features/createOrder/renderDestinationInput.js","features/createOrder/estimatePrice.js","features/createOrder/validators.js","features/createOrder/customerDetails.style.js","components/Input/Input.js","features/createOrder/submitCustomerDetailsValidation.js","components/PhoneNumberInput/PhonenumberInput.js","components/Input/PositionInput.js","features/createOrder/customerDetails.js","components/SelectField/SelectField.js","helpers/formValidate.js","features/createOrder/submitDamageReasonValidation.js","components/ButtonContainer/TwoButtonContainer.js","components/ButtonGroup/RadioGroups.style.js","components/ButtonGroup/ButtonGroup.js","features/createOrder/damageReason.js","features/createOrder/SeekingResponder.styles.js","features/createOrder/seekingResponder.js","features/createOrder/userTerms.js","features/createOrder/tmaCarTerms.js","features/createOrder/customerAcceptCountDown.js","features/createOrder/confirmOrder.js","features/createOrder/createOrder.js","helpers/SubdomainHelper.js","features/createOrder/reducer.js","features/createOrder/sagas.js","features/activeOrder/constants.js","features/welcomeScreen/selectors.js","features/map/static/staticMap.module.scss","assets/images/location-pin-secondary.svg","features/background/towtruckTemplate.js","features/background/towIcon.js","features/activeOrder/selectors.js","features/summary/constants.js","features/summary/LegacyReciept/receipt.module.scss","features/activeOrder/actions.js","features/summary/receipt/receipt.module.scss","helpers/apiUtils.js","assets/language/sweStrings.js","helpers/languageHelper.js","features/welcomeScreen/constants.js","assets/images/repair.svg","assets/images/calendar.svg","assets/images/towTruckReciept.svg","features/background/DirectionsMap.js","assets/images/ico_repair_destination.svg","assets/images/towtruck_welcome.svg","assets/images/thumbs_up.svg","assets/images/klarna_logo.svg","assets/images/clock_price.svg","language/useTranslations.js","features/login/LoginTriggerComponent.js","helpers/hooks/useSetCompanyInformation.js","components/TopBar/TopBar.js","features/background/CreateOrderMap.js","features/background/OrderCompleteMap.js","features/background/ActiveOrderMapHandler.js","features/background/SeekingResponderMap.js","features/background/background.js","features/background/index.js","helpers/HeaderTag.js","App.js","features/welcomeScreen/welcomeScreen.style.js","features/welcomeScreen/welcomeScreen.js","features/welcomeScreen/reducer.js","features/welcomeScreen/sagas.js","root-reducer.js","features/summary/LegacyReciept/legacySaga.js","root-saga.js","store.js","helpers/sessionStore.js","index.js","components/CardBoxContainer/CardBoxContainer.style.js","components/CardBoxContainer/CardBoxContainer.js","features/dispatchPosition/constants.js","helpers/logErrorHelper.js","components/Modal/Modal.js","features/createOrder/service.js","features/createOrder/constants.js","features/dispatchPosition/actions.js","features/welcomeScreen/actions.js","features/summary/selectors.js"],"names":["getPreviousEstimatePrice","createOrder","getIn","getShowDispatchMap","dispatchPosition","get","getMap","getCenterCoords","getOrderNo","getCarLocalizationErrorModalState","getCarLocalizationSuccessModalState","getSearchPlacesResult","getLocationBlockedModalState","getMissionNow","token","gatLocale","getSession","SESSION_KEYS","locale","appId","api","GET_MISSION","BaseUrl","GatUrl","then","res","catch","err","getOrderById","id","gatOrgUnit","gatOrganizationUnit","accessToken","GET_MISSIONS_BY_ID","logout","gatAccesToken","missionId","deleteSession","clearValues","type","VALUES_CHANGED","fetchFinalPrice","FETCH_FINAL_PRICE","estimatePrice","ESTIMATE_PRICE","estimateDestinationPrice","ESTIMATE_PRICE_DESTINATION","CREATE_ORDER","submitCustomerDetailsForm","CUSTOMER_DETAILS_FORM_SUBMITTED","submitCreateOrderForm","CREATE_ORDER_FORM_SUBMITTED","deny","DENY_HELP","toggleNoConfirmationModal","bool","TOGGLE_NO_CONFIRMATION_MODAL","payload","login","LOGIN","setPreviousView","view","SET_PREVIOUS_VIEW","setNextView","SET_NEXT_VIEW","setCurrentView","SET_CURRENT_VIEW","setModalView","SET_MODAL_VIEW","modalGoBack","MODAL_GO_BACK","goForward","GO_FORWARD","goBack","GO_BACK","getPosition","GET_POSITION","fetchPerson","socialNumber","FETCH_PERSON","fetchVehicle","regno","FETCH_VEHICLE","toggleEstimateDestination","TOGGLE_ESTIMATE_DESTINATION","setShopLocation","shopPosition","SET_SHOP_LOCATION","setShowPreviousPrice","show","SET_SHOW_PREVIOUS_PRICE","setPreviousPrice","price","SET_PREVIOUS_PRICE","toggleAlreadyStartedErrorModal","TOGGLE_ALREADY_STARTED_ERROR_MODAL","toggleUnexpectedErrorModal","TOGGLE_UNEXPECTED_ERROR_MODAL","setSearchPlacesResult","result","SET_SEARCH_PLACES_RESULT","fetchDispatch","FETCH_DISPATCH","toggleCancelledByDispatchErrorModal","TOGGLE_ORDER_CANCELLED_BY_DISPATCH_MODAL","toggleDispatchWillCallModal","TOGGLE_DISPATCH_WILL_CALL_MODAL","checkPreviousVehiclePosition","CHECK_PREVIOUS_VEHICLE_POSITION","cancelListenForDriver","CANCEL_LISTEN_FOR_DRIVER","fetchEstimateSuccess","estimate","FETCH_ESTIMATE_SUCCESS","fetchEstimateSuccessCoords","coords","FETCH_ESTIMATE_SUCCESS_COORDS","listenForDriver","LISTEN_FOR_DRIVER","fetchingVehicle","FETCHING_VEHICLE","getPersonDetailsFailure","GET_PERSON_DETAILS_FAILURE","getPositionSuccess","customerPosition","GET_POSITION_SUCCESS","setHasPreviousVehiclePositionChanged","boolean","SET_HAS_PREVIOUS_VEHICLE_POSITION_CHANGED","setToogleEstimateDestinationValue","SET_TOGGLE_ESTIMATE_DESTINATION_VALUE","getVehicleDetailsSuccess","GET_VEHICLE_DETAILS_SUCCESS","getVehicleDetailsFailure","GET_VEHICLE_DETAILS_FAILURE","vehicleNotFoundError","ERROR_VEHICLE_NOT_FOUND","setNoEstimateReason","string","SET_NO_ESTIMATE_REASON","fetchingPerson","FETCHING_PERSON","fetchingPersonSuccess","FETCHING_PERSON_SUCCESS","personNotFound","PERSON_NOT_FOUND","fetchDamageReasons","FETCH_DAMAGE_REASONS","fetchCurrentDamageReasonsSuccess","damageReasons","FETCH_DAMAGE_REASONS_SUCCESS","fetchCurrentDamageReasonsFailure","FETCH_DAMAGE_REASONS_FAILURE","fetchConfinedSpaceAttributes","FETCH_CONFINED_SPACE_ATTRIBUTES","fetchConfinedSpaceAttributesSuccess","confinedSpaceAttributes","FETCH_CONFINED_SPACE_ATTRIBUTES_SUCCESS","fetchConfinedSpaceAttributesFailure","FETCH_CONFINED_SPACE_ATTRIBUTES_FAILURE","fetchPaymentOptionsList","FETCH_PAYMENT_OPTIONS","fetchPaymentOptionsListSuccess","paymentOptionsList","FETCH_PAYMENT_OPTIONS_SUCCESS","fetchPaymentOptionsListFailure","FETCH_PAYMENT_OPTIONS_FAILURE","saveSelfServeMissionSuccess","data","SAVE_SELF_SERVE_MISSION_SUCCESS","fetchVehicleInsuranceLevels","FETCH_VEHICLE_INSURANCE_LEVELS","fetchVehicleInsuranceLevelsSuccess","vehicleInsuranceLevels","FETCH_VEHICLE_INSURANCE_LEVELS_SUCCESS","fetchVehicleInsuranceLevelsFailure","FETCH_VEHICLE_INSURANCE_LEVELS_FAILURE","acceptCookieValue","ACCEPT_COOKIE_VALUE","getLoading","createOrderSelectors","LoadingSpinner","loading","positionStyle","sizeStyle","infoText","className","style","src","gatIcon","alt","defaultProps","connect","state","isLoading","mapStyle","elementType","stylers","color","featureType","defaultMapOptions","styles","streetViewControl","scaleControl","mapTypeControl","panControl","zoomControl","rotateControl","fullscreenControl","gestureHandling","disableDefaultUI","draggableCursor","minZoom","directionsMapOptions","maxZoom","getEstimatedArrivalTimeText","selectors","getIsEstimatedArrivalTimeOutdated","injectIntl","timeText","etaOutdated","company","driver","towTruckRegNo","intl","CardBoxContainer","minimumHeight","icon","faTruckTow","width","height","formatMessage","defaultMessage","description","classNames","position","background","marginBottom","OrderPickedUp","destination","useSessionStorage","companyAttributes","undefined","phoneNumber","CompanyPhone","value","useIntl","disableToggle","faCarWrench","href","fullWidth","kind","toUpperCase","OrderArrived","faLocationDot","OrderComplete","OrderCanceled","fontWeight","fontSize","faUserHeadset","size","onClick","history","push","CREATE_ORDER_PATH","createOrderActions","getCustomerCoordinates","welcomeScreenSelectors","getCancelModalState","getStartedOrderModalState","getTowCancelModalState","getUnexpectedErrorModalState","getOrder","openCancelModal","actions","closeCancelModal","cancelOrder","toggleStartedModal","cancelEstimatedArrivalTimePoller","getEstimatedArrivalTime","fetchTowtruckPosition","cancelFetchTowtruckPosition","getMission","coordinates","cancelModalState","towCancelModalState","startedOrderModalState","unexpectedErrorModalState","order","dispatch","openModal","closeModal","cancelOrderAction","closeStartedOrderModal","closeUnexpectedErrorModal","cancelETAPoller","getETA","getTowTruckPosition","cancelTowTruckPosition","fetchGatOrder","useEffect","destinationAddress","sourceToDestination","address","city","zipCode","providerAtScene","DRIVER_AT_SOURCE","DRIVER_PREPARE_DRIVE_TO_DESTINATION","providerOnWay","DRIVER_DRIVING_TO_DESTINATION","DRIVER_AT_DESTINATION","isMissionDebriefed","DEBRIEFED","missionOutcomeIsCancelled","missionOutcome","orderIsFinishedOrDebriefed","FINISHED","REVIEW_MISSION_SUMMARY","missionIsCancelled","CANCELLED","companyName","CompanyName","Modal","title","bodyText","primaryModalButtonAction","primaryModalButtonText","DRIVER_DRIVING_TO_SOURCE","driverFirstName","driverRegistrationNumber","initialState","fromJS","cancelModalOpen","startedOrderModal","towCancelModalOpen","estimatedArrivalTimeInSeconds","estimatedArrivalTime","preventResumeOrder","reducer","action","newState","constants","set","eta","now","moment","etaLocal","utc","local","etaHours","diff","etaMinutes","updatedAtLocal","updatedAtDiff","outdatedEta","timeSeconds","mission","fetchGatMission","getEstimatedArrivalTimeWorker","cancelOrderWorker","findCurrentViewWorker","towtruckPositionWorker","findCurrentViewWatcher","cancelOrderWatcher","towTruckPositionWatcher","getEstimatedArrivalTimeWatcher","fetchGatMissionWatcher","setOrderStatus","getEstimatedArrivalTimeSuccess","towTruckCancelled","setTowTruckLocation","getMissionSuccess","getMissionFailure","service","setVehicleLocation","welcomeScreenActions","ONGOING_STATUSES","urlParams","URLSearchParams","window","location","search","call","statusCode","put","select","response","driverToSource","estimatedArrivalAt","drivingArrivalAt","delay","newOrder","toggleLoading","all","CUSTOMER_DETAILS_VIEW","setSession","latitude","longitude","MISSION_CREATED","MISSION_NOT_STARTED","WAITING_FOR_DRIVER_ACCEPT","WAITING_FOR_CUSTOMER_ACCEPT","lat","lng","CONFIRM_ORDER_VIEW","ACTIVE_ORDER_PATH","SUMMARY_PATH","towtruckPosition","driverLatitude","driverLongitude","vehiclePosition","includes","takeLatest","FIND_CURRENT_VIEW","START_CANCEL_ORDER","take","FETCH_TOWTRUCK_POSITION","race","CANCEL_FETCH_TOWTRUCK_POSITION","GET_ESTIMATED_ARRIVAL_TIME","CANCEL_ESTIMATED_ARRIVAL_TIME_POLLER","GET_MISSION_BY_TOKEN","saveMapToState","map","SAVE_MAP_TO_STATE","saveCenterCoords","centerCoords","SAVE_CENTER_COORDS","showSpinner","SHOW_SPINNER","carPositionPicker","getSpinnerBool","getPreviousView","getVehiclePosition","getIsFetchingReverseGeoCode","dispatchPositionSelectors","saveCenterDestinationCoords","dispatchPositionActions","CarPositionPicker","compose","withProps","googleMapURL","GOOGLE_MAP_URL","loadingElement","containerElement","mapElement","withScriptjs","withGoogleMap","props","saveText","fetchPreviousView","locationBlockedModalState","showDispatchMap","requestPosition","windowReload","windowReloadAction","previousView","geoCoordinates","isFetchingReverseGeoCode","saveMap","saveCenter","saveDestinationChange","handleNavigationButton","SWEDEN_LAT_LNG","DENMARK_LAT_LNG","language","languageHelper","updateOrderPosition","DispatchCarPositionPicker","okButtonText","toggleCarLocalizationErrorModal","DispatchPosition","this","process","dispatchPositionErrorModalState","dispatchPositionSuccessModalState","Component","closeErrorModal","body","post","UPDATE_MISSION_DESTINATION","updateServePositionAddressHelper","components","street","streetNumber","route","postalTown","postalCode","country","streetAddress","area","formattedAddress","addressComponents","i","getPositionWorker","saveVehicleAddressWorker","saveDestinationChangerWorker","updateOrderWorker","getPositionWatcher","saveCenterCoordsWatcher","updateOrderPositionWatcher","saveDestinationChangerWatcher","toggleDispatchPositionSuccessModal","toggleLocationBlockedModal","fetchingReverseGeocode","setPositionToServe","getServeVehiclePosition","creatOrderActions","setDestination","getLocation","createOrderService","reverseGeoCode","updateCustomerPosition","accuracy","searchPlacesResult","Number","parseFloat","toFixed","serveAddress","formatted_address","town","zipcode","name","Error","positionToServe","GET_POSITION_DISPATCH","SAVE_DISPATCH_CENTER_COORDS","UPDATE_ORDER_POSITION","SAVE_DESTINATION_CHANGER","carLocalizationErrorModalState","carLocalizationSuccessModalState","GET","POST","RescueUrl","USER_LOGIN","GAT_DEV","GAT_PROD","DEV_RESQUE","PROD_RESQUE","AB_DEV","AB_PROD","SET_SOURCE_LOCATION","GET_JWT_TOKEN","GET_DAMAGE_REASONS","IS_CONFINED_SPACE","SELF_SERVE","GET_PAYMENT_OPTIONS","FIND_DRIVER","CUSTOMER_ACCEPT_MISSION","EDIT_MISSION_REQUEST","CLEAR_DESTINATION_CHANGE","POST_REVIEW","USER_ASSISTANCE_ORDER","GET_VEHICLE_INSURANCE_LEVELS","setRating","starsSelected","SET_RATING","setDisplayValue","SET_DISPLAY_VALUE","legacySubmitSummaryForm","LEGACY_SUMMARY_SUBMITTED","toggleSummarySuccessModal","TOGGLE_SUMMARY_SUCCESS_MODAL","toggleSummaryFailureModal","TOGGLE_SUMMARY_FAILURE_MODAL","submitReceiptForm","RECEIPT_SUBMITTED","toggleReceiptFailureModal","TOGGLE_RECEIPT_FAILURE_MODAL","postReview","fetchToken","legacyApi","mobile","access_token","tryParseResponse","json","status","legacyGetBaseUrl","base","url","fetch","method","headers","Authorization","JSON","stringify","SUMMARY_SUBMITTED","Star","selected","starSolid","star","role","onKeyDown","tabIndex","Rate","change","storeRating","setState","totalStars","display","flexDirection","Array","n","key","email","match","errors","invalidEmail","trim","required","StaticMap","markers","mapUrl","length","m","long","join","container","formatYYYYMMDD","dateString","toDate","toLocaleString","day","month","year","formatHoursAndMinutes","hour","minute","Font","register","family","fonts","DINPro","DinProBold","DINProLight","DINProMedium","StyleSheet","create","paddingTop","paddingHorizontal","paddingBottom","recieptTextContainer","justifyContent","paddingLeft","paddingRight","recieptText","fontFamily","letterSpacing","alignSelf","logoContainer","bottom","iconSize","top","iconPadding","iconContainer","recieptHeader","right","recieptAdress","recieptAdressContainer","alignItems","logoTextContainer","iconNav","borderLine","borderBottom","heroContainer","heroOne","oneInfo","onePricesInfo","smallText","mediumText","smallTextBold","smallTextThin","priceInfo","pricesInfo","onePriceInfo","towPriceInfo","logoWidth","marginLeft","imageContainer","marginTop","image","objectFit","logoImage","footerContainer","left","footer","divider","header","testEtt","PDF","summary","damageDate","fixedOnPlace","sourceAddress","customerVehicle","brand","registrationNumber","customer","firstName","lastName","organizationHeaderName","companyAddress","CompanyAddress","companyZipCode","CompanyZipCode","companyCity","CompanyCity","companyPhone","companyLogo","CompanyLogo","companyEmail","CompanyEmail","organisationNumber","OrganisationNumber","todaysDate","Date","toLocaleDateString","finishedOrders","orders","filter","item","totalCost","reduce","accumulator","orderLine","orderLines","subtotal","orderLineItem","total","calculatedVAT","currency","vat","useState","dataPicture","setDataPicture","img","document","createElement","crossOrigin","onload","canvas","ctx","getContext","drawImage","dataURI","toDataURL","wrap","fixed","uri","shortId","missionTypeName","missionReasonName","line","articleName","LegacyTextArea","input","meta","error","touched","rest","label","validateEmail","validators","getRating","getSummarySuccessModalState","Receipt","onOpinionClick","rating","summarySuccessModalState","combinedSourceAddress","combinedDestinationAddress","coordinate","missionDate","createMapMarkers","checkDestination","organizationUnitName","triggers","React","isMissionReviewEnabled","setIsMissionReviewEnabled","findTriggerForReview","find","trigger","isComplete","setDarkStyle","textBox","text","orderReviewed","faMessageCheck","textAreaContainer","Field","component","disabled","receipt","caption","textWithIcon","faCalendar","faClock","timeStamps","damageLocations","damageLocationsText","arrowDown","arrowIcon","costSummary","orderLinesCost","cost","totalCostHeader","renderCostSummary","fileName","reduxForm","form","initialValues","message","validate","values","destroyOnUnmount","text1","text2","text3","assistance","towing","shopChange","gradeExperience","placeholder","sendEmailButton","emailSent","repairAtSpotLabel","downloadReceipt","customerLabel","nameLabel","addressLabel","vehicleLabel","brandLabel","yearLabel","missionLabel","missionTypeLabel","missionNumber","missionType","specification","paymentMethod","totaltAmount","startedAt","regnoLabel","damageInformationLabel","damageReasonHeader","locationsForDamage","costs","damageScene","descriptiveDamageReason","towingLabel","towingTo","dateLabel","towedFromLabel","towedToLabel","chargedDistanceLabel","costsLabel","costTypeLabel","costLabel","paymentMethodLabel","totalLabel","assistansbolagetCompanyName","assistansbolagetAddressStreet","assistansbolagetAddressZip","receiptHeader","assistanstbolaget","emailLabel","orgNrLabel","orgNr","phoneNrLabel","phoneNr","vatLabel","recieptGenerated","opinion","send","summarySuccessModal","primaryButton","summaryFailureModal","receiptFailureModal","damageDetails","frontLeft","frontRight","rearLeft","rearRight","missing","defect","lockedInsideVehicle","petrol","diesel","ethanol","electric","red","yellow","errorMessage","camDrive","turbo","oilLeakage","fanBelt","coolingSystem","waterPump","powerTransmission","clutch","flywheel","distributionBox","generator","controlDevice","ignitionLock","batteryBank","fuelInjector","fuelPump","gasRegulator","steeringGear","servopump","steeringWheelLock","abs","parkingBrake","brakeServo","brakePads","rearCarriage","frontCarriage","exhaustSystem","hydraulics","glassDamage","fire","fuelError","flatTire","startHelp","keyIssues","propulsion","warningLight","engineProblem","gearBox","electronics","fuelSystem","steering","brakingSystem","otherDamage","collision","ditch","transport","drivingBan","accidentOptionFunction","chooseWarningColor","chooseReason","chooseTire","fuelType","damageDetail","chooseEngineProblem","chooseGearBox","chooseElectronics","chooseFuelSystem","chooseSteering","chooseBrakingSystem","chooseOtherDamage","legacyStringsSummary","DAMAGE_REASONS","FLAT_TIRE","CODE","HEADER","DETAILS_TITLE","details","FRONT_LEFT","FRONT_RIGHT","REAR_LEFT","REAR_RIGHT","START_HELP","KEY_ISSUES","MISSING","DEFECT","LOCKED_INSIDE_VEHICLE","PROPULSION","PETROL","DIESEL","ETHANOL","ELECTRIC","WARNING_LIGHT","RED","YELLOW","ERROR_MESSAGE","ENGINE_PROBLEM","CAM_DRIVE","TURBO","OIL_LEAKAGE","FAN_BELT","COOLING_SYSTEM","WATER_PUMP","POWER_TRANSMISSION","GEAR_BOX","CLUTCH","FLYWHEEL","DISTRIBUTION_BOX","ELECTRONICS","GENERATOR","CONTROL_DEVICE","IGNITION_LOCK","BATTERY_BANK","FUEL_SYSTEM","FUEL_INJECTOR","FUEL_PUMP","GAS_REGULATOR","STEERING","STEERING_GEAR","SERVO_PUMP","STEERING_WHEEL_LOCK","BRAKING_SYSTEM","ABS_ESP","PARKING_BRAKE","BRAKE_SERVO","BRAKE_PADS","OTHER_DAMAGE","REAR_CARRIAGE","FRONT_CARRIAGE","EXHAUST_SYSTEM","HYDRAULICS","GLASS_DAMAGE","FIRE","FUEL_ERROR","COLLISION","DITCH","TRANSPORT","DRIVING_BAN","chargedKilometers","taxRate","damagePositionStreet","damagePositionArea","transportedToStreet","transportedToArea","vehicle","damageReason","specifiedDamageDetail","setSpecifiedDamageDetail","damageReasonLabel","Object","d","newValue","entries","forEach","transform","fill","stroke","strokeWidth","paymentType","LegacyRate","submitRating","LegacyReciept","legacyOrder","handleSummarySubmit","setDamageDate","setSummary","showOpinion","setShowOpinion","checkIfRepairedAtSpot","timestamps","repairedAtDamagePlace","s_latitude","s_longitude","d_latitude","d_longitude","currentDamageDate","assigned_at","damageOrderNumber","legacyGetSummary","getSummary","repairedAtSpot","golden","onSubmit","button","calendar","repair","towTruck","user","activeOrderSelectors","ActiveOrdersActions","submitSummaryForm","getShowOpinion","getSummaryFailureModalState","getReceiptFailureModalState","summaryFailureModalState","receiptFailureModalState","saveOrderToState","closeSummarySuccessModal","closeSummaryFailureModal","closeReceiptFailureModal","setOrder","errorModal","setErrorModal","params","phone","showLegacyReciept","services","dispatchToken","companyPhoneNumber","variant","receiptLoading","receiptSuccessState","submitSummaryWorker","registerEmailWorker","summarySagaWatcher","registerEmailSagaWatcher","postReceipt","getFormValues","opinionFormValue","summaryBody","review","request_id","logErrorHelper","formValue","receiptBody","orderNumber","POST_RECEIPT","ok","POST_RECEIPT_SUCCESS","OLD_CREATE_ORDER_PATH","LOGIN_PATH","DISPATCH_POSITION_PATH","STARTED","ARRIVED","PREPARE_TRIP_TO_WORKSHOP","PICKEDUP","DROPPED","PENDING","COMPLETED","STOCKHOLM_SUBDOMAIN","GOTEBORG_SUBDOMAIN","MALMO_SUBDOMAIN","DISPATCH","INACTIVITY","PENDING_DISPATCH","REJECTED","SEARCHING","USER","WAITING_FOR_DISPATCH","WEB","TOGGLE_LOADING","CAR_POSITION_VIEW","DAMAGE_REASON_VIEW","ESTIMATE_PRICE_VIEW","SEEKING_RESPONDER_VIEW","USER_TERMS_VIEW","TMA_CAR_TERMS_VIEW","WELCOME_SCREEN_VIEW","getDamageReasons","getCurrentView","getNextView","getModalBackView","getEstimateAssistancePrice","getEstimateTowingPrice","getEstimateCalculatedAssistancePrice","getEstimateCalculatedTowingPrice","getEstimateTime","getCustomerType","getFinalPriceLoading","getFinalPrice","getNoConfirmationModalState","getAlreadyStartedErrorModalState","getToggleFormValue","getSocialNumberFieldError","getRegnoFieldError","getShowTowDestinationPicker","getShowPreviousEstimate","getIsCustomer","getIsFetchingVehicle","getIsFetchingPerson","getCancelledByDispatchModalState","getDispatchWillCallModalState","getHasPreviousVehiclePositionChanged","getVehicleCoords","getNoEstimateReason","getEstimatePriceCollectedCoords","selectConfinedSpaces","selectVehicleInsuranceLevels","isCookiesAccepted","createBrowserHistory","module","exports","setCookie","cookie","val","getCookie","a","b","pop","postOpinion","comment","AbUrl","serveActions","LocationSearchInput","setAddressComponents","handleChange","handleSetError","showError","handleSelect","placeId","saveSearchPlacesResult","showSearchField","geocodeByAddress","results","address_components","adressComponent","types","long_name","addressComponentsHelper","getLatLng","latLng","console","log","currentLatLng","google","maps","LatLng","panTo","onChange","onSelect","searchOptions","shouldFetchSuggestions","getInputProps","suggestions","getSuggestionItemProps","searchImage","autoFocus","suggestion","active","cursor","padding","locationPin","PositionInputContainer","styled","Card","CarPositionPresentation","zoomLevel","setShowSearchField","handleShowSearchField","getZoom","geoCoords","defaultCenter","substring","fullAddress","hasAddress","messageToDisplay","faCarBurst","locationPinLogo","getCenter","handleSaveButton","ref","onZoomChanged","onDragStart","defaultZoom","defaultOptions","onIdle","zIndex","path","SymbolPath","CIRCLE","scale","fillOpacity","fillColor","strokeWeight","strokeColor","strokeOpacity","Math","min","gatLoader","formatPrice","Intl","NumberFormat","maximumFractionDigits","format","NextStepButton","nextStep","nextStepText","getShopCoordinates","handleUnsavedShopPosition","EstimateDestination","setGoogleResponse","setWorkShopName","workshopName","setFormattedAddress","fAddress","setShowUndo","showUndoButton","setAllowSave","canSave","setUnsavedShopPosition","split","inputFieldValue","formattedInputFieldValue","showPreviousEstimate","showTowDestinationPicker","getShopLocation","shopLocationAddress","toggleSetDestination","getEstimatePrice","getEstimateDestinationPrice","showPreviousPrice","radius","opacity","estimatePriceView","searchLocationPlaceholder","searchError","backgroundColor","destinationButtonUndo","destinationButtonSave","destinationButtonOpen","pos","EstimatePrice","nextView","vehiclePositionHasChanged","DisplayDestinationComponent","estimatedAssistancePrice","estimatedTowingPrice","estimatedTime","next","previous","shopLocation","previousEstimatePrice","customerType","DisplayNameAndCity","DisplayNameAndAddress","DisplayAddress","add","engineInsuranceCoverage","titleChange","textEngineInsuranceCoverage","suggestedArrival","time","preliminary","suggestedAssistancePrice","suggestedShopPrice","textDecoration","margin","textAlign","previousStepText","previousStep","handlePreviousButton","vehicleRequired","minimumLength","maximumLength","isValidPhoneNumber","invalidPhone","onlyNumbers","socialNumberRequired","minimumLengthSocialNumber","maximumLengthSocialNumber","LocationsHandlerButton","Button","CustomerDetailsInput","Input","PhoneNumberContainer","InputStyles","Container","PhoneNumber","PhoneInput","p","theme","palette","primary","main","layout","depth6","sm","shouldShowError","customFormerror","customErrorStyle","validateRegno","validateMobile","validateSocialNumber","validatePosition","submitCustomerDetailsValidation","regnoError","mobileError","carPositionError","carPosition","socialNumberError","SubmissionError","_error","PhoneNumberInput","onFocus","onBlur","defaultCountry","getDefaultCountry","isError","flex","Label","InputContent","InputWrapper","isInFocus","hasHelpText","hasLabel","hasCornerHint","BottomLabel","PositionInput","CustomerDetails","debounceVehicleSearch","debounce","getVehicle","leading","hasSetInitialValues","initialize","getCurrentVehiclePosition","mobilePhone","handleSubmit","handleNextButton","regnoFieldError","formValues","shouldDisableNextButton","isInsured","socialNumberFieldError","isFetchingVehicle","isFetchingPerson","cookieValue","SelectField","options","optionsList","option","validateRadio","submitDamageReasonValidation","reserveTireError","reserveTire","garageError","garage","engineInsuranceTypeError","engineInsuranceType","terms","TwoButtonContainer","RadioGroupsStyle","Radio","ButtonGroup","submitFailed","htmlFor","v","checked","formValidate","decrementStep","DamageReason","currentMission","checkIfVehiclePositionHasChanged","customerDetailsFormValues","dispatchFetchDamageReasons","dispatchFetchConfinedSpaceAttributes","dispatchFetchPaymentOptionsList","dispatchFetchVehicleInsuranceLevels","prevProps","prevState","snapshot","gatLocaleMission","getSelectConfinedSpaces","currentDamageDetails","reason","currentDamageReasonGroup","missionReasons","attributes","attributeId","changeValue","damageGroupReasonsOptions","damageReasonsOptions","damageReasonsOptionsValues","notSelected","submitErrors","getFormSubmitErrors","formError","getFormError","toggleFormValue","submitForm","submit","StyledInfoCard","SeekingResponder","createAssistanceOrder","createDispatchOrder","noEstimateReason","noEstimate","closeTerms","userTerms","whiteSpace","close","tmaCarTerms","CustomerAcceptCountDown","countdownTime","setTime","timer","setInterval","prevTime","clearInterval","minutes","floor","seconds","faHourglassClock","getEstimatedArrivalTimeSeconds","loadingSelector","confirmOrder","openTerms","abortOrder","showNoConfirmationModal","redirectToSeekingResponder","currentOrder","setCurrentOrder","smallLoaderState","setSmallLoaderState","findDriverLoadingState","setFindDriverLoadingState","currentOrderVehiclePosition","locations","destinationObject","sourceObject","calculatedDestinationAddress","interval","locationObject","destinationButtonMessage","towingPrice","externalReference","assistancePrice","servicePrice","category","roundedPrice","round","toString","totalTowingPrice","totalAssistancePrice","totalServicePrice","showAssistanceOrService","showTowingOrService","loadingStates","providerArrivalAt","segments","endType","faBadgeDollar","arrivalTime","dateObj","hours","getHours","getMinutes","formatArrivalTime","addressParts","renderDestinationAddress","e","currentDriver","getPreventResumeOrderState","findCurrentViewAction","activeOrderActions","findCurrentView","CreateOrder","toggleDescription","descriptionHeight","toggleDescriptionHandler","collapseDescription","expandDescription","closeNoConfirmationModal","noConfirmationModalState","alreadyStartedErrorModalState","closeAlreadyStartedErrorModal","currentView","cancelledByDispatchModalState","closeCancelledByDispatchErrorModal","dispatchWillCallModalState","closeDispatchWillCallModal","MetaDataHandler","hostname","isSubdomainHelper","pointerEvents","transition","el","DOMRef","arrowButton","regionTextRef","subdomainStringsRender","bodyText2","dispatchWillCallModal","alreadyStartedErrorModal","unexpectedErrorModal","cancelledByDispatchErrorModal","current","toggleForm","estimatePriceCollectedCoords","estimateAssistancePrice","estimateTowingPrice","estimateCalculatedAssistancePrice","estimateCalculatedTowingPrice","estimateTime","isCustomer","fetchingFinalPrice","finalPrice","assistance_price","calculated_assistance_price","distance","driver_latitude","driver_longitude","towing_price","calculated_towing_price","unit","workshop_latitude","workshop_longitude","towDestination","showTowDestination","previousEstimate","hasPreviousVehiclePositionChanged","confinedSpaces","selfServeMission","isAccepted","setIn","time_seconds","vehicleNotFound","fetchVehicleFailure","content","fetchPersonFailure","createOrderWorker","estimatePriceWorker","setPreviousEstimate","estimatePriceDestinationWorker","fetchTokenWorker","loginWorker","denyWorker","listenForDriverWorker","fetchPersonWorker","getVehicleWorker","updateMissionSelfServe","createGatBody","handleGatRequestError","fetchFinalPriceWorker","fetchDispatchWorker","hasPreviousVehiclePositionChangedWorker","fetchCurrentDamageReasons","fetchPaymentOptions","createGatMission","submitCustomerDetails","createOrderWatcher","estimatePriceWatcher","estimatePriceDestinationWatcher","fetchFinalPriceWatcher","listenForDriverWatcher","loginWatcher","denyWatcher","valuesChangedWatcher","submitCustomerDetailsWatcher","submitCreateOrderFormWatcher","getVehicleWatcher","fetchPersonWatcher","fetchDispatchWatcher","hasPreviousVehiclePositionChangedWatcher","fetchTokenWatcher","fetchCurrentDamageReasonsWatcher","fetchConfinedSpaceAttributesWatcher","fetchPaymentOptionsWatcher","fetchVehicleInsuranceLevelsWatcher","carPositionPickerActions","acceptOrder","estimatePriceDestination","requestDriver","getUserInfo","requestDispatch","saveCustomerToPyramid","getLatestOrder","getInsuranceLevelsForOrgUnit","getAttributeConfinedSpace","getPaymentOptions","getVehicleInsuranceLevels","activeOrderService","getEta","getUnsavedShopPosition","carPositionPickerSelectors","urlSearchParams","redirect","vehiclePos","exception","is_driver_available","workshop_address","workshop_zipcode","workshop_city","workshop_name","destinationPos","r","loginObject","clearFields","booking_by","etaResponse","pathname","cancelled_by","cancel_reason","isValid","formValueCreate","formValueCustomer","orderRegno","orderMobile","confinedSpacesId","vehicleInsuranceLevel","requestBody","paymentOptionReference","s_address","customerCode","d_address","pyramidBody","updateCustomerInfo","mapCenterCoords","paymentOptions","trafficInsurance","insurance","getBaseUrl","Accept","FETCH_TOKEN","CANCEL_ORDER_SUCCESS","CLOSE_CANCEL_ORDER_MODAL","GET_ESTIMATED_ARRIVAL_TIME_SUCCESS","OPEN_CANCEL_ORDER_MODAL","SET_ORDER_STATUS","SET_TOWTRUCK_LOCATION","TOGGLE_STARTED_ORDER_MODAL","TOW_TRUCK_CANCELLED","GET_MISSION_BY_TOKEN_SUCCESS","GET_MISSION_BY_TOKEN_FAILURE","getTowtruckCoordinates","getPreviousTowtruckCoordinates","getNoTowTruckModalState","getNoLocationServiceModalState","getDestinationPosition","towTruckTemplate","heading","truckIcon","getTemplateFromType","template","activeOrder","getCosts","getOriginTowingPrice","getOriginAssistancePrice","getCountDownTime","getTimeSinceLastCall","gatHeaders","headersPrompt","getErrorObj","statusText","TERMS","topBar","phoneAlt","orientation","toggleInsured","yes","no","logoAlt","fetchUserFailure","messageMaximumLength","gotQuestions","contactUs","toggleText1","toggleText2","readMore","tmaCar","fullOrHalfInsurance","insuranceMissing","noConfirmationModal","welcomeScreen","subtitle","roundTheClock","quickResponse","payWithKlarna","happyCustomers","book","errorTitle","errorDescription","noLocationServiceModal","metaData","buttonText","seoText1","seoText2","suggestedPrice","customerDetails","carNumber","mobileNumber","pnrInfo","engineInsuranceTypeSelect","selectDamage","tierPlacement","chooseFuelType","warningLamp","lockedInside","etanol","frontTierLeft","frontTierRight","rearTierLeft","rearTierRight","spareTier","acceptText","seekingResponder","towtruck","text4","estimateArrival","assistanceTitle","towingTitle","confirm","abort","home","orderStartedTitle","orderStartedDescription","callSuport","onWay","arrived","pickedup","dropped","canceled","arrivalFee","towTruckTitle","towTruckText","complete","cancelOrderModal","cancel","saveButton","locationBlockedModal","successModal","loginTriggerComponent","assistansbolagetAddress1","assistansbolagetAddress2","assistansbolagetAddress3","languageFile","strings","FETCHING_REVERSE_GEOCODE","GET_LOCATION_SUCCESS","GET_LOCATION","RESET_POSITION","RESUME_ORDER","SET_VEHICLE_LOCATION","TOGGLE_NO_LOCATION_SERVICE_MODAL","TOGGLE_NO_TOW_TRUCKS_MODAL","SET_UNSAVED_SHOP_LOCATION","CLEAR_VEHICLE_POSITION","SAVE_DESTINATION_PLACE","SAVE_DESTINATION_CHANGER_WITH_ALL_INFO","SET_POSITION_TO_SERVE","DirectionsMap","withState","vehicleCoordinates","towtruckCoordinates","previousTowtruckCoordinates","orderStatus","shopCoordinates","setMarkers","icons","point1","point2","geometry","spherical","computeHeading","setHeading","deltaLat","bounds","LatLngBounds","visibleHeight","innerHeight","paddingLeftRight","innerWidth","bottomPadding","topPadding","fitBounds","setFitBounds","marker","extend","panBy","anchor","iconString","base64IconString","Buffer","from","Size","Point","ICON_WIDTH","ICON_HEIGHT","cache","createIntlCache","mappedDefaultMessages","defaultMessages","acc","createIntl","messages","useTranslations","setMessages","translations","setTranslations","setLocale","URL","searchParams","append","CompanyLocale","LoginTriggerComponent","loginWithUrlParameters","useSetCompanyInformation","setCompanyAttributes","setOrganizationUnitId","setOrganizationUnitHeadName","recordCompanyAttributes","organizationUnitId","logo","langOptions","choices","TopBar","getFlagIcon","lang","code","marginRight","createOptions","defaultOption","carPositionSelectors","CreateOrderMap","carPositionCoordinates","setZoomLevel","carLatLng","setTimeout","zoom","animation","Animation","DROP","OrderCompleteMap","animateTowtruckCoordinates","setAnimateTowtruckCoordinates","newLat","newLng","oldLat","oldLng","deltaLng","isCurrentRouteDispatchPosition","Background","currentPath","backgroundComponent","setBackgroundComponent","SeekingResponderMap","backgroundRenderer","HeaderTag","currentConfig","canonical","itemPropDescription","itemPropDescriptionTwo","Helmet","encodeSpecialCharacters","itemProp","property","rel","async","data-cbid","data-blockingmode","withRouter","Switch","Route","exact","render","Redirect","to","CallButton","resumeOrder","WelcomeScreen","scrollToTop","scrollToBottom","scrollIntoView","behavior","resetUnexpectedErrorModal","checkAndResumeActiveOrder","clockPrice","klarna","thumbsUp","isFetchingVehiclePosition","destinationChangerPosition","previousTowtruckPosition","unsavedShopPosition","noTowTrucksModalState","noLocationServiceModalState","resumeOrderWorker","resumeOrderWatcher","rootReducer","combineReducers","loadingReducer","welcomeReducer","createOrderReducer","activeOrderReducer","summaryReducer","carPositionPickerReducer","dispatchPositionReducer","legacySubmitSummaryWorker","legacySummarySagaWatcher","activeOrderSelector","selector","rootSaga","welcomeSaga","createOrderSaga","activeOrderSaga","summarySaga","legacySummarySaga","dispatchPositionSaga","sagaMiddleware","createSagaMiddleware","composeEnhancers","createLogger","stateTransformer","keys","Iterable","isIterable","toJS","store","createStore","applyMiddleware","run","parse","parseJSON","sessionStorage","getItem","removeItem","setItem","AppWrapper","currentMessagesForRescue","defaultTheme","global","_babelPolyfill","require","ReactDOM","getElementById","CardBoxContainerTest","children","hide","TOGGLE_DISPATCH_POSITION_ERROR_MODAL","SHOW_DISPATCH_MAP","SAVE_DISPATCH_MAP_TO_STATE","TOGGLE_DISPATCH_POSITION_SUCCESS_MODAL","TOGGLE_LOCATION_BLOCKED_MODAL","secondaryModalButtonText","secondaryModalButtonAction","fallbackPostalCode","fallbackPostalTown","positionStreet","geolocation","navigator","Promise","resolve","reject","getCurrentPosition","FETCH_FINAL_PRICE_FAILURE","FETCH_FINAL_PRICE_SUCCESS","START_FETCH_FINAL_PRICE","resetPosition","toggleNoTowTrucksModal","toggleNoLocationServiceModal","clearVehiclePosition","setDestinationChangePlace","setDestinationToState","getLoadingState","getReceiptSuccessState","getReceiptLoadingState"],"mappings":"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","file":"static/js/main.3a76d650.chunk.js","sourcesContent":["const getPreviousEstimatePrice = ({ createOrder }) =>\n createOrder.getIn([\"previousEstimate\", \"price\"]);\n\nconst getShowDispatchMap = ({ dispatchPosition }) =>\n dispatchPosition.get(\"showDispatchMap\");\n\nconst getMap = ({ dispatchPosition }) => dispatchPosition.get(\"map\");\n\nconst getCenterCoords = ({ dispatchPosition }) =>\n dispatchPosition.get(\"centerCoords\");\n\nconst getOrderNo = ({ dispatchPosition }) => dispatchPosition.get(\"orderNo\");\n\nconst getCarLocalizationErrorModalState = ({ dispatchPosition }) =>\n dispatchPosition.get(\"carLocalizationErrorModalState\");\n\nconst getCarLocalizationSuccessModalState = ({ dispatchPosition }) =>\n dispatchPosition.get(\"carLocalizationSuccessModalState\");\n\nconst getSearchPlacesResult = ({ dispatchPosition }) =>\n dispatchPosition.get(\"searchPlacesResult\");\n\nconst getLocationBlockedModalState = ({ dispatchPosition }) =>\n dispatchPosition.get(\"locationBlockedModalState\");\n\nexport default {\n getPreviousEstimatePrice,\n getShowDispatchMap,\n getMap,\n getCenterCoords,\n getOrderNo,\n getCarLocalizationErrorModalState,\n getCarLocalizationSuccessModalState,\n getSearchPlacesResult,\n getLocationBlockedModalState\n};\n","import {\n GET_MISSION,\n BaseUrl,\n GET_MISSIONS_BY_ID\n} from \"../../constants/apiConstants\";\nimport api from \"../../helpers/apiUtils\";\nimport { getSession, SESSION_KEYS } from \"../../helpers/sessionStore\";\n\nconst getMissionNow = token => {\n const gatLocale = getSession(SESSION_KEYS.locale);\n const appId = getSession(SESSION_KEYS.appId);\n return api\n .get(`${GET_MISSION}?token=${token}`, BaseUrl.GatUrl, { gatLocale, appId })\n .then(res => {\n return res;\n })\n .catch(err => {\n throw err;\n });\n};\nconst getOrderById = id => {\n const gatLocale = getSession(SESSION_KEYS.locale);\n const gatOrgUnit = getSession(SESSION_KEYS.gatOrganizationUnit);\n const accessToken = getSession(SESSION_KEYS.accessToken);\n return api\n .get(`${GET_MISSIONS_BY_ID}${id}`, BaseUrl.GatUrl, {\n gatOrgUnit,\n accessToken,\n gatLocale\n })\n .then(res => {\n return res;\n })\n .catch(err => {\n throw err;\n });\n};\n\nexport default {\n getMissionNow,\n getOrderById\n};\n","import { deleteSession, getSession, SESSION_KEYS } from \"./sessionStore\";\n\nconst logout = () => {\n const gatAccesToken = getSession(SESSION_KEYS.accessToken);\n const missionId = getSession(SESSION_KEYS.missionId);\n const token = getSession(SESSION_KEYS.token);\n\n if (gatAccesToken) {\n deleteSession(SESSION_KEYS.accessToken);\n }\n if (missionId) {\n deleteSession(SESSION_KEYS.missionId);\n }\n if (token) {\n deleteSession(SESSION_KEYS.token);\n }\n};\n\nexport default logout;\n","import {\n CREATE_ORDER,\n ESTIMATE_PRICE,\n ESTIMATE_PRICE_DESTINATION,\n CUSTOMER_DETAILS_FORM_SUBMITTED,\n CREATE_ORDER_FORM_SUBMITTED,\n FETCH_FINAL_PRICE,\n DENY_HELP,\n VALUES_CHANGED,\n TOGGLE_NO_CONFIRMATION_MODAL,\n LOGIN,\n SET_NEXT_VIEW,\n SET_PREVIOUS_VIEW,\n SET_CURRENT_VIEW,\n GO_FORWARD,\n GO_BACK,\n GET_POSITION,\n FETCH_PERSON,\n FETCH_VEHICLE,\n TOGGLE_ESTIMATE_DESTINATION,\n SET_SHOP_LOCATION,\n SET_PREVIOUS_PRICE,\n SET_SHOW_PREVIOUS_PRICE,\n TOGGLE_ALREADY_STARTED_ERROR_MODAL,\n TOGGLE_UNEXPECTED_ERROR_MODAL,\n SET_SEARCH_PLACES_RESULT,\n FETCH_DISPATCH,\n TOGGLE_ORDER_CANCELLED_BY_DISPATCH_MODAL,\n TOGGLE_DISPATCH_WILL_CALL_MODAL,\n CHECK_PREVIOUS_VEHICLE_POSITION,\n CANCEL_LISTEN_FOR_DRIVER,\n FETCH_ESTIMATE_SUCCESS,\n FETCH_ESTIMATE_SUCCESS_COORDS,\n LISTEN_FOR_DRIVER,\n FETCHING_VEHICLE,\n GET_PERSON_DETAILS_FAILURE,\n GET_POSITION_SUCCESS,\n SET_HAS_PREVIOUS_VEHICLE_POSITION_CHANGED,\n SET_TOGGLE_ESTIMATE_DESTINATION_VALUE,\n GET_VEHICLE_DETAILS_SUCCESS,\n GET_VEHICLE_DETAILS_FAILURE,\n ERROR_VEHICLE_NOT_FOUND,\n SET_NO_ESTIMATE_REASON,\n FETCHING_PERSON,\n FETCHING_PERSON_SUCCESS,\n PERSON_NOT_FOUND,\n SET_MODAL_VIEW,\n MODAL_GO_BACK,\n FETCH_DAMAGE_REASONS,\n FETCH_DAMAGE_REASONS_SUCCESS,\n FETCH_DAMAGE_REASONS_FAILURE,\n FETCH_CONFINED_SPACE_ATTRIBUTES_SUCCESS,\n FETCH_CONFINED_SPACE_ATTRIBUTES_FAILURE,\n FETCH_CONFINED_SPACE_ATTRIBUTES,\n FETCH_PAYMENT_OPTIONS,\n FETCH_PAYMENT_OPTIONS_SUCCESS,\n FETCH_PAYMENT_OPTIONS_FAILURE,\n SAVE_SELF_SERVE_MISSION_SUCCESS,\n FETCH_VEHICLE_INSURANCE_LEVELS,\n FETCH_VEHICLE_INSURANCE_LEVELS_SUCCESS,\n FETCH_VEHICLE_INSURANCE_LEVELS_FAILURE,\n ACCEPT_COOKIE_VALUE\n} from \"./constants\";\n\nconst getPosition = () => ({\n type: GET_POSITION\n});\n\nconst goForward = () => ({\n type: GO_FORWARD\n});\n\nconst goBack = () => ({\n type: GO_BACK\n});\n\nconst setPreviousView = view => ({\n type: SET_PREVIOUS_VIEW,\n payload: view\n});\n\nconst setNextView = view => ({\n type: SET_NEXT_VIEW,\n payload: view\n});\n\nconst setCurrentView = view => ({\n type: SET_CURRENT_VIEW,\n payload: view\n});\n\nconst setModalView = view => ({\n type: SET_MODAL_VIEW,\n payload: view\n});\n\nconst modalGoBack = () => ({\n type: MODAL_GO_BACK\n});\n\nconst clearValues = () => ({\n type: VALUES_CHANGED\n});\n\nconst estimatePrice = () => ({\n type: ESTIMATE_PRICE\n});\n\nconst estimateDestinationPrice = () => ({\n type: ESTIMATE_PRICE_DESTINATION\n});\n\nconst submitCustomerDetailsForm = () => ({\n type: CUSTOMER_DETAILS_FORM_SUBMITTED\n});\n\nconst submitCreateOrderForm = () => ({\n type: CREATE_ORDER_FORM_SUBMITTED\n});\n\nconst createOrder = () => ({\n type: CREATE_ORDER\n});\n\nconst fetchFinalPrice = () => ({\n type: FETCH_FINAL_PRICE\n});\n\nconst fetchDispatch = () => ({\n type: FETCH_DISPATCH\n});\n\nconst deny = () => ({\n type: DENY_HELP\n});\n\nconst toggleNoConfirmationModal = bool => ({\n type: TOGGLE_NO_CONFIRMATION_MODAL,\n payload: bool\n});\n\nconst login = () => ({\n type: LOGIN\n});\n\nconst fetchPerson = socialNumber => ({\n type: FETCH_PERSON,\n payload: socialNumber\n});\n\nconst fetchVehicle = regno => ({\n type: FETCH_VEHICLE,\n payload: regno\n});\n\nconst toggleEstimateDestination = () => ({\n type: TOGGLE_ESTIMATE_DESTINATION\n});\n\nconst setShopLocation = shopPosition => ({\n type: SET_SHOP_LOCATION,\n shopPosition\n});\n\nconst setShowPreviousPrice = show => ({\n type: SET_SHOW_PREVIOUS_PRICE,\n show\n});\nconst setPreviousPrice = price => ({\n type: SET_PREVIOUS_PRICE,\n payload: price\n});\n\nconst toggleUnexpectedErrorModal = bool => ({\n type: TOGGLE_UNEXPECTED_ERROR_MODAL,\n payload: bool\n});\n\nconst toggleAlreadyStartedErrorModal = bool => ({\n type: TOGGLE_ALREADY_STARTED_ERROR_MODAL,\n payload: bool\n});\n\nconst setSearchPlacesResult = result => ({\n type: SET_SEARCH_PLACES_RESULT,\n payload: result\n});\n\nconst toggleCancelledByDispatchErrorModal = bool => ({\n type: TOGGLE_ORDER_CANCELLED_BY_DISPATCH_MODAL,\n payload: bool\n});\n\nconst toggleDispatchWillCallModal = bool => ({\n type: TOGGLE_DISPATCH_WILL_CALL_MODAL,\n payload: bool\n});\n\nconst checkPreviousVehiclePosition = () => ({\n type: CHECK_PREVIOUS_VEHICLE_POSITION\n});\n\nconst cancelListenForDriver = () => ({\n type: CANCEL_LISTEN_FOR_DRIVER\n});\n\nconst fetchEstimateSuccess = estimate => ({\n type: FETCH_ESTIMATE_SUCCESS,\n estimate\n});\n\nconst fetchEstimateSuccessCoords = coords => ({\n type: FETCH_ESTIMATE_SUCCESS_COORDS,\n payload: coords\n});\n\nconst listenForDriver = () => ({\n type: LISTEN_FOR_DRIVER\n});\n\nconst fetchingVehicle = () => ({\n type: FETCHING_VEHICLE\n});\n\nconst getPersonDetailsFailure = () => ({\n type: GET_PERSON_DETAILS_FAILURE\n});\n\nconst getPositionSuccess = customerPosition => ({\n type: GET_POSITION_SUCCESS,\n customerPosition\n});\n\nconst setHasPreviousVehiclePositionChanged = boolean => ({\n type: SET_HAS_PREVIOUS_VEHICLE_POSITION_CHANGED,\n payload: boolean\n});\n\nconst setToogleEstimateDestinationValue = boolean => ({\n type: SET_TOGGLE_ESTIMATE_DESTINATION_VALUE,\n payload: boolean\n});\n\nconst getVehicleDetailsSuccess = () => ({\n type: GET_VEHICLE_DETAILS_SUCCESS\n});\n\nconst getVehicleDetailsFailure = () => ({\n type: GET_VEHICLE_DETAILS_FAILURE\n});\n\nconst vehicleNotFoundError = () => ({\n type: ERROR_VEHICLE_NOT_FOUND\n});\n\nconst setNoEstimateReason = string => ({\n type: SET_NO_ESTIMATE_REASON,\n payload: string\n});\n\nconst fetchingPerson = () => ({\n type: FETCHING_PERSON\n});\n\nconst fetchingPersonSuccess = () => ({\n type: FETCHING_PERSON_SUCCESS\n});\n\nconst personNotFound = () => ({\n type: PERSON_NOT_FOUND\n});\n\nconst fetchDamageReasons = () => ({\n type: FETCH_DAMAGE_REASONS\n});\n\nconst fetchCurrentDamageReasonsSuccess = damageReasons => ({\n type: FETCH_DAMAGE_REASONS_SUCCESS,\n payload: damageReasons\n});\n\nconst fetchCurrentDamageReasonsFailure = () => ({\n type: FETCH_DAMAGE_REASONS_FAILURE\n});\n\nconst fetchConfinedSpaceAttributes = () => ({\n type: FETCH_CONFINED_SPACE_ATTRIBUTES\n});\n\nconst fetchConfinedSpaceAttributesSuccess = confinedSpaceAttributes => ({\n type: FETCH_CONFINED_SPACE_ATTRIBUTES_SUCCESS,\n payload: confinedSpaceAttributes\n});\n\nconst fetchConfinedSpaceAttributesFailure = () => ({\n type: FETCH_CONFINED_SPACE_ATTRIBUTES_FAILURE\n});\n\nconst fetchPaymentOptionsList = () => ({\n type: FETCH_PAYMENT_OPTIONS\n});\n\nconst fetchPaymentOptionsListSuccess = paymentOptionsList => ({\n type: FETCH_PAYMENT_OPTIONS_SUCCESS,\n payload: paymentOptionsList\n});\n\nconst fetchPaymentOptionsListFailure = () => ({\n type: FETCH_PAYMENT_OPTIONS_FAILURE\n});\n\nconst saveSelfServeMissionSuccess = data => ({\n type: SAVE_SELF_SERVE_MISSION_SUCCESS,\n data\n});\n\nconst fetchVehicleInsuranceLevels = () => ({\n type: FETCH_VEHICLE_INSURANCE_LEVELS\n});\n\nconst fetchVehicleInsuranceLevelsSuccess = vehicleInsuranceLevels => ({\n type: FETCH_VEHICLE_INSURANCE_LEVELS_SUCCESS,\n payload: vehicleInsuranceLevels\n});\n\nconst fetchVehicleInsuranceLevelsFailure = () => ({\n type: FETCH_VEHICLE_INSURANCE_LEVELS_FAILURE\n});\n\nconst acceptCookieValue = () => ({\n type: ACCEPT_COOKIE_VALUE\n});\n\nexport default {\n clearValues,\n fetchFinalPrice,\n estimatePrice,\n estimateDestinationPrice,\n createOrder,\n submitCustomerDetailsForm,\n submitCreateOrderForm,\n deny,\n toggleNoConfirmationModal,\n login,\n setPreviousView,\n setNextView,\n setCurrentView,\n setModalView,\n modalGoBack,\n goForward,\n goBack,\n getPosition,\n fetchPerson,\n fetchVehicle,\n toggleEstimateDestination,\n setShopLocation,\n setShowPreviousPrice,\n setPreviousPrice,\n toggleAlreadyStartedErrorModal,\n toggleUnexpectedErrorModal,\n setSearchPlacesResult,\n fetchDispatch,\n toggleCancelledByDispatchErrorModal,\n toggleDispatchWillCallModal,\n checkPreviousVehiclePosition,\n cancelListenForDriver,\n fetchEstimateSuccess,\n fetchEstimateSuccessCoords,\n listenForDriver,\n fetchingVehicle,\n getPersonDetailsFailure,\n getPositionSuccess,\n setHasPreviousVehiclePositionChanged,\n setToogleEstimateDestinationValue,\n getVehicleDetailsSuccess,\n getVehicleDetailsFailure,\n vehicleNotFoundError,\n setNoEstimateReason,\n fetchingPerson,\n fetchingPersonSuccess,\n personNotFound,\n fetchDamageReasons,\n fetchCurrentDamageReasonsSuccess,\n fetchCurrentDamageReasonsFailure,\n fetchConfinedSpaceAttributes,\n fetchConfinedSpaceAttributesSuccess,\n fetchConfinedSpaceAttributesFailure,\n fetchPaymentOptionsList,\n fetchPaymentOptionsListSuccess,\n fetchPaymentOptionsListFailure,\n saveSelfServeMissionSuccess,\n fetchVehicleInsuranceLevels,\n fetchVehicleInsuranceLevelsSuccess,\n fetchVehicleInsuranceLevelsFailure,\n acceptCookieValue\n};\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport createOrderSelectors from \"../../features/createOrder/selectors\";\nimport gatIcon from \"../../assets/images/gat_symbol_animate.svg\";\n\nconst { getLoading } = createOrderSelectors;\n\nconst LoadingSpinner = ({ loading, positionStyle, sizeStyle, infoText }) => {\n return (\n <>\n {loading && (\n
\n
\n \"loading\"\n {infoText &&

{infoText}

}\n
\n
\n )}\n \n );\n};\n\nLoadingSpinner.propTypes = {\n loading: PropTypes.bool.isRequired,\n positionStyle: PropTypes.shape({}),\n sizeStyle: PropTypes.shape({}),\n infoText: PropTypes.string\n};\n\nLoadingSpinner.defaultProps = {\n positionStyle: {},\n sizeStyle: {},\n infoText: \"\"\n};\n\nconst mapStateToProps = state => ({\n isLoading: getLoading(state)\n});\n\nexport default connect(mapStateToProps, null)(LoadingSpinner);\n","const mapStyle = [\n {\n elementType: \"geometry\",\n stylers: [\n {\n color: \"#242f3e\"\n }\n ]\n },\n {\n elementType: \"labels.text.fill\",\n stylers: [\n {\n color: \"#746855\"\n }\n ]\n },\n {\n elementType: \"labels.text.stroke\",\n stylers: [\n {\n color: \"#242f3e\"\n }\n ]\n },\n {\n featureType: \"administrative.locality\",\n elementType: \"labels.text.fill\",\n stylers: [\n {\n color: \"#d59563\"\n }\n ]\n },\n {\n featureType: \"poi\",\n elementType: \"labels.text.fill\",\n stylers: [\n {\n color: \"#d59563\"\n }\n ]\n },\n {\n featureType: \"poi.park\",\n elementType: \"geometry\",\n stylers: [\n {\n color: \"#263c3f\"\n }\n ]\n },\n {\n featureType: \"poi.park\",\n elementType: \"labels.text.fill\",\n stylers: [\n {\n color: \"#6b9a76\"\n }\n ]\n },\n {\n featureType: \"road\",\n elementType: \"geometry\",\n stylers: [\n {\n color: \"#38414e\"\n }\n ]\n },\n {\n featureType: \"road\",\n elementType: \"geometry.stroke\",\n stylers: [\n {\n color: \"#212a37\"\n }\n ]\n },\n {\n featureType: \"road\",\n elementType: \"labels.text.fill\",\n stylers: [\n {\n color: \"#9ca5b3\"\n }\n ]\n },\n {\n featureType: \"road.highway\",\n elementType: \"geometry\",\n stylers: [\n {\n color: \"#746855\"\n }\n ]\n },\n {\n featureType: \"road.highway\",\n elementType: \"geometry.stroke\",\n stylers: [\n {\n color: \"#1f2835\"\n }\n ]\n },\n {\n featureType: \"road.highway\",\n elementType: \"labels.text.fill\",\n stylers: [\n {\n color: \"#f3d19c\"\n }\n ]\n },\n {\n featureType: \"transit\",\n elementType: \"geometry\",\n stylers: [\n {\n color: \"#2f3948\"\n }\n ]\n },\n {\n featureType: \"transit.station\",\n elementType: \"labels.text.fill\",\n stylers: [\n {\n color: \"#d59563\"\n }\n ]\n },\n {\n featureType: \"water\",\n elementType: \"geometry\",\n stylers: [\n {\n color: \"#17263c\"\n }\n ]\n },\n {\n featureType: \"water\",\n elementType: \"labels.text.fill\",\n stylers: [\n {\n color: \"#515c6d\"\n }\n ]\n },\n {\n featureType: \"water\",\n elementType: \"labels.text.stroke\",\n stylers: [\n {\n color: \"#17263c\"\n }\n ]\n }\n];\n\nexport default mapStyle;\n","import mapStyle from \"./mapStyle\";\n\nexport const defaultMapOptions = {\n styles: mapStyle,\n streetViewControl: false,\n scaleControl: false,\n mapTypeControl: false,\n panControl: false,\n zoomControl: false,\n rotateControl: false,\n fullscreenControl: false,\n gestureHandling: \"none\",\n disableDefaultUI: true,\n draggableCursor: \"default\",\n minZoom: 4\n};\n\nexport const directionsMapOptions = {\n styles: mapStyle,\n streetViewControl: false,\n scaleControl: false,\n mapTypeControl: false,\n panControl: false,\n zoomControl: false,\n rotateControl: false,\n fullscreenControl: false,\n gestureHandling: \"greedy\",\n disableDefaultUI: true,\n draggableCursor: \"default\",\n maxZoom: 17,\n minZoom: 4\n};\n\nexport default { defaultMapOptions, directionsMapOptions };\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { faTruckTow } from \"@fortawesome/pro-light-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { injectIntl } from \"react-intl\";\nimport selectors from \"./selectors\";\nimport LoadingSpinner from \"../../components/LoadingSpinner/LoadingSpinner\";\nimport CardBoxContainer from \"../../components/CardBoxContainer/CardBoxContainer\";\n\nconst {\n getEstimatedArrivalTimeText,\n getIsEstimatedArrivalTimeOutdated\n} = selectors;\n\nconst OrderOnWay = ({\n company,\n driver,\n timeText,\n towTruckRegNo,\n etaOutdated,\n intl\n}) => {\n return (\n <>\n \n
\n
\n \n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderOnWay.Title\",\n defaultMessage: \"We are on our way\",\n description: \"ActiveOrder: orderOnWay title\"\n })}\n

\n
\n
\n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderOnWay.InfoTextDriver\",\n defaultMessage: \"Our driver\",\n description: \"ActiveOrder: orderOnWay driver text\"\n })}\n {` ${driver} `}\n {intl.formatMessage({\n id: \"ActiveOrder.OrderOnWay.InfoTextFrom\",\n defaultMessage: \"from\",\n description: \"ActiveOrder: orderOnWay from text\"\n })}\n {` ${company} `}\n {intl.formatMessage({\n id: \"ActiveOrder.OrderOnWay.InfoBreadText\",\n defaultMessage: \"is on their way to help you.\",\n description: \"ActiveOrder: orderOnWay bread text\"\n })}\n

\n
\n
\n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderOnWay.InfoTextRegistrationNumber\",\n defaultMessage: \"The registration number of the tow truck is\",\n description: \"ActiveOrder: orderOnWay registration number text\"\n })}\n {` ${towTruckRegNo}`}\n

\n
\n
\n
\n \n {intl.formatMessage({\n id: \"ActiveOrder.OrderOnWay.InfoTextETA\",\n defaultMessage: \"Time to arrival\",\n description: \"ActiveOrder: orderOnWay ETA text\"\n })}\n \n {!timeText ? (\n
\n \n
\n ) : (\n
\n \n {timeText}\n \n
\n )}\n
\n {etaOutdated && (\n
\n {intl.formatMessage({\n id: \"ActiveOrder.OrderOnWay.EtaOutdatedText\",\n defaultMessage: \"ETA is outdated, and may not be accurate.\",\n description: \"ActiveOrder: orderOnWay ETA outdated text\"\n })}\n
\n )}\n
\n \n );\n};\n\nOrderOnWay.propTypes = {\n company: PropTypes.string.isRequired,\n driver: PropTypes.string.isRequired,\n towTruckRegNo: PropTypes.string.isRequired,\n timeText: PropTypes.string.isRequired,\n etaOutdated: PropTypes.bool.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired\n};\n\nconst mapStateToProps = state => ({\n timeText: getEstimatedArrivalTimeText(state),\n etaOutdated: getIsEstimatedArrivalTimeOutdated(state)\n});\n\nexport default injectIntl(connect(mapStateToProps, null)(OrderOnWay));\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCarWrench } from \"@fortawesome/pro-light-svg-icons\";\nimport { useIntl } from \"react-intl\";\nimport { useSessionStorage } from \"usehooks-ts\";\nimport { Button } from \"@assistansbolaget/gat-components\";\nimport CardBoxContainer from \"../../components/CardBoxContainer/CardBoxContainer\";\nimport { SESSION_KEYS } from \"../../helpers/sessionStore\";\n\nconst OrderPickedUp = ({ company, driver, towTruckRegNo, destination }) => {\n const [companyAttributes] = useSessionStorage(\n SESSION_KEYS.companyAttributes,\n undefined\n );\n const phoneNumber = companyAttributes?.CompanyPhone?.value;\n const intl = useIntl();\n return (\n <>\n \n
\n
\n \n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderPickedUp.Title\",\n defaultMessage: \"Your vehicle is being towed\",\n description: \"activeOrder: pickedup title\"\n })}\n

\n
\n
\n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderPickedUp.InfoTextDriver\",\n defaultMessage: \"Our driver\",\n description: \"activeOrder: pickedup info text driver\"\n })}\n {` ${driver} `}\n {intl.formatMessage({\n id: \"ActiveOrder.OrderPickedUp.InfoTextFrom\",\n defaultMessage: \"from\",\n description: \"activeOrder: pickedup info text from\"\n })}\n {` ${company} `}\n {intl.formatMessage({\n id: \"ActiveOrder.OrderPickedUp.ToDestinationText\",\n defaultMessage: \"towing your vehicle to address\",\n description: \"activeOrder: destination text\"\n })}\n {` ${destination}`}\n

\n
\n
\n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderPickedUp.InfoTextRegistrationNumber\",\n defaultMessage: \"The registration number of the tow truck is\",\n description:\n \"activeOrder: pickedup info text registration number\"\n })}\n {` ${towTruckRegNo}`}\n

\n
\n
\n
\n \n \n {intl\n .formatMessage({\n id: \"ActiveOrder.OrderPickedUp.CallSupport\",\n defaultMessage: \"Call support\",\n description: \"call support button\"\n })\n .toUpperCase()}\n \n \n \n );\n};\n\nOrderPickedUp.propTypes = {\n company: PropTypes.string.isRequired,\n driver: PropTypes.string.isRequired,\n towTruckRegNo: PropTypes.string.isRequired,\n destination: PropTypes.string.isRequired\n};\n\nexport default OrderPickedUp;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faLocationDot } from \"@fortawesome/pro-light-svg-icons\";\nimport { useIntl } from \"react-intl\";\nimport CardBoxContainer from \"../../components/CardBoxContainer/CardBoxContainer\";\n\nconst OrderArrived = ({ company, driver, towTruckRegNo }) => {\n const intl = useIntl();\n return (\n <>\n \n
\n
\n \n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderArrived.Title\",\n defaultMessage: \"We have arrived\",\n description: \"ActiveOrder: order arrived Title\"\n })}\n

\n
\n
\n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderArrived.InfoTextDriver\",\n defaultMessage: \"Driver\",\n description: \"ActiveOrder: order arrived InfoTextDriver\"\n })}\n {` ${driver} `}\n {intl.formatMessage({\n id: \"ActiveOrder.OrderArrived.InfoTextFrom\",\n defaultMessage: \"from\",\n description: \"ActiveOrder: order arrived InfoTextFrom\"\n })}\n {` ${company} `}\n {intl.formatMessage({\n id: \"ActiveOrder.OrderArrived.InfoBreadText\",\n defaultMessage: \"is on sight to help you\",\n description: \"ActiveOrder: order arrived InfoBreadText\"\n })}\n

\n
\n
\n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderArrived.InfoTextRegistrationNumber\",\n defaultMessage: \"The registration number of the tow truck is\",\n description:\n \"ActiveOrder: order arrived InfoTextRegistrationNumber\"\n })}\n {` ${towTruckRegNo}`}\n

\n
\n
\n
\n \n );\n};\n\nOrderArrived.propTypes = {\n company: PropTypes.string.isRequired,\n driver: PropTypes.string.isRequired,\n towTruckRegNo: PropTypes.string.isRequired\n};\n\nexport default OrderArrived;\n","import React from \"react\";\nimport { Button } from \"@assistansbolaget/gat-components\";\nimport { useIntl } from \"react-intl\";\nimport { useSessionStorage } from \"usehooks-ts\";\nimport CardBoxContainer from \"../../components/CardBoxContainer/CardBoxContainer\";\nimport { SESSION_KEYS } from \"../../helpers/sessionStore\";\n\nconst OrderComplete = () => {\n const [companyAttributes] = useSessionStorage(\n SESSION_KEYS.companyAttributes,\n undefined\n );\n\n const phoneNumber = companyAttributes?.CompanyPhone?.value;\n const intl = useIntl();\n return (\n <>\n \n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderComplete.Title\",\n defaultMessage: \"Mission is completed\",\n description: \"orderComplete: OrderComplete Title\"\n })}\n

\n
\n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderComplete.BreadTextOne\",\n defaultMessage:\n \"Thank you for choosing us. We hope you enjoyed our assistance.\",\n description: \"orderComplete: OrderComplete BreadTextOne\"\n })}\n

\n

\n {intl.formatMessage({\n id: \"ActiveOrder.OrderComplete.BreadTextTwo\",\n defaultMessage:\n \"If you have further questions, please contact our support.\",\n description: \"orderComplete: OrderComplete BreadTextTwo\"\n })}\n

\n
\n
\n \n \n {intl\n .formatMessage({\n id: \"ActiveOrder.OrderPickedUp.CallSupport\",\n defaultMessage: \"Call support\",\n description: \"call support button\"\n })\n .toUpperCase()}\n \n \n \n );\n};\n\nexport default OrderComplete;\n","import React from \"react\";\nimport { Button } from \"@assistansbolaget/gat-components\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faUserHeadset } from \"@fortawesome/pro-light-svg-icons\";\nimport { useIntl } from \"react-intl\";\nimport history from \"../../history\";\nimport CardBoxContainer from \"../../components/CardBoxContainer/CardBoxContainer\";\nimport { CREATE_ORDER_PATH } from \"../../constants/routeConstants\";\nimport logout from \"../../helpers/clearSessionStore\";\n\nconst OrderCanceled = () => {\n const intl = useIntl();\n const handleOnClick = () => {\n logout();\n history.push(CREATE_ORDER_PATH);\n };\n return (\n <>\n \n \n {intl.formatMessage({\n id: \"SeekingResponder.Title\",\n defaultMessage: \"We will assist you!\",\n description: \"Title for Seeking responder view\"\n })}\n \n <>\n

\n {intl.formatMessage({\n id: \"SeekingResponder.BreadText\",\n defaultMessage:\n \"We will get in touch with you shortly. You mission will be handled by our dispatch\",\n description: \"Bread text for Seeking Responder\"\n })}\n

\n \n \n {intl.formatMessage({\n id: \"SeekingResponder.HighLightText\",\n defaultMessage:\n \"Please wait, we will call you within minutes on the provided phone number\",\n description: \"High lighted text in Seeking Responder modal\"\n })}\n \n \n
\n handleOnClick()}\n >\n {intl\n .formatMessage({\n id: \"ErrorModal.ButtonText\",\n defaultMessage: \"to homepage\",\n description: \"homepage button\"\n })\n .toUpperCase()}\n \n \n );\n};\n\nexport default OrderCanceled;\n","import React, { useEffect } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { injectIntl } from \"react-intl\";\nimport { useSessionStorage } from \"usehooks-ts\";\nimport actions from \"./actions\";\nimport selectors from \"./selectors\";\nimport {\n CANCELLED,\n DRIVER_AT_SOURCE,\n DRIVER_PREPARE_DRIVE_TO_DESTINATION,\n DRIVER_DRIVING_TO_DESTINATION,\n FINISHED,\n DRIVER_DRIVING_TO_SOURCE,\n DRIVER_AT_DESTINATION,\n DEBRIEFED,\n REVIEW_MISSION_SUMMARY\n} from \"../../constants/orderStatusConstants\";\nimport OrderOnWay from \"./orderOnWay\";\nimport OrderPickedUp from \"./orderPickedUp\";\nimport OrderArrived from \"./orderArrived\";\nimport OrderComplete from \"./orderComplete\";\nimport Modal from \"../../components/Modal/Modal\";\nimport welcomeScreenSelectors from \"../welcomeScreen/selectors\";\nimport history from \"../../history\";\nimport createOrderActions from \"../createOrder/actions\";\nimport \"./style.css\";\nimport { CREATE_ORDER_PATH } from \"../../constants/routeConstants\";\nimport { SESSION_KEYS } from \"../../helpers/sessionStore\";\nimport OrderCanceled from \"./orderCanceled\";\nimport logout from \"../../helpers/clearSessionStore\";\n\nconst { toggleUnexpectedErrorModal } = createOrderActions;\n\nconst { getCustomerCoordinates } = welcomeScreenSelectors;\n\nconst {\n getCancelModalState,\n getStartedOrderModalState,\n getTowCancelModalState,\n getUnexpectedErrorModalState,\n getOrder\n} = selectors;\nconst {\n openCancelModal,\n closeCancelModal,\n cancelOrder,\n toggleStartedModal,\n cancelEstimatedArrivalTimePoller,\n getEstimatedArrivalTime,\n fetchTowtruckPosition,\n cancelFetchTowtruckPosition,\n getMission\n} = actions;\n\nfunction ActiveOrder({\n order,\n openModal,\n closeModal,\n closeStartedOrderModal,\n startedOrderModalState,\n towCancelModalState,\n closeUnexpectedErrorModal,\n unexpectedErrorModalState,\n getETA,\n getTowTruckPosition,\n cancelETAPoller,\n cancelTowTruckPosition,\n intl\n}) {\n const [companyAttributes] = useSessionStorage(\n SESSION_KEYS.companyAttributes,\n undefined\n );\n\n // eslint-disable-next-line consistent-return\n useEffect(() => {\n getETA();\n getTowTruckPosition();\n return () => {\n cancelETAPoller();\n cancelTowTruckPosition();\n };\n }, []);\n\n const destinationAddress = `${order?.sourceToDestination?.address}, ${order?.sourceToDestination?.city} ${order?.sourceToDestination?.zipCode}`;\n\n const providerAtScene =\n order.state === DRIVER_AT_SOURCE ||\n order.state === DRIVER_PREPARE_DRIVE_TO_DESTINATION;\n const providerOnWay =\n order.state === DRIVER_DRIVING_TO_DESTINATION ||\n order.state === DRIVER_AT_DESTINATION;\n\n const isMissionDebriefed = order.state === DEBRIEFED;\n const missionOutcomeIsCancelled = order.missionOutcome === \"Cancelled\";\n\n const orderIsFinishedOrDebriefed =\n order.state === FINISHED ||\n order.state === REVIEW_MISSION_SUMMARY ||\n (isMissionDebriefed && !missionOutcomeIsCancelled);\n\n const missionIsCancelled =\n order.state === CANCELLED ||\n (isMissionDebriefed && missionOutcomeIsCancelled);\n\n const companyName = companyAttributes?.CompanyName?.value;\n return (\n <>\n <>\n {startedOrderModalState && (\n \n )}\n {towCancelModalState && (\n \n )}\n {unexpectedErrorModalState && (\n \n )}\n {order && (\n
\n {order.state === DRIVER_DRIVING_TO_SOURCE && (\n \n )}\n {providerAtScene && (\n \n )}\n {providerOnWay && (\n \n )}\n {missionIsCancelled && }\n {orderIsFinishedOrDebriefed && }\n
\n )}\n \n \n );\n}\n\nActiveOrder.propTypes = {\n order: PropTypes.shape({\n state: PropTypes.string,\n token: PropTypes.string,\n accessToken: PropTypes.string,\n driverDirection: PropTypes.number,\n driverFirstName: PropTypes.string,\n driverLastName: PropTypes.string,\n driverLatitude: PropTypes.number,\n driverLongitude: PropTypes.number,\n missionOutcome: PropTypes.string,\n driverRegistrationNumber: PropTypes.string,\n driverToSource: PropTypes.shape({\n address: PropTypes.string,\n city: PropTypes.string,\n drivingArrivalAt: PropTypes.string,\n drivingDistance: PropTypes.number,\n drivingTime: PropTypes.number,\n estimatedArrivalAt: PropTypes.string,\n latitude: PropTypes.number,\n longitude: PropTypes.number,\n name: PropTypes.string,\n zipCode: PropTypes.string\n }),\n id: PropTypes.string,\n organizationUnitId: PropTypes.string,\n organizationUnitName: PropTypes.string,\n sourceToDestination: PropTypes.shape({\n address: PropTypes.string,\n city: PropTypes.string,\n drivingArrivalAt: PropTypes.string,\n drivingDistance: PropTypes.number,\n drivingTime: PropTypes.number,\n estimatedArrivalAt: PropTypes.string,\n latitude: PropTypes.number,\n longitude: PropTypes.number,\n name: PropTypes.string,\n zipCode: PropTypes.string\n })\n }).isRequired,\n openModal: PropTypes.func.isRequired,\n closeModal: PropTypes.func.isRequired,\n closeStartedOrderModal: PropTypes.func.isRequired,\n startedOrderModalState: PropTypes.bool.isRequired,\n towCancelModalState: PropTypes.bool.isRequired,\n closeUnexpectedErrorModal: PropTypes.func.isRequired,\n unexpectedErrorModalState: PropTypes.bool.isRequired,\n getETA: PropTypes.func.isRequired,\n getTowTruckPosition: PropTypes.func.isRequired,\n fetchGatOrder: PropTypes.func.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired,\n cancelETAPoller: PropTypes.func.isRequired,\n cancelTowTruckPosition: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n coordinates: getCustomerCoordinates(state),\n cancelModalState: getCancelModalState(state),\n towCancelModalState: getTowCancelModalState(state),\n startedOrderModalState: getStartedOrderModalState(state),\n unexpectedErrorModalState: getUnexpectedErrorModalState(state),\n order: getOrder(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n openModal: () => dispatch(openCancelModal()),\n closeModal: () => dispatch(closeCancelModal()),\n cancelOrderAction: () => {\n dispatch(cancelOrder());\n dispatch(closeCancelModal());\n },\n closeStartedOrderModal: () => dispatch(toggleStartedModal(false)),\n closeUnexpectedErrorModal: () => {\n logout();\n dispatch(toggleUnexpectedErrorModal(false));\n history.push(CREATE_ORDER_PATH);\n },\n cancelETAPoller: () => dispatch(cancelEstimatedArrivalTimePoller()),\n getETA: () => dispatch(getEstimatedArrivalTime()),\n getTowTruckPosition: () => dispatch(fetchTowtruckPosition()),\n cancelTowTruckPosition: () => dispatch(cancelFetchTowtruckPosition()),\n fetchGatOrder: token => dispatch(getMission(token))\n});\n\nexport default injectIntl(\n connect(mapStateToProps, mapDispatchToProps)(ActiveOrder)\n);\n","import { fromJS } from \"immutable\";\nimport moment from \"moment\";\nimport * as constants from \"./constants\";\nimport { TOGGLE_UNEXPECTED_ERROR_MODAL } from \"../createOrder/constants\";\n\nconst initialState = fromJS({\n order: {},\n cancelModalOpen: false,\n startedOrderModal: false,\n towCancelModalOpen: false,\n estimatedArrivalTimeInSeconds: null,\n estimatedArrivalTime: {},\n unexpectedErrorModalState: false,\n preventResumeOrder: false\n});\n\nconst reducer = (state = initialState, action) => {\n let newState = state;\n switch (action.type) {\n case constants.CANCEL_ORDER_SUCCESS:\n newState = newState.set(\"cancelModalOpen\", false);\n return newState;\n case constants.OPEN_CANCEL_ORDER_MODAL:\n newState = newState.set(\"cancelModalOpen\", true);\n return newState;\n case constants.CLOSE_CANCEL_ORDER_MODAL:\n newState = newState.set(\"cancelModalOpen\", false);\n newState = newState.set(\"towCancelModalOpen\", false);\n return newState;\n case constants.SET_ORDER_STATUS:\n newState = newState.set(\"order\", action.payload);\n return newState;\n case constants.TOGGLE_STARTED_ORDER_MODAL:\n newState = newState.set(\"startedOrderModal\", action.payload);\n return newState;\n case constants.TOW_TRUCK_CANCELLED:\n newState = newState.set(\"towCancelModalOpen\", true);\n return newState;\n case constants.GET_ESTIMATED_ARRIVAL_TIME_SUCCESS: {\n const eta = action.payload;\n const now = moment();\n const etaLocal = moment.utc(eta).local();\n const etaHours = etaLocal.diff(now, \"hours\");\n const etaMinutes = etaLocal.diff(now, \"minutes\");\n let timeText = \"\";\n\n if (etaMinutes > 0) {\n timeText =\n etaHours > 0\n ? `${etaHours} h ${etaMinutes % 60} min`\n : `${etaMinutes} min`;\n } else {\n timeText = \"0 min\";\n }\n\n const updatedAtLocal = moment.utc(eta).local();\n const updatedAtDiff = now.diff(updatedAtLocal, \"minutes\");\n const outdatedEta = updatedAtDiff >= 5;\n\n newState = newState.set(\"estimatedArrivalTime\", {\n timeSeconds: etaMinutes * 60,\n timeText,\n outdatedEta\n });\n return newState;\n }\n case TOGGLE_UNEXPECTED_ERROR_MODAL:\n if (action.payload === true) {\n newState = newState.set(\"preventResumeOrder\", true);\n }\n newState = newState.set(\"unexpectedErrorModalState\", action.payload);\n return newState;\n case constants.GET_MISSION_BY_TOKEN_SUCCESS:\n newState = newState.set(\"order\", action.mission);\n return newState;\n case constants.GET_MISSION_BY_TOKEN_FAILURE:\n newState = newState.set(\"unexpectedErrorModalState\", true);\n return newState;\n default:\n return newState;\n }\n};\n\nexport default { reducer };\n","import {\n all,\n call,\n delay,\n put,\n race,\n select,\n take,\n takeLatest\n} from \"redux-saga/effects\";\nimport {\n CANCELLED,\n DEBRIEFED,\n DRIVER_AT_DESTINATION,\n DRIVER_AT_SOURCE,\n DRIVER_DRIVING_TO_DESTINATION,\n DRIVER_DRIVING_TO_SOURCE,\n DRIVER_PREPARE_DRIVE_TO_DESTINATION,\n FINISHED,\n MISSION_CREATED,\n MISSION_NOT_STARTED,\n REVIEW_MISSION_SUMMARY,\n WAITING_FOR_CUSTOMER_ACCEPT,\n WAITING_FOR_DRIVER_ACCEPT\n} from \"../../constants/orderStatusConstants\";\nimport {\n ACTIVE_ORDER_PATH,\n CREATE_ORDER_PATH,\n SUMMARY_PATH\n} from \"../../constants/routeConstants\";\nimport {\n getSession,\n SESSION_KEYS,\n setSession\n} from \"../../helpers/sessionStore\";\nimport history from \"../../history\";\nimport createOrderActions from \"../createOrder/actions\";\nimport {\n CONFIRM_ORDER_VIEW,\n CUSTOMER_DETAILS_VIEW\n} from \"../createOrder/viewConstants\";\nimport toggleLoading from \"../loading/actions\";\nimport welcomeScreenActions from \"../welcomeScreen/actions\";\nimport actions from \"./actions\";\nimport {\n CANCEL_ESTIMATED_ARRIVAL_TIME_POLLER,\n CANCEL_FETCH_TOWTRUCK_POSITION,\n FETCH_TOWTRUCK_POSITION,\n FIND_CURRENT_VIEW,\n GET_ESTIMATED_ARRIVAL_TIME,\n GET_MISSION_BY_TOKEN,\n START_CANCEL_ORDER\n} from \"./constants\";\nimport selectors from \"./selectors\";\nimport service from \"./service\";\n\nconst {\n setOrderStatus,\n getEstimatedArrivalTimeSuccess,\n cancelFetchTowtruckPosition,\n towTruckCancelled,\n setTowTruckLocation,\n getMissionSuccess,\n getMissionFailure\n} = actions;\n\nconst { getOrder } = selectors;\nconst { cancelOrder, getOrderById, getMissionNow } = service;\n\nconst { setVehicleLocation } = welcomeScreenActions;\nconst {\n setCurrentView,\n toggleUnexpectedErrorModal,\n setShopLocation\n} = createOrderActions;\n\nconst ONGOING_STATUSES = [\n DRIVER_DRIVING_TO_SOURCE,\n DRIVER_DRIVING_TO_DESTINATION,\n DRIVER_PREPARE_DRIVE_TO_DESTINATION,\n DRIVER_AT_DESTINATION,\n DRIVER_AT_SOURCE\n];\n\nfunction* fetchGatMission() {\n const urlParams = new URLSearchParams(window.location.search);\n let token = urlParams.get(\"token\");\n if (!token) {\n token = getSession(SESSION_KEYS.token);\n }\n try {\n const data = yield call(getMissionNow, token);\n if (data.statusCode < 299) {\n yield put(getMissionSuccess(data.data));\n return;\n }\n if (data.statusCode > 299) {\n yield put(getMissionFailure(data));\n }\n } catch (error) {\n yield call(getMissionFailure);\n }\n}\n\nfunction* getEstimatedArrivalTimeWorker() {\n while (1) {\n const order = yield select(getOrder);\n if (\n order.state === CANCELLED ||\n order.state === FINISHED ||\n order.state === DEBRIEFED\n ) {\n return;\n }\n let response = \"\";\n const { state, driverToSource, sourceToDestination } = order;\n if (state === DRIVER_DRIVING_TO_SOURCE) {\n const { estimatedArrivalAt, drivingArrivalAt } = driverToSource;\n response = estimatedArrivalAt || drivingArrivalAt;\n }\n if (state === DRIVER_DRIVING_TO_DESTINATION) {\n const { estimatedArrivalAt, drivingArrivalAt } = sourceToDestination;\n response = estimatedArrivalAt || drivingArrivalAt;\n }\n yield put(getEstimatedArrivalTimeSuccess(response));\n yield delay(2000);\n\n // check if order is cancelled after each iteration\n const newOrder = yield select(getOrder);\n if (\n newOrder.state === CANCELLED ||\n newOrder.state === FINISHED ||\n order.state === DEBRIEFED\n ) {\n break;\n }\n }\n}\n\n/* - TODO - Fixa cancel mot 2.0 */\nfunction* cancelOrderWorker() {\n try {\n const order = yield select(getOrder);\n yield put(toggleLoading(true));\n yield call(cancelOrder, order.id);\n const { data } = yield call(getOrderById, order.id);\n yield all([\n put(cancelFetchTowtruckPosition()),\n put(setOrderStatus(data)),\n put(setCurrentView(CUSTOMER_DETAILS_VIEW)),\n put(toggleLoading(false))\n ]);\n } catch (error) {\n yield put(toggleLoading(false));\n yield put(toggleUnexpectedErrorModal(true));\n }\n}\n\nfunction* findCurrentViewWorker() {\n const urlParams = new URLSearchParams(window.location.search);\n try {\n let token = urlParams.get(\"token\");\n if (!token) {\n token = getSession(SESSION_KEYS.token);\n }\n if (!token) {\n return;\n }\n const data = yield call(getMissionNow, token);\n const { id, accessToken } = data.data;\n setSession(SESSION_KEYS.missionId, id);\n setSession(SESSION_KEYS.token, token);\n setSession(SESSION_KEYS.accessToken, accessToken);\n if (data.statusCode < 299) {\n yield put(getMissionSuccess(data.data));\n const { state, missionOutcome, driverToSource } = data.data;\n const { latitude, longitude, address } = driverToSource;\n // eslint-disable-next-line default-case\n switch (state) {\n case MISSION_CREATED:\n yield put(\n setVehicleLocation({ address, lat: latitude, lng: longitude })\n );\n yield put(setCurrentView(CUSTOMER_DETAILS_VIEW));\n history.push(`${CREATE_ORDER_PATH}`);\n break;\n case MISSION_NOT_STARTED:\n yield put(\n setVehicleLocation({ address, lat: latitude, lng: longitude })\n );\n yield put(setCurrentView(CONFIRM_ORDER_VIEW));\n history.push(`${CREATE_ORDER_PATH}`);\n break;\n case WAITING_FOR_DRIVER_ACCEPT:\n case WAITING_FOR_CUSTOMER_ACCEPT:\n yield put(setCurrentView(CONFIRM_ORDER_VIEW));\n history.push(`${CREATE_ORDER_PATH}?id=${id}`);\n break;\n case DRIVER_DRIVING_TO_SOURCE:\n case DRIVER_DRIVING_TO_DESTINATION:\n case DRIVER_PREPARE_DRIVE_TO_DESTINATION:\n case DRIVER_AT_DESTINATION:\n case DRIVER_AT_SOURCE:\n case CANCELLED:\n history.push(`${ACTIVE_ORDER_PATH}`);\n break;\n case FINISHED:\n case REVIEW_MISSION_SUMMARY:\n history.push(`${SUMMARY_PATH}?token=${token}`);\n break;\n case DEBRIEFED:\n if (missionOutcome === \"Cancelled\") {\n history.push(`${ACTIVE_ORDER_PATH}`);\n } else {\n history.push(`${SUMMARY_PATH}?token=${token}`);\n }\n }\n return;\n }\n if (data.statusCode > 299) {\n yield put(getMissionFailure(data));\n }\n } catch (error) {\n yield call(getMissionFailure);\n }\n}\n\nfunction* towtruckPositionWorker() {\n while (1) {\n try {\n yield call(fetchGatMission);\n const data = yield select(getOrder);\n const towtruckPosition = {\n latitude: data.driverLatitude,\n longitude: data.driverLongitude\n };\n const shopPosition = {\n latitude: data.sourceToDestination?.latitude,\n longitude: data.sourceToDestination?.longitude\n };\n const vehiclePosition = {\n lat: data.driverToSource?.latitude,\n lng: data.driverToSource?.longitude\n };\n yield all([\n put(setShopLocation(shopPosition)),\n put(setTowTruckLocation(towtruckPosition)),\n put(setVehicleLocation(vehiclePosition)),\n put(setOrderStatus(data))\n ]);\n\n if (ONGOING_STATUSES.includes(data.state)) {\n yield delay(2000);\n } else if (data.state === CANCELLED) {\n yield put(cancelFetchTowtruckPosition());\n yield put(towTruckCancelled());\n } else {\n yield put(cancelFetchTowtruckPosition());\n }\n } catch (error) {\n if (process.env.NODE_ENV === \"development\")\n yield put(toggleUnexpectedErrorModal(true));\n }\n }\n}\n\nfunction* findCurrentViewWatcher() {\n yield takeLatest(FIND_CURRENT_VIEW, findCurrentViewWorker);\n}\n\nfunction* cancelOrderWatcher() {\n yield takeLatest(START_CANCEL_ORDER, cancelOrderWorker);\n}\n\nfunction* towTruckPositionWatcher() {\n while (1) {\n yield take(FETCH_TOWTRUCK_POSITION);\n yield race([\n call(towtruckPositionWorker),\n take(CANCEL_FETCH_TOWTRUCK_POSITION)\n ]);\n }\n}\n\nfunction* getEstimatedArrivalTimeWatcher() {\n while (1) {\n yield take(GET_ESTIMATED_ARRIVAL_TIME);\n yield race([\n call(getEstimatedArrivalTimeWorker),\n take(CANCEL_ESTIMATED_ARRIVAL_TIME_POLLER)\n ]);\n }\n}\n\n// - TODO - Bygg om så vi kan köra denna i towTruckPositionWatcher\n\nfunction* fetchGatMissionWatcher() {\n yield takeLatest(GET_MISSION_BY_TOKEN, fetchGatMission);\n}\n\nexport default {\n findCurrentViewWatcher,\n cancelOrderWatcher,\n towTruckPositionWatcher,\n getEstimatedArrivalTimeWatcher,\n fetchGatMissionWatcher\n};\n","import {\n SAVE_MAP_TO_STATE,\n SAVE_CENTER_COORDS,\n SHOW_SPINNER,\n} from \"./constants\";\n\nconst saveMapToState = (map) => ({\n type: SAVE_MAP_TO_STATE,\n payload: map,\n});\n\nconst saveCenterCoords = (centerCoords) => ({\n type: SAVE_CENTER_COORDS,\n payload: centerCoords,\n});\n\nconst showSpinner = () => ({\n type: SHOW_SPINNER,\n});\n\nexport default {\n saveMapToState,\n saveCenterCoords,\n showSpinner,\n};\n","const getMap = ({ carPositionPicker }) => carPositionPicker.get(\"map\");\n\nconst getCenterCoords = ({ carPositionPicker }) =>\n carPositionPicker.get(\"centerCoords\");\n\nconst getSpinnerBool = ({ carPositionPicker }) =>\n carPositionPicker.get(\"isLoading\");\n\nconst getPreviousView = ({ createOrder }) =>\n createOrder.getIn([\"view\", \"previous\"]);\n\nexport default {\n getMap,\n getCenterCoords,\n getSpinnerBool,\n getPreviousView\n};\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { compose, withProps } from \"recompose\";\nimport { withScriptjs, withGoogleMap } from \"react-google-maps\";\nimport { useIntl } from \"react-intl\";\nimport { GOOGLE_MAP_URL } from \"../../constants/apiConstants\";\nimport actions from \"./actions\";\nimport selectors from \"./selectors\";\nimport createOrderActions from \"../createOrder/actions\";\nimport welcomeScreenSelectors from \"../welcomeScreen/selectors\";\nimport \"./style.css\";\nimport CarPositionPresentation from \"./carPositionPresentation\";\nimport dispatchPositionSelectors from \"../dispatchPosition/selectors\";\nimport dispatchPositionActions from \"../dispatchPosition/actions\";\nimport Modal from \"../../components/Modal/Modal\";\n\nconst {\n getCustomerCoordinates,\n getVehiclePosition,\n getIsFetchingReverseGeoCode\n} = welcomeScreenSelectors;\n\nconst {\n getLocationBlockedModalState,\n getShowDispatchMap\n} = dispatchPositionSelectors;\n\nconst { setCurrentView, getPosition } = createOrderActions;\nconst { saveMapToState, saveCenterCoords } = actions;\nconst { getMap, getCenterCoords, getPreviousView } = selectors;\n\nconst { saveCenterDestinationCoords } = dispatchPositionActions;\n\nconst CarPositionPicker = compose(\n withProps({\n googleMapURL: GOOGLE_MAP_URL,\n loadingElement:
,\n containerElement:
,\n mapElement:
\n }),\n withScriptjs,\n withGoogleMap\n)(props => {\n const intl = useIntl();\n const saveText = intl.formatMessage({\n id: \"DispatchPosition.ButtonTitle\",\n defaultMessage: \"Save\",\n description: \"DispatchPosition: Save button title\"\n });\n const {\n fetchPreviousView,\n locationBlockedModalState,\n showDispatchMap,\n requestPosition\n } = props;\n\n const windowReloadAction = () => {\n requestPosition();\n };\n\n return (\n <>\n {locationBlockedModalState && (\n \n )}\n {showDispatchMap && (\n \n )}\n \n );\n});\n\nconst mapStateToProps = state => ({\n map: getMap(state),\n geoCoordinates: getCustomerCoordinates(state),\n centerCoords: getCenterCoords(state),\n vehiclePosition: getVehiclePosition(state),\n isFetchingReverseGeoCode: getIsFetchingReverseGeoCode(state),\n fetchPreviousView: getPreviousView(state),\n locationBlockedModalState: getLocationBlockedModalState(state),\n showDispatchMap: getShowDispatchMap(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n saveMap: map => dispatch(saveMapToState(map)),\n saveCenter: centerCoords => dispatch(saveCenterCoords(centerCoords)),\n saveDestinationChange: centerCoords =>\n dispatch(saveCenterDestinationCoords(centerCoords)),\n handleNavigationButton: value => dispatch(setCurrentView(value)),\n requestPosition: () => dispatch(getPosition())\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CarPositionPicker);\n","import { fromJS } from \"immutable\";\nimport * as constants from \"./constants\";\n\nconst initialState = fromJS({\n map: null,\n centerCoords: null,\n});\n\nconst reducer = (state = initialState, action) => {\n let newState = state;\n switch (action.type) {\n case constants.SAVE_MAP_TO_STATE:\n newState = newState.set(\"map\", action.payload);\n return newState;\n case constants.SAVE_CENTER_COORDS:\n newState = newState.set(\"centerCoords\", action.payload);\n return newState;\n default:\n return newState;\n }\n};\n\nexport default { reducer };\n","export const SAVE_CENTER_COORDS = \"SAVE_CENTER_COORDS\";\nexport const SAVE_MAP_TO_STATE = \"SAVE_MAP_TO_STATE\";\nexport const SHOW_SPINNER = \"SHOW_SPINNER\";\n","export const SWEDEN_LAT_LNG = {\n lat: 60.1282,\n lng: 18.6435\n};\n\nexport const DENMARK_LAT_LNG = {\n lat: 55.455543,\n lng: 11.790273\n};\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { compose, withProps } from \"recompose\";\nimport { withScriptjs, withGoogleMap } from \"react-google-maps\";\nimport { GOOGLE_MAP_URL } from \"../../constants/apiConstants\";\nimport actions from \"./actions\";\nimport selectors from \"./selectors\";\nimport welcomeScreenSelectors from \"../welcomeScreen/selectors\";\nimport languageHelper from \"../../helpers/languageHelper\";\n\nimport \"../carPositionPicker/style.css\";\nimport CarPositionPresentation from \"../carPositionPicker/carPositionPresentation\";\n\nconst language = languageHelper();\n\nconst {\n getCustomerCoordinates,\n getVehiclePosition,\n getIsFetchingReverseGeoCode\n} = welcomeScreenSelectors;\n\nconst { saveMapToState, saveCenterCoords, updateOrderPosition } = actions;\nconst { getMap, getCenterCoords } = selectors;\n\nconst DispatchCarPositionPicker = compose(\n withProps({\n googleMapURL: GOOGLE_MAP_URL,\n loadingElement:
,\n containerElement:
,\n mapElement:
\n }),\n withScriptjs,\n withGoogleMap\n)(props => {\n const saveText = language.dispatchPosition.okButtonText;\n return ;\n});\n\nconst mapStateToProps = state => ({\n map: getMap(state),\n geoCoordinates: getCustomerCoordinates(state),\n centerCoords: getCenterCoords(state),\n vehiclePosition: getVehiclePosition(state),\n isFetchingReverseGeoCode: getIsFetchingReverseGeoCode(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n saveMap: map => dispatch(saveMapToState(map)),\n saveCenter: centerCoords => dispatch(saveCenterCoords(centerCoords)),\n handleNavigationButton: () => dispatch(updateOrderPosition())\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(DispatchCarPositionPicker);\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { injectIntl } from \"react-intl\";\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\nimport actions from \"./actions\";\nimport selectors from \"./selectors\";\nimport Modal from \"../../components/Modal/Modal\";\n\nimport DispatchCarPositionPicker from \"./dispatchCarPositionPicker\";\n\nimport \"./style.css\";\nimport { SESSION_KEYS, setSession } from \"../../helpers/sessionStore\";\n\nconst { toggleCarLocalizationErrorModal, getPosition } = actions;\n\nconst {\n getShowDispatchMap,\n getCarLocalizationErrorModalState,\n getCarLocalizationSuccessModalState,\n getLocationBlockedModalState\n} = selectors;\n\nclass DispatchPosition extends Component {\n componentDidMount() {\n const { requestPosition } = this.props;\n setSession(SESSION_KEYS.appId, process.env.REACT_APP_APPLICATION_ID);\n if (window.location.search.includes(\"token\")) {\n requestPosition();\n }\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.get(\"locale\")) {\n setSession(SESSION_KEYS.locale, urlParams.get(\"locale\"));\n }\n }\n\n render() {\n const {\n locationBlockedModalState,\n dispatchPositionErrorModalState,\n dispatchPositionSuccessModalState,\n showDispatchMap,\n requestPosition,\n intl\n } = this.props;\n\n const windowReloadAction = () => {\n requestPosition();\n };\n\n return (\n \n {locationBlockedModalState && (\n \n )}\n {dispatchPositionErrorModalState && (\n \n )}\n {dispatchPositionSuccessModalState && (\n \n )}\n
\n {showDispatchMap && }\n
\n
\n );\n }\n}\n\nDispatchPosition.propTypes = {\n requestPosition: PropTypes.func.isRequired,\n dispatchPositionErrorModalState: PropTypes.bool.isRequired,\n dispatchPositionSuccessModalState: PropTypes.bool.isRequired,\n showDispatchMap: PropTypes.bool.isRequired,\n locationBlockedModalState: PropTypes.bool.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired\n};\n\nconst mapStateToProps = state => ({\n locationBlockedModalState: getLocationBlockedModalState(state),\n dispatchPositionErrorModalState: getCarLocalizationErrorModalState(state),\n dispatchPositionSuccessModalState: getCarLocalizationSuccessModalState(state),\n showDispatchMap: getShowDispatchMap(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n closeErrorModal: () => {\n dispatch(toggleCarLocalizationErrorModal(false));\n },\n requestPosition: () => dispatch(getPosition())\n});\n\nexport default injectIntl(\n connect(mapStateToProps, mapDispatchToProps)(DispatchPosition)\n);\n","import {\n BaseUrl,\n UPDATE_MISSION_DESTINATION\n} from \"../../constants/apiConstants\";\nimport api from \"../../helpers/apiUtils\";\nimport { getSession, SESSION_KEYS } from \"../../helpers/sessionStore\";\n\nconst setDestination = body => {\n const gatOrgUnit = getSession(SESSION_KEYS.gatOrganizationUnit);\n const gatLocale = getSession(SESSION_KEYS.locale);\n const accessToken = getSession(SESSION_KEYS.accessToken);\n const missionId = getSession(SESSION_KEYS.missionId);\n const appId = getSession(SESSION_KEYS.appId);\n return api\n .post(\n `${UPDATE_MISSION_DESTINATION}`,\n BaseUrl.GatUrl,\n { missionId, ...body },\n {\n gatOrgUnit,\n gatLocale,\n accessToken,\n appId\n }\n )\n .then(res => {\n return res;\n })\n .catch(err => {\n throw err;\n });\n};\n\nexport default { setDestination };\n","export default function updateServePositionAddressHelper(components) {\n let street;\n let streetNumber;\n let route;\n let postalTown;\n let postalCode;\n let country;\n let streetAddress;\n let area;\n let formattedAddress;\n\n if (components) {\n const { addressComponents } = components;\n street = addressComponents.street || \"\";\n streetNumber = addressComponents.streetNumber || \"\";\n route = addressComponents.route || \"\";\n postalTown = addressComponents.postalTown || \"\";\n postalCode = addressComponents.postalCode || \"\";\n country = addressComponents.country || \"\";\n streetAddress = addressComponents.streetAddress || \"\";\n area = addressComponents.area || \"\";\n formattedAddress = addressComponents.formattedAddress || \"\";\n\n if (street) {\n streetAddress = streetNumber ? `${street} ${streetNumber}` : street;\n } else if (route) {\n streetAddress = streetNumber ? `${route} ${streetNumber}` : route;\n } else {\n streetAddress = \"\";\n }\n if (postalTown) {\n area = postalCode ? `${postalCode} ${postalTown}` : postalTown;\n } else if (postalCode) {\n area = postalCode;\n } else {\n area = \"\";\n }\n\n if (streetAddress) {\n formattedAddress = area ? `${streetAddress}, ${area}` : streetAddress;\n } else if (area) {\n formattedAddress = streetAddress ? `${streetAddress}, ${area}` : area;\n }\n if (country) {\n if (area) {\n area += `, ${country}`;\n }\n if (formattedAddress) {\n formattedAddress += `, ${country}`;\n }\n }\n\n return {\n street: street || \"\",\n streetNumber: streetNumber || \"\",\n route: route || \"\",\n postalTown: postalTown || \"\",\n postalCode: postalCode || \"\",\n country: country || \"\",\n streetAddress,\n area,\n formattedAddress: formattedAddress || \"\"\n };\n }\n return null;\n}\n","import { all, call, put, select, takeLatest } from \"redux-saga/effects\";\nimport {\n GET_POSITION_DISPATCH,\n SAVE_DESTINATION_CHANGER,\n SAVE_DISPATCH_CENTER_COORDS,\n UPDATE_ORDER_POSITION\n} from \"./constants\";\nimport { service as createOrderService } from \"../createOrder\";\nimport welcomeScreenActions from \"../welcomeScreen/actions\";\nimport selectors from \"./selectors\";\nimport toggleLoading from \"../loading/actions\";\nimport actions from \"./actions\";\nimport creatOrderActions from \"../createOrder/actions\";\nimport welcomeScreenSelectors from \"../welcomeScreen/selectors\";\nimport service from \"./service\";\nimport updateServePositionAddressHelper from \"../../helpers/updatePostionToServeComponentsHelper\";\n\nconst {\n toggleCarLocalizationErrorModal,\n toggleDispatchPositionSuccessModal,\n showDispatchMap,\n toggleLocationBlockedModal\n} = actions;\nconst {\n setVehicleLocation,\n fetchingReverseGeocode,\n setPositionToServe\n} = welcomeScreenActions;\nconst { getVehiclePosition, getServeVehiclePosition } = welcomeScreenSelectors;\nconst { getPositionSuccess } = creatOrderActions;\n\nconst { getSearchPlacesResult } = selectors;\n\nconst { setDestination } = service;\n\nconst {\n getLocation,\n reverseGeoCode,\n updateCustomerPosition\n} = createOrderService;\n\nfunction* getPositionWorker() {\n try {\n yield put(toggleLoading(true));\n const position = yield call(getLocation);\n yield put(toggleLocationBlockedModal(false));\n if (position) {\n yield all([\n put(\n getPositionSuccess({\n latitude: position.coords.latitude,\n longitude: position.coords.longitude,\n accuracy: position.coords.accuracy\n })\n ),\n put(showDispatchMap(true)),\n put(toggleLoading(false))\n ]);\n }\n } catch (error) {\n yield all([\n put(toggleLocationBlockedModal(true)),\n put(toggleLoading(false))\n ]);\n }\n}\n\nfunction* saveVehicleAddressWorker(action) {\n try {\n if (action.payload) {\n const searchPlacesResult = yield select(getSearchPlacesResult);\n if (\n searchPlacesResult &&\n Number.parseFloat(searchPlacesResult.lat).toFixed(4) ===\n Number.parseFloat(action.payload.lat).toFixed(4) &&\n Number.parseFloat(searchPlacesResult.lng).toFixed(4) ===\n Number.parseFloat(action.payload.lng).toFixed(4)\n ) {\n const serveAddress = updateServePositionAddressHelper(\n searchPlacesResult\n );\n yield put(setVehicleLocation(searchPlacesResult));\n yield put(\n setPositionToServe({\n lat: searchPlacesResult.lat,\n lng: searchPlacesResult.lng,\n address: serveAddress.streetAddress,\n city: serveAddress.postalTown,\n zipCode: serveAddress.postalCode\n })\n );\n } else {\n yield put(fetchingReverseGeocode(true));\n const res = yield call(reverseGeoCode, action.payload);\n yield put(fetchingReverseGeocode(false));\n if (res) {\n yield put(\n setVehicleLocation({\n lat: action.payload.lat,\n lng: action.payload.lng,\n address: res.address || res.formatted_address,\n city: res.town,\n zipCode: res.zipcode\n })\n );\n yield put(\n setPositionToServe({\n lat: action.payload.lat,\n lng: action.payload.lng,\n address: res.address || res.formatted_address,\n city: res.town,\n zipCode: res.zipcode\n })\n );\n }\n }\n }\n } catch (error) {\n yield put(toggleCarLocalizationErrorModal(true));\n }\n}\n\nfunction* saveDestinationChangerWorker(action) {\n try {\n if (action.payload) {\n const searchPlacesResult = yield select(getSearchPlacesResult);\n if (\n searchPlacesResult &&\n Number.parseFloat(searchPlacesResult.lat).toFixed(4) ===\n Number.parseFloat(action.payload.lat).toFixed(4) &&\n Number.parseFloat(searchPlacesResult.lng).toFixed(4) ===\n Number.parseFloat(action.payload.lng).toFixed(4)\n ) {\n const body = {\n latitude: searchPlacesResult.lat,\n longitude: searchPlacesResult.lng,\n address: searchPlacesResult.address,\n zipCode: searchPlacesResult.zipCode,\n city: searchPlacesResult.city,\n name: searchPlacesResult.address\n };\n yield call(setDestination, body);\n } else {\n yield put(fetchingReverseGeocode(true));\n const res = yield call(reverseGeoCode, action.payload);\n yield put(fetchingReverseGeocode(false));\n if (res) {\n const body = {\n latitude: action.payload.lat,\n longitude: action.payload.lng,\n address: res?.address || res?.formatted_address || \"\",\n zipCode: res.zipcode || \"\",\n city: res.city || res.town || \"\"\n };\n yield call(setDestination, body);\n }\n }\n }\n } catch (error) {\n yield put(toggleCarLocalizationErrorModal(true));\n }\n}\n\n// eslint-disable-next-line consistent-return\nfunction* updateOrderWorker() {\n try {\n const urlParams = new URLSearchParams(window.location.search);\n const token = urlParams.get(\"token\");\n if (!token) {\n throw Error(\"UpdateOrderWorker error: Missing orderNo\");\n }\n const positionToServe = yield select(getServeVehiclePosition);\n const vehiclePosition = yield select(getVehiclePosition);\n const vehicleFullAddress = vehiclePosition.address;\n if (!vehicleFullAddress) {\n throw Error(\"UpdateOrderWorker error: Missing vehicleAddress\");\n }\n if (!vehiclePosition || !vehiclePosition.lat) {\n throw Error(\"UpdateOrderWorker error: Missing vehiclePosition values\");\n }\n yield put(toggleLoading(true));\n const response = yield call(updateCustomerPosition, {\n token,\n positionToServe\n });\n if (response > 299) {\n return yield all([\n put(toggleLoading(false)),\n put(toggleCarLocalizationErrorModal(true))\n ]);\n }\n return yield all([\n put(toggleLoading(false)),\n put(toggleDispatchPositionSuccessModal(true))\n ]);\n } catch (error) {\n yield all([\n put(toggleLoading(false)),\n put(toggleCarLocalizationErrorModal(true))\n ]);\n }\n}\n\nfunction* getPositionWatcher() {\n yield takeLatest(GET_POSITION_DISPATCH, getPositionWorker);\n}\nfunction* saveCenterCoordsWatcher() {\n yield takeLatest(SAVE_DISPATCH_CENTER_COORDS, saveVehicleAddressWorker);\n}\nfunction* updateOrderPositionWatcher() {\n yield takeLatest(UPDATE_ORDER_POSITION, updateOrderWorker);\n}\n\nfunction* saveDestinationChangerWatcher() {\n yield takeLatest(SAVE_DESTINATION_CHANGER, saveDestinationChangerWorker);\n}\n\nexport default {\n getPositionWatcher,\n saveCenterCoordsWatcher,\n updateOrderPositionWatcher,\n saveDestinationChangerWatcher\n};\n","import { fromJS } from \"immutable\";\nimport * as constants from \"./constants\";\n\nconst initialState = fromJS({\n showDispatchMap: false,\n map: null,\n centerCoords: null,\n carLocalizationErrorModalState: false,\n carLocalizationSuccessModalState: false,\n locationBlockedModalState: false,\n});\n\nconst reducer = (state = initialState, action) => {\n let newState = state;\n switch (action.type) {\n case constants.SHOW_DISPATCH_MAP:\n newState = newState.set(\"showDispatchMap\", action.payload);\n return newState;\n case constants.SAVE_DISPATCH_MAP_TO_STATE:\n newState = newState.set(\"map\", action.payload);\n return newState;\n case constants.SAVE_DISPATCH_CENTER_COORDS:\n newState = newState.set(\"centerCoords\", action.payload);\n return newState;\n case constants.TOGGLE_DISPATCH_POSITION_ERROR_MODAL:\n newState = newState.set(\"carLocalizationErrorModalState\", action.payload);\n return newState;\n case constants.TOGGLE_DISPATCH_POSITION_SUCCESS_MODAL:\n newState = newState.set(\n \"carLocalizationSuccessModalState\",\n action.payload\n );\n return newState;\n case constants.SET_SEARCH_PLACES_RESULT:\n newState = newState.set(\"searchPlacesResult\", action.payload);\n return newState;\n case constants.TOGGLE_LOCATION_BLOCKED_MODAL:\n newState = newState.set(\"locationBlockedModalState\", action.payload);\n return newState;\n default:\n return newState;\n }\n};\n\nexport default { reducer };\n","export const GET = \"GET\";\nexport const POST = \"POST\";\n\nexport const BaseUrl = {\n GatUrl: \"GatUrl\",\n RescueUrl: \"RescueUrl\"\n};\n\nexport const USER_LOGIN = \"user/login\";\n\nexport const GAT_DEV = \"https://gat.dev.assi.nu/\";\nexport const GAT_STG = \"https://gat.stg.assi.nu/\";\nexport const GAT_PROD = \"https://api.smashtechsoftware.com/\";\n\nexport const DEV_RESQUE = \"https://testssl.assistansbolaget.nu/api/\";\nexport const STAGING_RESQUE =\n \"https://resque-backend-test.assistansbolaget.nu/api/\";\nexport const PROD_RESQUE =\n \"https://prod-rescue-backend.assistansbolaget.nu/api/\";\n\nexport const AB_DEV = \"https://api.test-cluster.assistansbolaget.nu/\";\nexport const AB_STAGING = \"https://testssl.assistansbolaget.nu/api/\";\nexport const AB_PROD = \"https://api-cluster.assistansbolaget.nu/\";\n\nexport const SET_SOURCE_LOCATION = \"v1/missions,set-source-location-by-token\";\n\nexport const GET_JWT_TOKEN = \"v1/missions,create-by-customer\";\n\nexport const GET_DAMAGE_REASONS = \"v1/mission-reason-groups,with-reasons\";\n\nexport const IS_CONFINED_SPACE =\n \"v1/attributes,paging?filters=key=IsConfinedSpace\";\n\nexport const SELF_SERVE = \"v1/missions,self-serve\";\n\nexport const GET_PAYMENT_OPTIONS = \"v1/payment-options?missionId\";\n\nexport const GET_MISSION = \"v1/missions,by-token\";\n\nexport const GET_MISSIONS_BY_ID = \"v1/missions/\";\n\nexport const UPDATE_MISSION_DESTINATION =\n \"v1/missions,set-destination-location\";\n\nexport const FIND_DRIVER = \"v1/missions,find-driver\";\n\nexport const CUSTOMER_ACCEPT_MISSION = \"v1/missions,customer-accept\";\n\nexport const EDIT_MISSION_REQUEST = \"v1/missions,edit\";\n\nexport const CLEAR_DESTINATION_CHANGE =\n \"v1/missions,clear-destination-location\";\n\nexport const POST_REVIEW = \"v1/missions,create-mission-review-by-token\";\n\n// To fetch old missions\nexport const USER_ASSISTANCE_ORDER = \"user/assistance/order\";\n\nexport const GET_VEHICLE_INSURANCE_LEVELS =\n \"v1/vehicle-insurance-levels,in-hierarchy\";\n\n/* WIP TODO - Save to future imlementation */\nexport const CANCEL_MISSION = \"v1/missions,cancel\";\n\n/* TODO - Fix google maps key to env variable */\nexport const GOOGLE_MAP_URL =\n \"https://maps.googleapis.com/maps/api/js?libraries=places,geometry,drawing&key=AIzaSyCM3Er5wltGE45H78BW1z__41onnf_xl-0&language=sv\";\n","import {\n SET_RATING,\n SET_DISPLAY_VALUE,\n RECEIPT_SUBMITTED,\n TOGGLE_SUMMARY_FAILURE_MODAL,\n TOGGLE_SUMMARY_SUCCESS_MODAL,\n TOGGLE_RECEIPT_FAILURE_MODAL,\n LEGACY_SUMMARY_SUBMITTED\n} from \"../constants\";\n\nconst setRating = starsSelected => ({\n type: SET_RATING,\n starsSelected\n});\n\nconst setDisplayValue = value => ({\n type: SET_DISPLAY_VALUE,\n value\n});\n\nconst legacySubmitSummaryForm = () => ({\n type: LEGACY_SUMMARY_SUBMITTED\n});\n\nconst submitReceiptForm = () => ({\n type: RECEIPT_SUBMITTED\n});\n\nconst toggleSummarySuccessModal = bool => ({\n type: TOGGLE_SUMMARY_SUCCESS_MODAL,\n payload: bool\n});\n\nconst toggleSummaryFailureModal = bool => ({\n type: TOGGLE_SUMMARY_FAILURE_MODAL,\n payload: bool\n});\n\nconst toggleReceiptFailureModal = bool => ({\n type: TOGGLE_RECEIPT_FAILURE_MODAL,\n payload: bool\n});\n\nexport default {\n setRating,\n setDisplayValue,\n legacySubmitSummaryForm,\n toggleSummarySuccessModal,\n toggleSummaryFailureModal,\n submitReceiptForm,\n toggleReceiptFailureModal\n};\n","import { BaseUrl, POST_REVIEW, USER_LOGIN } from \"../../constants/apiConstants\";\nimport api from \"../../helpers/apiUtils\";\nimport { getSession, SESSION_KEYS } from \"../../helpers/sessionStore\";\nimport legacyApi from \"../../helpers/legacyApiHelper\";\n\nconst postReview = body => {\n const gatOrgUnit = getSession(SESSION_KEYS.gatOrganizationUnit);\n const gatLocale = getSession(SESSION_KEYS.locale);\n const appId = getSession(SESSION_KEYS.appId);\n return api\n .post(`${POST_REVIEW}`, BaseUrl.GatUrl, body, {\n gatOrgUnit,\n gatLocale,\n appId\n })\n .then(res => {\n return res;\n })\n .catch(err => {\n throw err;\n });\n};\n\nconst fetchToken = body => {\n return legacyApi\n .post(`${USER_LOGIN}`, BaseUrl.RescueUrl, {\n mobile: body.mobile,\n regno: body.regno\n })\n .then(res => {\n return res.data.access_token;\n })\n .catch(err => {\n throw err;\n });\n};\n\nexport default { postReview, fetchToken };\n","import {\n AB_DEV,\n AB_PROD,\n AB_STAGING,\n BaseUrl,\n DEV_RESQUE,\n PROD_RESQUE,\n STAGING_RESQUE\n} from \"../constants/apiConstants\";\n\nasync function tryParseResponse(response) {\n try {\n const json = await response.json();\n return {\n statusCode: response.status,\n data: json\n };\n } catch (error) {\n throw new Error(error);\n }\n}\n\nexport function legacyGetBaseUrl(base) {\n if (process.env.REACT_APP_ENV === \"PRODUCTION\") {\n if (base === BaseUrl.RescueUrl) return PROD_RESQUE;\n return AB_PROD;\n }\n if (process.env.REACT_APP_ENV === \"STAGING\") {\n if (base === BaseUrl.RescueUrl) return STAGING_RESQUE;\n return AB_STAGING;\n }\n if (base === BaseUrl.RescueUrl) return DEV_RESQUE;\n return AB_DEV;\n}\n\nasync function post(url, base, body, token) {\n const response = await fetch(`${legacyGetBaseUrl(base)}${url}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`\n },\n body: JSON.stringify(body)\n });\n return tryParseResponse(response);\n}\n\nasync function get(url, base, token) {\n const response = await fetch(`${legacyGetBaseUrl(base)}${url}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`\n }\n });\n return tryParseResponse(response);\n}\n\nconst legacyApi = {\n post,\n get\n};\n\nexport default legacyApi;\n","import {\n SET_RATING,\n SET_DISPLAY_VALUE,\n SUMMARY_SUBMITTED,\n TOGGLE_SUMMARY_SUCCESS_MODAL,\n TOGGLE_SUMMARY_FAILURE_MODAL,\n RECEIPT_SUBMITTED,\n TOGGLE_RECEIPT_FAILURE_MODAL,\n} from \"./constants\";\n\nconst setRating = (starsSelected) => ({\n type: SET_RATING,\n starsSelected,\n});\n\nconst setDisplayValue = (value) => ({\n type: SET_DISPLAY_VALUE,\n value,\n});\n\nconst submitSummaryForm = () => ({\n type: SUMMARY_SUBMITTED,\n});\n\nconst submitReceiptForm = () => ({\n type: RECEIPT_SUBMITTED,\n});\n\nconst toggleSummarySuccessModal = (bool) => ({\n type: TOGGLE_SUMMARY_SUCCESS_MODAL,\n payload: bool,\n});\n\nconst toggleSummaryFailureModal = (bool) => ({\n type: TOGGLE_SUMMARY_FAILURE_MODAL,\n payload: bool,\n});\n\nconst toggleReceiptFailureModal = (bool) => ({\n type: TOGGLE_RECEIPT_FAILURE_MODAL,\n payload: bool,\n});\n\nexport default {\n setRating,\n setDisplayValue,\n submitSummaryForm,\n toggleSummarySuccessModal,\n toggleSummaryFailureModal,\n submitReceiptForm,\n toggleReceiptFailureModal,\n};\n","/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */\n/* eslint-disable react/no-array-index-key */\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport actions from \"./actions\";\nimport starSolid from \"../../assets/images/star-solid.svg\";\nimport star from \"../../assets/images/star.svg\";\n\nconst { setRating } = actions;\n\nconst Star = ({ selected, onClick }) => (\n \n);\n\nStar.propTypes = {\n selected: PropTypes.bool,\n onClick: PropTypes.func.isRequired\n};\n\nStar.defaultProps = {\n selected: false\n};\n\nclass Rate extends Component {\n constructor(props) {\n super(props);\n this.state = { starsSelected: 0 };\n }\n\n change = starsSelected => {\n const { storeRating } = this.props;\n this.setState({ starsSelected });\n storeRating(starsSelected);\n };\n\n render() {\n const { totalStars } = this.props;\n const { starsSelected } = this.state;\n\n return (\n
\n {[...Array(totalStars)].map((n, i) => (\n this.change(i + 1)}\n />\n ))}\n
\n );\n }\n}\n\nRate.propTypes = {\n totalStars: PropTypes.number,\n storeRating: PropTypes.func.isRequired\n};\n\nRate.defaultProps = {\n totalStars: 5\n};\n\nconst mapDispatchToProps = dispatch => ({\n storeRating: starsSelected => dispatch(setRating(starsSelected))\n});\n\nexport default connect(null, mapDispatchToProps)(Rate);\n","import languageHelper from \"../../helpers/languageHelper\";\n\nconst language = languageHelper();\n\nconst validateMessage = value => {\n if (value && value.length >= 4000) {\n return language.errors.messageMaximumLength;\n }\n return null;\n};\n\nconst validateEmail = email => {\n // eslint-disable-next-line\n const emailPattern = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (email && !email.match(emailPattern)) {\n return language.errors.invalidEmail;\n }\n if ((email && email.trim() === \"\") || !email) {\n return language.errors.required;\n }\n return null;\n};\nexport default {\n validateMessage,\n validateEmail\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport styles from \"./staticMap.module.scss\";\n\nconst StaticMap = ({ markers }) => {\n const baseUrl = \"https://maps.googleapis.com/maps/api/staticmap\";\n const apiKey = \"AIzaSyCM3Er5wltGE45H78BW1z__41onnf_xl-0\";\n const markerParameters = () => {\n if (markers.length === 1) {\n return markers\n .map(m => `markers=icon:${m.icon}%7C${m.lat},${m.long}&zoom=13`)\n .join(\"&\");\n }\n return markers\n .map(m => `markers=icon:${m.icon}%7C${m.lat},${m.long}`)\n .join(\"&\");\n };\n\n const mapUrl = `${baseUrl}?${markerParameters()}&size=800x300&key=${apiKey}&format=png&maptype=roadmap&style=element:geometry%7Ccolor:0x40464f&style=element:labels.text.fill%7Ccolor:0x746855&style=element:labels.text.stroke%7Ccolor:0x242f3e&style=feature:administrative.locality%7Celement:labels.text.fill%7Ccolor:0xd59563&style=feature:poi%7Celement:labels.text.fill%7Ccolor:0xd59563&style=feature:poi.park%7Celement:geometry%7Ccolor:0x344a48&style=feature:poi.park%7Celement:labels.text.fill%7Ccolor:0x6b9a76&style=feature:road%7Celement:geometry%7Ccolor:0x38414e&style=feature:road%7Celement:geometry.stroke%7Ccolor:0x212a37&style=feature:road%7Celement:labels.text.fill%7Ccolor:0x9ca5b3&style=feature:road.arterial%7Ccolor:0x808793&style=feature:road.highway%7Celement:geometry.fill%7Ccolor:0x707683&style=feature:road.highway%7Celement:geometry.stroke%7Ccolor:0x707783&style=feature:road.highway%7Celement:labels.text.fill%7Ccolor:0xf3d19c&style=feature:road.local%7Ccolor:0x808793&style=feature:transit%7Celement:geometry%7Ccolor:0x2f3948&style=feature:transit.station%7Celement:labels.text.fill%7Ccolor:0xd59563&style=feature:water%7Celement:geometry%7Ccolor:0x272d34&style=feature:water%7Celement:labels.text.fill%7Ccolor:0x515c6d&style=feature:water%7Celement:labels.text.stroke%7Ccolor:0x17263c`;\n\n return (\n
\n \"static-map\"\n
\n );\n};\n\nStaticMap.propTypes = {\n markers: PropTypes.instanceOf(Array).isRequired\n};\n\nexport default StaticMap;\n","import moment from \"moment/moment\";\n\nexport const formatYYYYMMDD = dateString => {\n return moment.utc(dateString).toDate().toLocaleString(\"sv-SE\", {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\"\n });\n};\n\nexport const formatHoursAndMinutes = dateString => {\n return moment.utc(dateString).toDate().toLocaleString(\"sv-SE\", {\n hour: \"2-digit\",\n minute: \"2-digit\"\n });\n};\n","import { Font, StyleSheet } from \"@react-pdf/renderer\";\nimport DinProBold from \"../../../../assets/fonts/DinProFont/DINPro-Bold_13934.ttf\";\nimport DINPro from \"../../../../assets/fonts/DinProFont/DINPro-Regular_13937.ttf\";\nimport DINProLight from \"../../../../assets/fonts/DinProFont/DINPro-Light_13935.ttf\";\nimport DINProMedium from \"../../../../assets/fonts/DinProFont/DINPro-Medium_13936.ttf\";\n\nFont.register({\n family: \"DINPro\",\n fonts: [\n {\n src: DINPro\n },\n {\n src: DinProBold,\n fontWeight: \"bold\"\n },\n {\n src: DINProLight,\n fontWeight: 100\n },\n {\n src: DINProMedium,\n fontWeight: 600\n }\n ]\n});\n\nconst styles = StyleSheet.create({\n body: {\n paddingTop: 5,\n paddingHorizontal: 5,\n paddingBottom: 70,\n display: \"flex\",\n flexDirection: \"column\"\n },\n recieptTextContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n width: \"100%\",\n paddingLeft: 15,\n paddingRight: 15\n },\n recieptText: {\n fontSize: \"10px\",\n fontFamily: \"DINPro\",\n fontWeight: 100,\n letterSpacing: 0,\n alignSelf: \"center\"\n },\n address: {\n fontFamily: \"DINPro\"\n },\n logoContainer: {\n display: \"flex\",\n width: 200,\n flexDirection: \"column\",\n paddingLeft: 15,\n bottom: 7\n },\n iconSize: {\n top: 15,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n width: \"100%\"\n },\n iconPadding: {\n top: 14,\n paddingLeft: 25\n },\n iconContainer: {\n position: \"relative\",\n width: 100,\n height: 70,\n alignSelf: \"flex-end\"\n },\n recieptHeader: {\n fontSize: \"20px\",\n fontFamily: \"DINPro\",\n fontWeight: 100,\n bottom: 4,\n right: 26\n },\n recieptAdress: {\n fontSize: \"12px\",\n fontFamily: \"DINPro\",\n fontWeight: 100\n },\n recieptAdressContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n paddingTop: 8\n },\n logoTextContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"flex-start\",\n width: 200\n },\n iconNav: {\n display: \"flex\",\n height: 100,\n marginBottom: 20,\n paddingHorizontal: 80\n },\n borderLine: {\n borderBottom: \"1px solid gray\"\n },\n heroContainer: {\n paddingHorizontal: 65\n },\n heroOne: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginBottom: 5\n },\n oneInfo: {\n width: 200,\n paddingLeft: 15\n },\n onePricesInfo: {\n width: 200,\n alignItems: \"flex-end\",\n paddingLeft: 15\n },\n smallText: {\n fontSize: \"12px\",\n fontFamily: \"DINPro\",\n fontWeight: 100\n },\n mediumText: {\n fontSize: \"12px\",\n fontFamily: \"DINPro\",\n fontWeight: 600\n },\n smallTextBold: {\n fontSize: \"9px\",\n fontFamily: \"DINPro\",\n fontWeight: \"bold\"\n },\n smallTextThin: {\n fontSize: \"9px\",\n fontFamily: \"DINPro\",\n fontWeight: 100\n },\n priceInfo: {\n display: \"flex\",\n flexDirection: \"row\"\n },\n pricesInfo: {\n display: \"flex\",\n flexDirection: \"row\",\n paddingTop: 10,\n paddingHorizontal: 10,\n justifyContent: \"space-between\"\n },\n onePriceInfo: {\n width: 100\n },\n towPriceInfo: {\n width: 365\n },\n logoWidth: {\n width: \"162px\",\n marginBottom: -7,\n marginLeft: 14\n },\n imageContainer: {\n paddingHorizontal: 65,\n marginTop: 45\n },\n image: {\n objectFit: \"contain\"\n },\n logoImage: {\n objectFit: \"contain\",\n marginTop: 5\n },\n footerContainer: {\n position: \"absolute\",\n bottom: 10,\n left: 0,\n right: 0,\n display: \"flex\",\n alignItems: \"center\"\n },\n footer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-evenly\",\n width: \"100%\"\n },\n divider: {\n marginTop: 20,\n marginBottom: 10,\n width: \"77%\",\n borderBottom: \"1px solid gray\"\n },\n header: {\n fontSize: \"12px\",\n paddingTop: 10,\n fontWeight: \"bold\",\n fontFamily: \"DINPro\"\n },\n testEtt: {\n display: \"flex\",\n justifyContent: \"space-between\",\n flexDirection: \"column\"\n }\n});\n\nexport default styles;\n","import React, { useEffect, useState } from \"react\";\nimport { Document, Image, Page, Text, View } from \"@react-pdf/renderer\";\nimport PropTypes from \"prop-types\";\nimport { useSessionStorage } from \"usehooks-ts\";\nimport styles from \"./pdf.style\";\nimport { SESSION_KEYS } from \"../../../../helpers/sessionStore\";\n\nconst PDF = ({\n summary,\n damageDate,\n fixedOnPlace,\n markers,\n sourceAddress,\n destinationAddress,\n intl\n}) => {\n const { brand, year, registrationNumber } = summary?.customerVehicle || {};\n const { firstName, lastName, city, zipCode, address } =\n summary?.customer || {};\n const [companyAttributes] = useSessionStorage(\n SESSION_KEYS.companyAttributes,\n undefined\n );\n const [organizationHeaderName] = useSessionStorage(\n SESSION_KEYS.organizationHeaderName,\n undefined\n );\n const companyName = organizationHeaderName;\n const companyAddress = companyAttributes?.CompanyAddress?.value;\n const companyZipCode = companyAttributes?.CompanyZipCode?.value;\n const companyCity = companyAttributes?.CompanyCity?.value;\n const companyPhone = companyAttributes?.CompanyPhone?.value;\n const companyLogo = companyAttributes?.CompanyLogo?.value;\n const companyEmail = companyAttributes?.CompanyEmail?.value;\n const organisationNumber = companyAttributes?.OrganisationNumber?.value;\n\n const todaysDate = new Date().toLocaleDateString(\"SV\");\n\n const baseUrl = \"https://maps.googleapis.com/maps/api/staticmap\";\n const apiKey = \"AIzaSyCM3Er5wltGE45H78BW1z__41onnf_xl-0\";\n const markerParameters = () => {\n if (markers.length === 1) {\n return markers\n .map(m => `markers=icon:${m.icon}%7C${m.lat},${m.long}&zoom=13`)\n .join(\"&\");\n }\n return markers\n .map(m => `markers=icon:${m.icon}%7C${m.lat},${m.long}`)\n .join(\"&\");\n };\n\n const mapUrl = `${baseUrl}?${markerParameters()}&size=800x300&key=${apiKey}&format=png&maptype=roadmap&style=element:geometry%7Ccolor:0x40464f&style=element:labels.text.fill%7Ccolor:0x746855&style=element:labels.text.stroke%7Ccolor:0x242f3e&style=feature:administrative.locality%7Celement:labels.text.fill%7Ccolor:0xd59563&style=feature:poi%7Celement:labels.text.fill%7Ccolor:0xd59563&style=feature:poi.park%7Celement:geometry%7Ccolor:0x344a48&style=feature:poi.park%7Celement:labels.text.fill%7Ccolor:0x6b9a76&style=feature:road%7Celement:geometry%7Ccolor:0x38414e&style=feature:road%7Celement:geometry.stroke%7Ccolor:0x212a37&style=feature:road%7Celement:labels.text.fill%7Ccolor:0x9ca5b3&style=feature:road.arterial%7Ccolor:0x808793&style=feature:road.highway%7Celement:geometry.fill%7Ccolor:0x707683&style=feature:road.highway%7Celement:geometry.stroke%7Ccolor:0x707783&style=feature:road.highway%7Celement:labels.text.fill%7Ccolor:0xf3d19c&style=feature:road.local%7Ccolor:0x808793&style=feature:transit%7Celement:geometry%7Ccolor:0x2f3948&style=feature:transit.station%7Celement:labels.text.fill%7Ccolor:0xd59563&style=feature:water%7Celement:geometry%7Ccolor:0x272d34&style=feature:water%7Celement:labels.text.fill%7Ccolor:0x515c6d&style=feature:water%7Celement:labels.text.stroke%7Ccolor:0x17263c`;\n\n const finishedOrders = summary?.orders?.filter(\n item => item?.status === \"Finished\"\n );\n\n const totalCost = finishedOrders?.reduce((accumulator, orderLine) => {\n return (\n accumulator +\n orderLine?.orderLines?.reduce((subtotal, orderLineItem) => {\n return subtotal + orderLineItem?.total + orderLineItem?.calculatedVAT;\n }, 0)\n );\n }, 0);\n\n const currency = summary?.currency;\n\n const vat = finishedOrders?.reduce((accumulator, orderLine) => {\n return (\n accumulator +\n orderLine?.orderLines?.reduce((subtotal, orderLineItem) => {\n return subtotal + orderLineItem?.calculatedVAT;\n }, 0)\n );\n }, 0);\n\n const [dataPicture, setDataPicture] = useState(null);\n\n useEffect(() => {\n const img = document.createElement(\"img\");\n img.crossOrigin = \"anonymous\";\n img.src = companyLogo;\n img.onload = () => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img?.width;\n canvas.height = img?.height;\n ctx.filter = \"invert(100%)\";\n ctx.drawImage(img, 0, 0);\n const dataURI = canvas.toDataURL(\"image/png\");\n setDataPicture(dataURI);\n };\n }, [companyLogo]);\n\n return (\n \n \n \n \n \n {intl.formatMessage({\n id: \"Summary.PDF.ReceiptGenerated\",\n defaultMessage: \"Receipt generated:\",\n description: \"PDF: Receipt generated\"\n })}{\" \"}\n {todaysDate}\n \n \n \n {intl\n .formatMessage({\n id: \"Summary.PDF.Receipt\",\n defaultMessage: \"Receipt\",\n description: \"PDF: Receipt\"\n })\n .toUpperCase()}\n \n \n \n \n \n \n \n {companyName}\n \n {companyAddress}\n \n {`${companyZipCode} ${companyCity}`}\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n {intl.formatMessage({\n id: \"Summary.PDF.CustomerOrderLabel\",\n defaultMessage: \"Client\",\n description: \"PDF: Client label\"\n })}\n \n \n {firstName} {lastName}\n \n {address}\n \n {zipCode} {city}\n \n \n\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.VehicleLabel\",\n defaultMessage: \"Vehicle\",\n description: \"PDF: Vehicle label\"\n })}\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.RegistrationNumberLabel\",\n defaultMessage: \"Registration number\",\n description: \"PDF: Registration number label\"\n })}\n : {registrationNumber}\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.VehicleBrandLabel\",\n defaultMessage: \"Vehicle brand\",\n description: \"PDF: Vehicle brand label\"\n })}\n : {brand}\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.VehicleYearLabel\",\n defaultMessage: \"Year model\",\n description: \"PDF: Year model label\"\n })}\n : {year}\n \n \n \n \n\n \n \n \n \n {intl.formatMessage({\n id: \"Summary.PDF.MissionLabel\",\n defaultMessage: \"Mission\",\n description: \"PDF: mission label label\"\n })}\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.MissionIdLabel\",\n defaultMessage: \"Mission ID\",\n description: \"PDF: mission id label\"\n })}\n : {summary?.shortId}\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.MissionTypeLabel\",\n defaultMessage: \"Mission type\",\n description: \"PDF: mission type label\"\n })}\n :{\" \"}\n \n {summary?.missionTypeName}\n \n \n\n \n {intl.formatMessage({\n id: \"Summary.PDF.DamageReasonLabel\",\n defaultMessage: \"Damage reason\",\n description: \"PDF: damage reason label\"\n })}\n :{\" \"}\n \n {summary?.missionReasonName}\n \n \n\n \n {intl.formatMessage({\n id: \"Summary.PDF.MissionStartedLabel\",\n defaultMessage: \"Mission started\",\n description: \"PDF: mission started label\"\n })}\n : {damageDate}\n \n \n\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.MissionLocationsLabel\",\n defaultMessage: \"Locations\",\n description: \"PDF: mission locations label\"\n })}\n \n {fixedOnPlace ? (\n <>\n \n {intl.formatMessage({\n id: \"Summary.PDF.TowedFromLabel\",\n defaultMessage: \"Towed from\",\n description: \"PDF: towed from label\"\n })}\n : {sourceAddress}\n \n \n ) : (\n <>\n \n {intl.formatMessage({\n id: \"Summary.PDF.DamageScene\",\n defaultMessage: \"Damage scene\",\n description: \"PDF: damage scene label\"\n })}\n : {sourceAddress}\n \n \n )}\n {destinationAddress && fixedOnPlace && (\n <>\n \n {intl.formatMessage({\n id: \"Summary.PDF.TowedToLabel\",\n defaultMessage: \"Towed to\",\n description: \"PDF: towed to label\"\n })}\n :{\" \"}\n \n {destinationAddress}\n \n \n \n )}\n \n \n \n\n \n \n \n {intl.formatMessage({\n id: \"Summary.PDF.SpecificationLabel\",\n defaultMessage: \"Specification\",\n description: \"PDF: specification label\"\n })}\n \n {finishedOrders?.map(order => {\n return order.orderLines\n ? order.orderLines.map(line => (\n {line.articleName}\n ))\n : null;\n })}\n \n\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.PriceLabel\",\n defaultMessage: \"Costs\",\n description: \"PDF: costs label\"\n })}\n \n {finishedOrders?.map(order => {\n return order.orderLines\n ? order.orderLines.map(line => (\n \n {line.total + line.calculatedVAT} {currency}\n \n ))\n : null;\n })}\n \n \n\n \n \n \n {intl.formatMessage({\n id: \"Summary.PDF.TotalAmountLabel\",\n defaultMessage: \"Total amount\",\n description: \"PDF: total amount label\"\n })}\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.VATLabel\",\n defaultMessage: \"VAT\",\n description: \"PDF: VAT label\"\n })}\n \n \n\n \n \n {totalCost} {currency}\n \n \n {vat} {currency}\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n {companyName}\n \n \n {companyAddress}\n \n {`${companyZipCode} ${companyCity}`}\n \n \n\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.FooterOrgNumberLabel\",\n defaultMessage: \"Org. number\",\n description: \"PDF: org. number label\"\n })}\n \n {organisationNumber}\n \n\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.FooterPhoneLabel\",\n defaultMessage: \"Phone\",\n description: \"PDF: phone label\"\n })}\n \n {companyPhone}\n \n\n \n \n {intl.formatMessage({\n id: \"Summary.PDF.FooterEmailLabel\",\n defaultMessage: \"E-mail\",\n description: \"PDF: email label\"\n })}\n \n {companyEmail}\n \n \n \n \n \n );\n};\n\nPDF.propTypes = {\n summary: PropTypes.instanceOf(Object).isRequired,\n damageDate: PropTypes.string.isRequired,\n fixedOnPlace: PropTypes.bool.isRequired,\n markers: PropTypes.instanceOf(Array).isRequired,\n sourceAddress: PropTypes.string.isRequired,\n destinationAddress: PropTypes.string.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired\n};\n\nexport default PDF;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\n\nimport \"./style.css\";\n\nconst LegacyTextArea = ({ input, meta: { error, touched }, ...rest }) => {\n return (\n
\n {rest.label && {rest.label}}\n \n {touched && error ? (\n {error}\n ) : null}\n
\n );\n};\n\n/* eslint-disable */\nLegacyTextArea.propTypes = {\n input: PropTypes.object.isRequired,\n meta: PropTypes.object.isRequired\n};\n\nexport default LegacyTextArea;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { Field, reduxForm } from \"redux-form\";\nimport { PDFDownloadLink } from \"@react-pdf/renderer\";\nimport { Button } from \"@assistansbolaget/gat-components\";\nimport {\n faClock,\n faCalendar,\n faMessageCheck\n} from \"@fortawesome/pro-light-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { useIntl } from \"react-intl\";\nimport { useSessionStorage } from \"usehooks-ts\";\nimport Rate from \"../rate\";\nimport selectors from \"../selectors\";\nimport validators from \"../validators\";\nimport CardBoxContainer from \"../../../components/CardBoxContainer/CardBoxContainer\";\nimport styles from \"./receipt.module.scss\";\nimport arrowDown from \"../../../assets/images/arrow-down-outline.svg\";\nimport StaticMap from \"../../map/static/staticMap\";\nimport { formatHoursAndMinutes, formatYYYYMMDD } from \"../../../helpers/date\";\nimport PDF from \"./pdf/pdf\";\nimport { SESSION_KEYS } from \"../../../helpers/sessionStore\";\nimport LegacyTextArea from \"../../../components/TextArea/LegacyTextArea\";\n\nconst { validateEmail } = validators;\n\nconst { getRating, getSummarySuccessModalState } = selectors;\n\nconst validate = values => {\n const errors = {};\n errors.email = validateEmail(values.email);\n return errors;\n};\n\nlet Receipt = ({ order, onOpinionClick, rating, summarySuccessModalState }) => {\n const [companyAttributes] = useSessionStorage(\n SESSION_KEYS.companyAttributes,\n undefined\n );\n\n const intl = useIntl();\n\n const combinedSourceAddress = `${order?.driverToSource?.address ||\n \"\"}, ${order?.driverToSource?.zipCode || \"\"} ${order?.driverToSource\n ?.city || \"\"}`;\n\n const combinedDestinationAddress = `${order?.sourceToDestination?.coordinate\n ?.name || \"\"} ${order?.sourceToDestination?.address || \"\"}, ${order\n ?.sourceToDestination?.zipCode || \"\"} ${order?.sourceToDestination?.city ||\n \"\"}`;\n\n const missionDate = order?.missionDate;\n\n const createMapMarkers = () => {\n const markers = [];\n\n if (order?.driverToSource?.latitude) {\n markers.push({\n icon:\n \"https://assets-media-smashtechsoftware.s3.eu-central-1.amazonaws.com/sourceLocationPng.png\",\n lat: order.driverToSource.latitude,\n long: order.driverToSource.longitude\n });\n }\n\n if (order?.sourceToDestination?.latitude) {\n markers.push({\n icon:\n \"https://assets-media-smashtechsoftware.s3.eu-central-1.amazonaws.com/ico_repair_destination.png\",\n lat: order.sourceToDestination.latitude,\n long: order.sourceToDestination.longitude\n });\n }\n\n return markers;\n };\n\n const renderOrderLines = orderLines => {\n return orderLines.map(orderLineItem => (\n
\n {orderLineItem?.articleName}\n \n {orderLineItem?.total + orderLineItem?.calculatedVAT}{\" \"}\n {order?.currency}\n \n
\n ));\n };\n\n const renderCostSummary = () => {\n if (!order) {\n return null;\n }\n\n const { orders, currency } = order;\n\n const finishedOrders = orders?.filter(item => item?.status === \"Finished\");\n\n const totalCost = finishedOrders?.reduce((accumulator, orderLine) => {\n const orderLineCost = orderLine.orderLines.reduce(\n (subtotal, orderLineItem) => {\n return subtotal + orderLineItem?.total + orderLineItem?.calculatedVAT;\n },\n 0\n );\n return accumulator + orderLineCost;\n }, 0);\n\n return (\n
\n {finishedOrders?.map(orderLine => (\n
\n {renderOrderLines(orderLine?.orderLines)}\n
\n ))}\n
\n \n {intl.formatMessage({\n id: \"general.total\",\n defaultMessage: \"Total\",\n description: \"Receipt: total cost header\"\n })}\n \n \n {totalCost || 0} {currency}\n \n
\n
\n );\n };\n\n const checkDestination = !!order?.sourceToDestination?.latitude;\n\n const organizationUnitName = companyAttributes?.CompanyName?.value;\n\n const triggers = order?.triggers;\n\n const [isMissionReviewEnabled, setIsMissionReviewEnabled] = React.useState(\n false\n );\n\n React.useEffect(() => {\n if (triggers) {\n const findTriggerForReview = triggers?.find(\n trigger => trigger?.trigger === \"CreateMissionReview\"\n );\n\n setIsMissionReviewEnabled(findTriggerForReview?.isComplete);\n }\n }, [triggers]);\n\n return (\n
\n \n
\n

\n {intl.formatMessage({\n id: \"Summary.Receipt.Header\",\n defaultMessage: \"Thank you for using\",\n description: \"Receipt: thank you for using text\"\n })}{\" \"}\n {organizationUnitName}\n

\n

\n {intl.formatMessage({\n id: \"Summary.Receipt.BreadText\",\n defaultMessage: \"We hope you are satisfied with the assistance.\",\n description: \"Receipt: bread text\"\n })}\n

\n
\n \n {isMissionReviewEnabled || summarySuccessModalState ? (\n
\n

\n {intl.formatMessage({\n id: \"Summary.ReviewedMission.Title\",\n defaultMessage: \"Thanks for your feedback\",\n description: \"Summary: title for reviewed mission\"\n })}\n

\n \n
\n ) : (\n <>\n \n {rating > 0 && (\n
\n \n
\n )}\n \n {intl.formatMessage({\n id: \"Summary.Receipt.RatingButton\",\n defaultMessage: \"Rate us\",\n description: \"Receipt: rate us button\"\n })}\n \n \n )}\n
\n\n
\n

\n {intl.formatMessage({\n id: \"Summary.Receipt.Title\",\n defaultMessage: \"Summary for the assistance\",\n description: \"Receipt: title for the assistance\"\n })}\n

\n {missionDate && (\n <>\n
\n \n \n

{formatYYYYMMDD(missionDate)}

\n
\n \n \n

{formatHoursAndMinutes(missionDate)}

\n
\n
\n \n )}\n
\n
\n
\n {combinedSourceAddress}\n
\n
\n {checkDestination && (\n <>\n
\n \n
\n\n
\n
\n \n {combinedDestinationAddress}\n \n
\n
\n \n )}\n
\n
\n\n \n\n {order && order.orders && renderCostSummary()}\n\n {order && (\n \n }\n >\n {() => (\n \n )}\n \n )}\n
\n
\n );\n};\n\nReceipt.propTypes = {\n onOpinionClick: PropTypes.func.isRequired,\n rating: PropTypes.number.isRequired,\n order: PropTypes.instanceOf(Object).isRequired,\n summarySuccessModalState: PropTypes.bool.isRequired\n};\n\nReceipt = reduxForm({\n form: \"receiptForm\",\n initialValues: {\n message: \"\"\n },\n validate,\n destroyOnUnmount: true\n})(Receipt);\n\nconst mapStateToProps = state => ({\n rating: getRating(state),\n summarySuccessModalState: getSummarySuccessModalState(state)\n});\n\nexport default connect(mapStateToProps, null)(Receipt);\n","export default {\n summary: {\n receipt: {\n header: \"TACK FÖR ATT DU VALDE ASSISTANSBOLAGET!\",\n title: \"SAMMANFATTNING AV DITT UPPDRAG\",\n text1: \"Vi hoppas att du är nöjd med vår hjälp.\",\n text2: \"Betygsätt oss gärna - ditt omdöme är viktigt för oss!\",\n text3: \"Maila mig kvitto & uppdragsbeskrivning:\",\n assistance: \"ASSISTANS:\",\n towing: \"BÄRGNING:\",\n shopChange: \"BYTE AV VERKSTAD:\",\n gradeExperience: \"Betygsätt din upplevelse\",\n summary: \"SKRIV OMDÖME\",\n placeholder: \"Ange din epostadress\",\n sendEmailButton: \"SKICKA\",\n emailSent: \"SKICKAD\",\n repairAtSpotLabel: \"Reparation på plats\",\n downloadReceipt: \"HÄMTA FULLSTÄNDIGT KVITTO\",\n customerLabel: \"BESTÄLLARE:\",\n nameLabel: \"Namn\",\n addressLabel: \"Adress\",\n vehicleLabel: \"FORDON:\",\n brandLabel: \"Bilmärke:\",\n yearLabel: \"Årsmodell:\",\n missionLabel: \"UPPDRAG:\",\n missionTypeLabel: \"Uppdrag:\",\n missionNumber: \"Uppdragsnummer:\",\n missionType: \"Uppdragstyp:\",\n specification: \"SPECIFIKATION\",\n paymentMethod: \"BETALSÄTT\",\n totaltAmount: \"TOTALKOSTNAD\",\n startedAt: \"Påbörjades:\",\n regnoLabel: \"Reg.nr:\",\n damageInformationLabel: \"Skadeinformation\",\n damageReasonHeader: \"Skadeorsak:\",\n locationsForDamage: \"PLATSER:\",\n costs: \"KOSTNAD\",\n damageScene: \"Skadeplats\",\n descriptiveDamageReason: \"Skadebeskrivning:\",\n towingLabel: \"Bärgning\",\n towingTo: \"Bärgad till\",\n dateLabel: \"Datum\",\n towedFromLabel: \"Bärgad från:\",\n towedToLabel: \"Bärgad till:\",\n chargedDistanceLabel: \"Extra debiterad sträcka:\",\n costsLabel: \"Kostnader\",\n costTypeLabel: \"Kostnadstyp\",\n costLabel: \"Kostnader\",\n paymentMethodLabel: \"Betalningssätt\",\n totalLabel: \"Totalt\",\n assistansbolagetCompanyName: \"Rescue Europe AB\",\n assistansbolagetAddressStreet: \"Redaregatan 50\",\n assistansbolagetAddressZip: \"252 36 Helsingborg\",\n receiptHeader: \"KVITTO\",\n assistanstbolaget: \"Assistansbolaget\",\n emailLabel: \"Epost\",\n email: \"kontakt@assistansbolaget.nu\",\n orgNrLabel: \"Org. nr\",\n orgNr: \"559248-8265\",\n phoneNrLabel: \"Telefon\",\n phoneNr: \"042 324 324\",\n vatLabel: \"Varav moms\",\n missionId: \"Uppdragsnummer\",\n recieptGenerated: \"Kvitto genererat\"\n },\n opinion: {\n title: \"HUR VAR DIN UPPLEVELSE?\",\n text1: \"Tack för att du valde Assistansbolaget!\",\n text2:\n \"Vi skulle uppskatta om du lämnade ett omdöme om din upplevelse så att vi kan bli ännu bättre.\",\n placeholder: \"Beskriv din upplevelse...\",\n send: \"SKICKA OMDÖME\"\n },\n summarySuccessModal: {\n title: \"TACK FÖR DIN RECENSION\",\n text: \"Din åsikt är viktig för oss!\",\n primaryButton: \"STÄNG\"\n },\n summaryFailureModal: {\n title: \"NÅGONTING GICK FEL\",\n text: \"Vänligen försök igen.\",\n primaryButton: \"STÄNG\"\n },\n receiptFailureModal: {\n title: \"NÅGONTING GICK FEL\",\n text:\n \"Vi kunde tyvärr inte skicka uppdragsbeskrivningen till dig. Vänligen försök igen eller kontakta oss på Tel: +46 42 324 324.\",\n primaryButton: \"STÄNG\"\n }\n },\n damageDetails: {\n frontLeft: \"Vänster fram\",\n frontRight: \"Höger fram\",\n rearLeft: \"Vänster bak\",\n rearRight: \"Höger bak\",\n missing: \"Saknas\",\n defect: \"Defekt\",\n lockedInsideVehicle: \"Inlåst\",\n petrol: \"Bensin\",\n diesel: \"Diesel\",\n ethanol: \"Etanol\",\n electric: \"El\",\n red: \"Röd\",\n yellow: \"Gul\",\n errorMessage: \"Felmeddelande\",\n camDrive: \"Kamdrivning/drivsystem\",\n turbo: \"Turbo/kompressor\",\n oilLeakage: \"Oljeläckage\",\n fanBelt: \"Fläktrem\",\n coolingSystem: \"Kylsystem\",\n waterPump: \"Vattenpump\",\n powerTransmission: \"Kraftöverföring\",\n clutch: \"Koppling\",\n flywheel: \"Svänghjul\",\n distributionBox: \"Fördelningslåda\",\n generator: \"Generator\",\n controlDevice: \"Styrdon/styrenhet\",\n ignitionLock: \"Tändlås\",\n batteryBank: \"Batteribank(elbil)\",\n fuelInjector: \"Spridare\",\n fuelPump: \"Bränslepump\",\n gasRegulator: \"Gasregulator\",\n steeringGear: \"Styrväxel\",\n servopump: \"Servopump\",\n steeringWheelLock: \"Rattlås\",\n abs: \"ABS/ESP\",\n parkingBrake: \"Parkeringsbroms\",\n brakeServo: \"Bromsservo\",\n brakePads: \"Bromsok/skivor/klossar\",\n rearCarriage: \"Bakvagn\",\n frontCarriage: \"Framvagn\",\n exhaustSystem: \"Avgassystem\",\n hydraulics: \"Hydraulik\",\n glassDamage: \"Glasskada\",\n fire: \"Brand\",\n fuelError: \"Feltankning\"\n },\n damageReasons: {\n flatTire: \"Punktering\",\n startHelp: \"Strömlöst batteri\",\n keyIssues: \"Nyckelproblem\",\n propulsion: \"Drivmedelsbrist\",\n warningLight: \"Varningslampa lyser\",\n engineProblem: \"Motor\",\n gearBox: \"Växellåda & drivning\",\n electronics: \"Elektronik\",\n fuelSystem: \"Bränslesystem\",\n steering: \"Styrning\",\n brakingSystem: \"Bromssystem\",\n otherDamage: \"Övrig skada\",\n collision: \"Kollision\",\n ditch: \"Dikeskörning\",\n transport: \"Transport\",\n drivingBan: \"Körförbud\"\n },\n accidentOptionFunction: {\n chooseWarningColor: \"Välj färg på varningslampan\",\n chooseReason: \"Välj orsak\",\n chooseTire: \"Välj däck\",\n fuelType: \"Ange typ av drivmedel\",\n damageDetail: \"Skadeorsak detalj\",\n chooseEngineProblem: \"Välj motorproblem\",\n chooseGearBox: \"Välj växellådeproblem\",\n chooseElectronics: \"Välj elfel\",\n chooseFuelSystem: \"Välj bränslesystemsfel\",\n chooseSteering: \"Välj styrningsfel\",\n chooseBrakingSystem: \"Välj bromsfel\",\n chooseOtherDamage: \"Välj övrig skada\"\n }\n};\n","import legacyStringsSummary from \"./legacyStringsSummary\";\n\nconst language = legacyStringsSummary;\n\nconst { damageDetails, damageReasons, accidentOptionFunction } = language;\n\nconst FLAT_TIRE = {\n CODE: 901114,\n HEADER: damageReasons.flatTire,\n DETAILS_TITLE: accidentOptionFunction.chooseTire,\n details: {\n FRONT_LEFT: damageDetails.frontLeft,\n FRONT_RIGHT: damageDetails.frontRight,\n REAR_LEFT: damageDetails.rearLeft,\n REAR_RIGHT: damageDetails.rearRight\n }\n};\n\nconst START_HELP = {\n CODE: 901110,\n HEADER: damageReasons.startHelp\n};\n\nconst KEY_ISSUES = {\n CODE: 901113,\n HEADER: damageReasons.keyIssues,\n DETAILS_TITLE: accidentOptionFunction.chooseReason,\n details: {\n MISSING: damageDetails.missing,\n DEFECT: damageDetails.defect,\n LOCKED_INSIDE_VEHICLE: damageDetails.lockedInsideVehicle\n }\n};\n\nconst PROPULSION = {\n CODE: 901115,\n HEADER: damageReasons.propulsion,\n DETAILS_TITLE: accidentOptionFunction.fuelType,\n details: {\n PETROL: damageDetails.petrol,\n DIESEL: damageDetails.diesel,\n ETHANOL: damageDetails.ethanol,\n ELECTRIC: damageDetails.electric\n }\n};\n\nconst WARNING_LIGHT = {\n CODE: 901105,\n HEADER: damageReasons.warningLight,\n DETAILS_TITLE: accidentOptionFunction.chooseWarningColor,\n details: {\n RED: damageDetails.red,\n YELLOW: damageDetails.yellow,\n ERROR_MESSAGE: damageDetails.errorMessage\n }\n};\n\nconst ENGINE_PROBLEM = {\n CODE: 901123,\n HEADER: damageReasons.engineProblem,\n DETAILS_TITLE: accidentOptionFunction.chooseEngineProblem,\n details: {\n CAM_DRIVE: damageDetails.camDrive,\n TURBO: damageDetails.turbo,\n OIL_LEAKAGE: damageDetails.oilLeakage,\n FAN_BELT: damageDetails.fanBelt,\n COOLING_SYSTEM: damageDetails.coolingSystem,\n WATER_PUMP: damageDetails.waterPump,\n POWER_TRANSMISSION: damageDetails.powerTransmission\n }\n};\n\nconst GEAR_BOX = {\n CODE: 901116,\n HEADER: damageReasons.gearBox,\n DETAILS_TITLE: accidentOptionFunction.chooseGearBox,\n details: {\n CLUTCH: damageDetails.clutch,\n FLYWHEEL: damageDetails.flywheel,\n DISTRIBUTION_BOX: damageDetails.distributionBox\n }\n};\n\nconst ELECTRONICS = {\n CODE: 901170,\n HEADER: damageReasons.electronics,\n DETAILS_TITLE: accidentOptionFunction.chooseElectronics,\n details: {\n GENERATOR: damageDetails.generator,\n CONTROL_DEVICE: damageDetails.controlDevice,\n IGNITION_LOCK: damageDetails.ignitionLock,\n BATTERY_BANK: damageDetails.batteryBank\n }\n};\n\nconst FUEL_SYSTEM = {\n CODE: 901171,\n HEADER: damageReasons.fuelSystem,\n DETAILS_TITLE: accidentOptionFunction.chooseFuelSystem,\n details: {\n FUEL_INJECTOR: damageDetails.fuelInjector,\n FUEL_PUMP: damageDetails.fuelPump,\n GAS_REGULATOR: damageDetails.gasRegulator\n }\n};\n\nconst STEERING = {\n CODE: 901112,\n HEADER: damageReasons.steering,\n DETAILS_TITLE: accidentOptionFunction.chooseSteering,\n details: {\n STEERING_GEAR: damageDetails.steeringGear,\n SERVO_PUMP: damageDetails.servopump,\n STEERING_WHEEL_LOCK: damageDetails.steeringWheelLock\n }\n};\n\nconst BRAKING_SYSTEM = {\n CODE: 901172,\n HEADER: damageReasons.brakingSystem,\n DETAILS_TITLE: accidentOptionFunction.chooseBrakingSystem,\n details: {\n ABS_ESP: damageDetails.abs,\n PARKING_BRAKE: damageDetails.parkingBrake,\n BRAKE_SERVO: damageDetails.brakeServo,\n BRAKE_PADS: damageDetails.brakePads\n }\n};\n\nconst OTHER_DAMAGE = {\n CODE: 901122,\n HEADER: damageReasons.otherDamage,\n DETAILS_TITLE: accidentOptionFunction.chooseOtherDamage,\n details: {\n REAR_CARRIAGE: damageDetails.rearCarriage,\n FRONT_CARRIAGE: damageDetails.frontCarriage,\n EXHAUST_SYSTEM: damageDetails.exhaustSystem,\n HYDRAULICS: damageDetails.hydraulics,\n GLASS_DAMAGE: damageDetails.glassDamage,\n FIRE: damageDetails.fire,\n FUEL_ERROR: damageDetails.fuelError\n }\n};\n\nconst COLLISION = { CODE: 901106, HEADER: damageReasons.collision };\n\nconst DITCH = { CODE: 901139, HEADER: damageReasons.ditch };\n\nconst TRANSPORT = { CODE: 920010, HEADER: damageReasons.transport };\n\nconst DRIVING_BAN = { CODE: 901173, HEADER: damageReasons.drivingBan };\n\nexport const DAMAGE_REASONS = {\n FLAT_TIRE,\n START_HELP,\n KEY_ISSUES,\n PROPULSION,\n WARNING_LIGHT,\n ENGINE_PROBLEM,\n GEAR_BOX,\n ELECTRONICS,\n FUEL_SYSTEM,\n STEERING,\n BRAKING_SYSTEM,\n OTHER_DAMAGE,\n COLLISION,\n DITCH,\n TRANSPORT,\n DRIVING_BAN\n};\n","import { Font, StyleSheet } from \"@react-pdf/renderer\";\nimport DinProBold from \"../../../../assets/fonts/DinProFont/DINPro-Bold_13934.ttf\";\nimport DINPro from \"../../../../assets/fonts/DinProFont/DINPro-Regular_13937.ttf\";\nimport DINProLight from \"../../../../assets/fonts/DinProFont/DINPro-Light_13935.ttf\";\nimport DINProMedium from \"../../../../assets/fonts/DinProFont/DINPro-Medium_13936.ttf\";\n\nFont.register({\n family: \"DINPro\",\n fonts: [\n {\n src: DINPro\n },\n {\n src: DinProBold,\n fontWeight: \"bold\"\n },\n {\n src: DINProLight,\n fontWeight: 100\n },\n {\n src: DINProMedium,\n fontWeight: 600\n }\n ]\n});\n\nconst styles = StyleSheet.create({\n body: {\n paddingTop: 5,\n paddingHorizontal: 5,\n paddingBottom: 70,\n display: \"flex\",\n flexDirection: \"column\"\n },\n recieptText: {\n fontSize: \"10px\",\n fontFamily: \"DINPro\",\n fontWeight: 100,\n letterSpacing: 0\n },\n logoContainer: {\n display: \"flex\",\n width: 200,\n flexDirection: \"column\",\n paddingLeft: 15,\n bottom: 7\n },\n iconSize: {\n position: \"relative\",\n top: 30\n },\n iconPadding: {\n top: 14,\n paddingLeft: 25\n },\n recieptHeader: {\n fontSize: \"38px\",\n fontFamily: \"DINPro\",\n fontWeight: 100,\n bottom: 4,\n right: 3\n },\n recieptAdress: {\n fontSize: \"7px\",\n fontFamily: \"DINPro\",\n fontWeight: 100\n },\n recieptAdressContainer: {\n display: \"flex\",\n alignItems: \"flex-start\",\n height: \"36px\",\n paddingTop: 8\n },\n logoTextContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"flex-start\",\n width: 200\n },\n iconNav: {\n display: \"flex\",\n height: 100,\n justifyContent: \"center\",\n alignItems: \"flex-end\",\n marginBottom: 20,\n paddingHorizontal: 65\n },\n borderLine: {\n borderBottom: \"1px solid gray\"\n },\n heroContainer: {\n paddingHorizontal: 65\n },\n heroOne: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginBottom: 5\n },\n oneInfo: {\n width: 200,\n paddingLeft: 15\n },\n onePricesInfo: {\n width: 200,\n alignItems: \"flex-end\",\n paddingLeft: 15\n },\n smallText: {\n fontSize: \"12px\",\n fontFamily: \"DINPro\",\n fontWeight: 100\n },\n mediumText: {\n fontSize: \"12px\",\n fontFamily: \"DINPro\",\n fontWeight: 600\n },\n smallTextBold: {\n fontSize: \"9px\",\n fontFamily: \"DINPro\",\n fontWeight: \"bold\"\n },\n smallTextThin: {\n fontSize: \"9px\",\n fontFamily: \"DINPro\",\n fontWeight: 100\n },\n priceInfo: {\n display: \"flex\",\n flexDirection: \"row\"\n },\n pricesInfo: {\n display: \"flex\",\n flexDirection: \"row\",\n paddingTop: 10,\n paddingHorizontal: 10,\n justifyContent: \"space-between\"\n },\n onePriceInfo: {\n width: 100\n },\n towPriceInfo: {\n width: 365\n },\n logoWidth: {\n width: \"162px\",\n marginBottom: -7,\n marginLeft: 14\n },\n imageContainer: {\n paddingHorizontal: 65,\n marginTop: 45\n },\n image: {\n objectFit: \"contain\"\n },\n footerContainer: {\n position: \"absolute\",\n bottom: 10,\n left: 0,\n right: 0,\n display: \"flex\",\n alignItems: \"center\"\n },\n footer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-evenly\",\n width: \"100%\"\n },\n divider: {\n marginTop: 20,\n marginBottom: 10,\n width: \"77%\",\n borderBottom: \"1px solid gray\"\n },\n header: {\n fontSize: \"12px\",\n paddingTop: 10,\n fontWeight: \"bold\",\n fontFamily: \"DINPro\"\n },\n testEtt: {\n display: \"flex\",\n justifyContent: \"space-between\",\n flexDirection: \"column\"\n }\n});\n\nexport default styles;\n","import React, { useEffect, useState } from \"react\";\nimport {\n Document,\n Image,\n Page,\n Text,\n View,\n Svg,\n Path\n} from \"@react-pdf/renderer\";\nimport PropTypes from \"prop-types\";\nimport { DAMAGE_REASONS } from \"../legacyDamageReasons\";\nimport styles from \"./pdf.style\";\nimport legacyStringsSummary from \"../legacyStringsSummary\";\n\nconst PDF = ({ summary, damageDate, fixedOnPlace, regno, markers }) => {\n const {\n total,\n orderLines,\n chargedKilometers,\n vat,\n taxRate,\n damagePositionStreet,\n damagePositionArea,\n transportedToStreet,\n transportedToArea\n } = summary?.order;\n const { brand, year } = summary?.vehicle;\n const {\n firstName,\n lastName,\n city,\n zipCode,\n streetAddress\n } = summary?.customer;\n const { damageReason, damageDetails } = summary;\n\n const [specifiedDamageDetail, setSpecifiedDamageDetail] = useState(\"\");\n const queryParams = new URLSearchParams(window.location.search);\n const missionId = queryParams.get(\"id\");\n const language = legacyStringsSummary;\n const damageReasonLabel = Object.values(DAMAGE_REASONS).find(\n d => d.CODE === damageReason\n ).HEADER;\n\n const newValue = Object.values(DAMAGE_REASONS).find(\n d => d.CODE === damageReason\n ).details;\n\n useEffect(() => {\n Object.entries(newValue || {}).forEach(([key, value]) => {\n if (key === damageDetails) {\n setSpecifiedDamageDetail(value);\n }\n });\n }, []);\n\n const todaysDate = new Date().toLocaleDateString(\"SV\");\n\n const baseUrl = \"https://maps.googleapis.com/maps/api/staticmap\";\n const apiKey = \"AIzaSyCM3Er5wltGE45H78BW1z__41onnf_xl-0\";\n const markerParameters = () => {\n if (markers.length === 1) {\n return markers\n .map(m => `markers=icon:${m.icon}%7C${m.lat},${m.long}&zoom=12`)\n .join(\"&\");\n }\n return markers\n .map(m => `markers=icon:${m.icon}%7C${m.lat},${m.long}`)\n .join(\"&\");\n };\n\n const mapUrl = `${baseUrl}?${markerParameters()}&size=800x300&key=${apiKey}&format=png&maptype=roadmap&style=feature:administrative%7Celement:geometry%7Cvisibility:off&style=feature:administrative.land_parcel%7Celement:labels%7Cvisibility:off&style=feature:poi%7Cvisibility:off&style=feature:poi%7Celement:labels.text%7Cvisibility:off&style=feature:road%7Celement:labels.icon%7Cvisibility:off&style=feature:road.local%7Celement:labels%7Cvisibility:off&style=feature:transit%7Cvisibility:off`;\n\n return (\n \n \n \n \n {language.summary.receipt.recieptGenerated} {todaysDate}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {language.summary.receipt.receiptHeader}\n \n \n\n \n \n {language.summary.receipt.assistanstbolaget}\n \n \n {language.summary.receipt.assistansbolagetAddressStreet}\n \n \n {language.summary.receipt.assistansbolagetAddressZip}\n \n \n \n \n \n\n \n \n \n \n \n \n {language.summary.receipt.customerLabel}\n \n \n {firstName} {lastName}\n \n {streetAddress}\n \n {zipCode} {city}\n \n \n\n \n \n {language.summary.receipt.vehicleLabel}\n \n \n {language.summary.receipt.regnoLabel} {regno}\n \n \n {language.summary.receipt.brandLabel} {brand}\n \n \n {language.summary.receipt.yearLabel} {year}\n \n \n \n \n\n \n \n \n \n {language.summary.receipt.missionLabel}\n \n \n {language.summary.receipt.missionNumber} {missionId}\n \n \n {language.summary.receipt.missionType}{\" \"}\n {fixedOnPlace ? (\n \n {language.summary.receipt.towingLabel}\n \n ) : (\n \n {language.summary.receipt.repairAtSpotLabel}\n \n )}\n \n \n {language.summary.receipt.damageReasonHeader}{\" \"}\n {damageReasonLabel}\n \n {specifiedDamageDetail && (\n \n {language.summary.receipt.descriptiveDamageReason}{\" \"}\n {specifiedDamageDetail}\n \n )}\n \n {language.summary.receipt.startedAt} {damageDate}\n \n \n\n \n \n {language.summary.receipt.locationsForDamage}\n \n {fixedOnPlace ? (\n <>\n \n {language.summary.receipt.towedFromLabel}{\" \"}\n \n {damagePositionStreet}\n \n \n {damagePositionArea}\n \n ) : (\n <>\n \n {language.summary.receipt.damageScene}:{\" \"}\n \n {damagePositionStreet}\n \n \n {damagePositionArea}\n \n )}\n {transportedToStreet && (\n <>\n \n {language.summary.receipt.towedToLabel}{\" \"}\n \n {transportedToStreet}\n \n \n {transportedToArea}\n \n )}\n {chargedKilometers && (\n \n {language.summary.receipt.chargedDistanceLabel}{\" \"}\n {chargedKilometers} km\n \n )}\n \n \n \n\n \n \n \n {language.summary.receipt.specification}\n \n {orderLines?.map(({ name, id }) => {\n return (\n \n {name}\n \n );\n })}\n \n\n \n \n {language.summary.receipt.paymentMethod}\n \n {orderLines?.map(({ paymentType, id }) => {\n return (\n \n {paymentType}\n \n );\n })}\n \n\n \n \n {language.summary.receipt.costs}\n \n {orderLines?.map(({ price, id }) => {\n return (\n \n {price} sek\n \n );\n })}\n \n \n\n \n \n\n \n \n {language.summary.receipt.totaltAmount}\n \n \n {language.summary.receipt.vatLabel} ({taxRate}%)\n \n \n\n \n {total} sek\n {vat} sek\n \n \n \n\n \n \n \n \n\n \n \n \n \n \n {language.summary.receipt.assistanstbolaget}\n \n \n {language.summary.receipt.assistansbolagetCompanyName}\n \n \n \n \n {language.summary.receipt.assistansbolagetAddressStreet}\n \n \n {language.summary.receipt.assistansbolagetAddressZip}\n \n \n\n \n \n {language.summary.receipt.orgNrLabel}\n \n \n {language.summary.receipt.orgNr}\n \n \n\n \n \n {language.summary.receipt.phoneNrLabel}\n \n \n {language.summary.receipt.phoneNr}\n \n \n\n \n \n {language.summary.receipt.emailLabel}\n \n \n {language.summary.receipt.email}\n \n \n \n \n \n \n );\n};\n\nPDF.propTypes = {\n summary: PropTypes.instanceOf(Object).isRequired,\n damageDate: PropTypes.string.isRequired,\n fixedOnPlace: PropTypes.bool.isRequired,\n regno: PropTypes.string.isRequired,\n markers: PropTypes.instanceOf(Array).isRequired\n};\n\nexport default PDF;\n","/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */\n/* eslint-disable react/no-array-index-key */\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport actions from \"./legacyActions\";\nimport starSolid from \"../../../assets/images/star-solid.svg\";\nimport star from \"../../../assets/images/star.svg\";\n\nconst { setRating, legacySubmitSummaryForm } = actions;\n\nconst Star = ({ selected, onClick }) => (\n \n);\n\nStar.propTypes = {\n selected: PropTypes.bool,\n onClick: PropTypes.func.isRequired\n};\n\nStar.defaultProps = {\n selected: false\n};\n\nclass LegacyRate extends Component {\n constructor(props) {\n super(props);\n this.state = { starsSelected: 0 };\n }\n\n change = starsSelected => {\n const { storeRating, submitRating } = this.props;\n this.setState({ starsSelected });\n storeRating(starsSelected);\n submitRating();\n };\n\n render() {\n const { totalStars } = this.props;\n const { starsSelected } = this.state;\n\n return (\n <>\n {[...Array(totalStars)].map((n, i) => (\n this.change(i + 1)}\n />\n ))}\n \n );\n }\n}\n\nLegacyRate.propTypes = {\n totalStars: PropTypes.number,\n storeRating: PropTypes.func.isRequired,\n submitRating: PropTypes.func.isRequired\n};\n\nLegacyRate.defaultProps = {\n totalStars: 5\n};\n\nconst mapDispatchToProps = dispatch => ({\n storeRating: starsSelected => dispatch(setRating(starsSelected)),\n submitRating: () => dispatch(legacySubmitSummaryForm())\n});\n\nexport default connect(null, mapDispatchToProps)(LegacyRate);\n","import React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { Field, reduxForm } from \"redux-form\";\nimport classNames from \"classnames\";\nimport { PDFDownloadLink } from \"@react-pdf/renderer\";\nimport { Button } from \"@assistansbolaget/gat-components\";\nimport selectors from \"../selectors\";\nimport validators from \"../validators\";\nimport CardBoxContainer from \"../../../components/CardBoxContainer/CardBoxContainer\";\nimport styles from \"./receipt.module.scss\";\nimport location from \"../../../assets/images/location-pin-secondary.svg\";\nimport arrowDown from \"../../../assets/images/arrow-down-outline.svg\";\nimport repair from \"../../../assets/images/repair.svg\";\nimport calendar from \"../../../assets/images/calendar.svg\";\nimport towTruck from \"../../../assets/images/towTruckReciept.svg\";\nimport StaticMap from \"../../map/static/staticMap\";\nimport { formatHoursAndMinutes, formatYYYYMMDD } from \"../../../helpers/date\";\nimport PDF from \"./legacyPDF/pdf\";\nimport legacyStringsSummary from \"./legacyStringsSummary\";\nimport legacyGetSummary from \"./legacyApi\";\nimport LegacyRate from \"./legacyRate\";\nimport actions from \"./legacyActions\";\nimport LegacyTextArea from \"../../../components/TextArea/LegacyTextArea\";\n\nconst language = legacyStringsSummary;\n\nconst { validateEmail } = validators;\n\nconst { getRating } = selectors;\n\nconst { legacySubmitSummaryForm } = actions;\n\nconst validate = values => {\n const errors = {};\n errors.email = validateEmail(values.email);\n return errors;\n};\n\nlet LegacyReciept = ({ legacyOrder, rating, handleSummarySubmit }) => {\n const order = legacyOrder;\n const [damageDate, setDamageDate] = useState(\"\");\n const [summary, setSummary] = useState();\n const [showOpinion, setShowOpinion] = useState(false);\n\n const checkIfRepairedAtSpot = () => {\n return !!order?.timestamps?.repairedAtDamagePlace;\n };\n\n const createMapMarkers = () => {\n if (checkIfRepairedAtSpot()) {\n return [\n {\n icon:\n \"https://assets-media-smashtechsoftware.s3.eu-central-1.amazonaws.com/sourceLocationPng.png\",\n lat: order?.s_latitude,\n long: order?.s_longitude\n }\n ];\n }\n return [\n {\n icon:\n \"https://assets-media-smashtechsoftware.s3.eu-central-1.amazonaws.com/sourceLocationPng.png\",\n lat: order?.s_latitude,\n long: order?.s_longitude\n },\n {\n icon:\n \"https://assets-media-smashtechsoftware.s3.eu-central-1.amazonaws.com/ico_repair_destination.png\",\n lat: order?.d_latitude,\n long: order?.d_longitude\n }\n ];\n };\n\n useEffect(() => {\n const currentDamageDate = order?.assigned_at;\n setDamageDate(currentDamageDate);\n }, [order]);\n\n useEffect(() => {\n if (order?.damageOrderNumber) {\n legacyGetSummary\n .getSummary(order?.damageOrderNumber)\n .then(res => setSummary(res));\n }\n }, [order?.damageOrderNumber]);\n\n const renderCostSummary = () => {\n const { orderLines, total } = summary?.order;\n return (\n
\n {orderLines?.map(orderLine => (\n
\n {orderLine.name}\n {orderLine.price} kr\n
\n ))}\n
\n Totalkostnad\n {total || 0} kr\n
\n
\n );\n };\n\n const repairedAtSpot = checkIfRepairedAtSpot();\n\n const handleClick = () => {\n setShowOpinion(true);\n };\n\n const handleSubmit = () => {\n setShowOpinion(false);\n handleSummarySubmit();\n };\n\n return (\n
\n \n
\n

{language.summary.receipt.text1}

\n

\n {language.summary.receipt.text2}\n

\n
\n\n \n \n \n {showOpinion && (\n \n
\n
\n \n

\n {language.summary.opinion.text1}\n

\n

\n {language.summary.opinion.text2}\n

\n \n \n \n
\n\n \n {language.summary.opinion.send}\n \n \n
\n
\n )}\n\n {!showOpinion && (\n \n {language.summary.receipt.summary}\n \n )}\n\n
\n

{language.summary.receipt.title}

\n {damageDate && (\n <>\n
\n \"created\n \n {formatYYYYMMDD(damageDate)}{\" \"}\n {formatHoursAndMinutes(damageDate)}\n \n
\n \n )}\n
\n {repairedAtSpot ? (\n
\n \"repair\"\n \n {language.summary.receipt.repairAtSpotLabel}\n \n
\n ) : (\n
\n \"tow\n \n {language.summary.receipt.towingLabel}\n \n
\n )}\n
\n \"source\n
\n \n {summary?.order?.damagePositionStreet}\n \n \n {summary?.order?.damagePositionArea}\n \n
\n
\n {!repairedAtSpot && (\n <>\n
\n \n
\n\n
\n \"workshop\n
\n \n {summary?.order?.transportedToStreet}\n \n \n {summary?.order?.transportedToArea}\n \n
\n
\n \n )}\n
\n
\n\n \n\n {summary && summary.order && renderCostSummary()}\n\n {summary && (\n \n }\n >\n {() => (\n \n )}\n \n )}\n
\n
\n );\n};\n\nLegacyReciept.propTypes = {\n rating: PropTypes.number.isRequired,\n legacyOrder: PropTypes.instanceOf(Object).isRequired,\n handleSummarySubmit: PropTypes.func.isRequired\n};\n\nLegacyReciept = reduxForm({\n form: \"receiptForm\",\n initialValues: {\n email: \"\",\n message: \"\"\n },\n validate,\n destroyOnUnmount: true\n})(LegacyReciept);\n\nconst mapStateToProps = state => ({\n rating: getRating(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n handleSummarySubmit: () => {\n dispatch(legacySubmitSummaryForm());\n }\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(LegacyReciept);\n","import React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { injectIntl } from \"react-intl\";\nimport { useSessionStorage } from \"usehooks-ts\";\nimport { Button } from \"@assistansbolaget/gat-components\";\nimport actions from \"./actions\";\nimport selectors from \"./selectors\";\nimport Receipt from \"./receipt/receipt\";\nimport history from \"../../history\";\nimport Modal from \"../../components/Modal/Modal\";\nimport { CREATE_ORDER_PATH } from \"../../constants/routeConstants\";\nimport activeOrderSelectors from \"../activeOrder/selectors\";\nimport \"./style.css\";\nimport api from \"../../helpers/apiUtils\";\nimport {\n BaseUrl,\n GET_MISSION,\n USER_ASSISTANCE_ORDER\n} from \"../../constants/apiConstants\";\nimport {getSession, SESSION_KEYS, setSession} from \"../../helpers/sessionStore\";\nimport ActiveOrdersActions from \"../activeOrder/actions\";\nimport logout from \"../../helpers/clearSessionStore\";\nimport services from \"./service\";\nimport legacyApi from \"../../helpers/legacyApiHelper\";\nimport LegacyReciept from \"./LegacyReciept/LegacyReciept\";\n\nconst { getOrder } = activeOrderSelectors;\n\nconst { setOrderStatus } = ActiveOrdersActions;\n\nconst {\n submitSummaryForm,\n toggleSummarySuccessModal,\n toggleSummaryFailureModal,\n toggleReceiptFailureModal\n} = actions;\n\nconst {\n getShowOpinion,\n getSummarySuccessModalState,\n getSummaryFailureModalState,\n getReceiptFailureModalState\n} = selectors;\n\nconst Summary = ({\n onOpinionClick,\n closeSummaryFailureModal,\n receiptFailureModalState,\n closeReceiptFailureModal,\n saveOrderToState,\n intl\n}) => {\n setSession(SESSION_KEYS.appId, process.env.REACT_APP_APPLICATION_ID);\n const [gatOrgUnit] = useSessionStorage(\n SESSION_KEYS.gatOrganizationUnit,\n undefined\n );\n const [gatLocale] = useSessionStorage(SESSION_KEYS.locale, undefined);\n const [companyAttributes] = useSessionStorage(\n SESSION_KEYS.companyAttributes,\n undefined\n );\n\n const [order, setOrder] = useState({});\n\n const [errorModal, setErrorModal] = useState(false);\n\n const accessToken = getSession(SESSION_KEYS.accessToken);\n\n const urlParams = new URLSearchParams(window.location.search);\n const token = urlParams.get(\"token\");\n\n const params = {\n id: urlParams.get(\"id\"),\n regno: urlParams.get(\"regno\"),\n phone: urlParams.get(\"phone\")\n };\n\n const showLegacyReciept = params.id && params.regno && params.phone;\n\n useEffect(async () => {\n if (params.id && params.regno && params.phone) {\n const dispatchToken = await services.fetchToken({\n mobile: params.phone,\n regno: params.regno\n });\n\n legacyApi\n .get(\n `${USER_ASSISTANCE_ORDER}?id=${params.id}`,\n BaseUrl.RescueUrl,\n dispatchToken\n )\n .then(res => {\n if (res.statusCode < 299) {\n saveOrderToState(res.data.data);\n return setOrder(res.data.data);\n }\n return setErrorModal(true);\n })\n .catch(() => {\n setErrorModal(true);\n });\n }\n }, []);\n\n useEffect(() => {\n if (!token || token === \"null\") return;\n\n const appId = getSession(SESSION_KEYS.appId);\n\n try {\n api\n .get(`${GET_MISSION}?token=${token}`, BaseUrl.GatUrl, {\n gatOrgUnit,\n accessToken,\n gatLocale,\n appId\n })\n .then(res => {\n if (res.statusCode < 299) {\n saveOrderToState(res.data);\n return setOrder(res.data);\n }\n return setErrorModal(true);\n })\n .catch(() => {\n setErrorModal(true);\n });\n } catch (error) {\n setErrorModal(true);\n }\n }, [gatLocale]);\n\n const companyPhoneNumber = companyAttributes?.CompanyPhone?.value;\n\n return (\n <>\n {errorModal && (\n \n )}\n {receiptFailureModalState && (\n \n )}\n
\n
\n
\n {showLegacyReciept ? (\n \n ) : (\n \n )}\n \n {intl.formatMessage({\n id: \"Summary.CreateNewMission\",\n defaultMessage: \"Create new mission\",\n description: \"Summary: button for create new mission\"\n })}\n \n
\n
\n
\n \n );\n};\n\nSummary.propTypes = {\n onOpinionClick: PropTypes.func.isRequired,\n closeSummaryFailureModal: PropTypes.func.isRequired,\n receiptFailureModalState: PropTypes.func.isRequired,\n closeReceiptFailureModal: PropTypes.func.isRequired,\n saveOrderToState: PropTypes.func.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired\n};\n\nconst mapStateToProps = state => ({\n showOpinion: getShowOpinion(state),\n summarySuccessModalState: getSummarySuccessModalState(state),\n summaryFailureModalState: getSummaryFailureModalState(state),\n receiptFailureModalState: getReceiptFailureModalState(state),\n order: getOrder(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n onOpinionClick: () => {\n dispatch(submitSummaryForm());\n },\n saveOrderToState: order => {\n dispatch(setOrderStatus(order));\n },\n closeSummarySuccessModal: () => {\n logout();\n dispatch(toggleSummarySuccessModal(false));\n history.push(CREATE_ORDER_PATH);\n },\n closeSummaryFailureModal: () => {\n logout();\n dispatch(toggleSummaryFailureModal(false));\n history.push(CREATE_ORDER_PATH);\n },\n closeReceiptFailureModal: () => {\n logout();\n dispatch(toggleReceiptFailureModal(false));\n history.push(CREATE_ORDER_PATH);\n }\n});\n\nexport default injectIntl(\n connect(mapStateToProps, mapDispatchToProps)(Summary)\n);\n","import { fromJS } from \"immutable\";\nimport * as constants from \"./constants\";\n\nconst initialState = fromJS({\n receiptLoading: false,\n rating: 0,\n showOpinion: false,\n summarySuccessModalState: false,\n summaryFailureModalState: false,\n receiptFailureModalState: false,\n receiptSuccessState: false\n});\n\nconst reducer = (state = initialState, action) => {\n let newState = state;\n switch (action.type) {\n case constants.SET_RATING:\n newState = newState.set(\"rating\", action.starsSelected);\n return newState;\n case constants.SET_DISPLAY_VALUE:\n newState = newState.set(\"showOpinion\", action.value);\n return newState;\n case constants.TOGGLE_SUMMARY_SUCCESS_MODAL:\n newState = newState.set(\"summarySuccessModalState\", action.payload);\n return newState;\n case constants.TOGGLE_SUMMARY_FAILURE_MODAL:\n newState = newState.set(\"summaryFailureModalState\", action.payload);\n return newState;\n case constants.POST_RECEIPT:\n newState = newState.set(\"receiptLoading\", true);\n return newState;\n case constants.POST_RECEIPT_SUCCESS:\n newState = newState.set(\"receiptLoading\", false);\n newState = newState.set(\"receiptSuccessState\", action.payload);\n return newState;\n case constants.TOGGLE_RECEIPT_FAILURE_MODAL:\n newState = newState.set(\"receiptLoading\", false);\n newState = newState.set(\"receiptSuccessState\", false);\n newState = newState.set(\"receiptFailureModalState\", action.payload);\n return newState;\n default:\n return newState;\n }\n};\n\nexport default { reducer };\n","import { call, put, select, takeLatest } from \"redux-saga/effects\";\nimport { getFormValues } from \"redux-form\";\nimport {\n SUMMARY_SUBMITTED,\n RECEIPT_SUBMITTED,\n POST_RECEIPT_SUCCESS,\n TOGGLE_RECEIPT_FAILURE_MODAL,\n POST_RECEIPT\n} from \"./constants\";\nimport selectors from \"./selectors\";\nimport service from \"./service\";\nimport actions from \"./actions\";\nimport activeOrderSelectors from \"../activeOrder/selectors\";\nimport validators from \"./validators\";\nimport toggleLoading from \"../loading/actions\";\nimport logErrorHelper from \"../../helpers/logErrorHelper\";\n\nconst { toggleSummarySuccessModal } = actions;\nconst { getRating } = selectors;\nconst { getOrder } = activeOrderSelectors;\nconst { postReview, postReceipt } = service;\nconst { validateEmail } = validators;\n\nfunction* submitSummaryWorker() {\n const urlParams = new URLSearchParams(window.location.search);\n const token = urlParams.get(\"token\");\n try {\n const order = yield select(getOrder);\n const opinionFormValue = yield select(getFormValues(\"receiptForm\"));\n const rating = yield select(getRating);\n let summaryBody;\n if (opinionFormValue) {\n summaryBody = {\n missionId: order.id,\n rating,\n review: opinionFormValue.message,\n token\n };\n } else {\n summaryBody = {\n request_id: order.id,\n rating,\n token\n };\n }\n yield put(toggleLoading(true));\n yield call(postReview, summaryBody);\n yield put(toggleLoading(false));\n yield put(toggleSummarySuccessModal(true));\n } catch (error) {\n yield put(toggleLoading(false));\n logErrorHelper(error);\n }\n}\n\nfunction* registerEmailWorker() {\n try {\n const order = yield select(getOrder);\n const formValue = yield select(getFormValues(\"receiptForm\"));\n if (\n formValue &&\n !validateEmail(formValue.email) &&\n order &&\n order.damageOrderNumber\n ) {\n const receiptBody = {\n orderNumber: order.damageOrderNumber,\n email: formValue.email\n };\n yield put({ type: POST_RECEIPT });\n const result = yield call(postReceipt, receiptBody);\n if (result.ok) {\n yield put({ type: POST_RECEIPT_SUCCESS, payload: true });\n } else {\n yield put({ type: TOGGLE_RECEIPT_FAILURE_MODAL, payload: true });\n }\n }\n } catch (err) {\n yield put({ type: TOGGLE_RECEIPT_FAILURE_MODAL, payload: true });\n }\n}\n\nfunction* summarySagaWatcher() {\n yield takeLatest(SUMMARY_SUBMITTED, submitSummaryWorker);\n}\n\nfunction* registerEmailSagaWatcher() {\n yield takeLatest(RECEIPT_SUBMITTED, registerEmailWorker);\n}\n\nexport default { summarySagaWatcher, registerEmailSagaWatcher };\n","export const WELCOME_SCREEN_PATH = \"/\";\nexport const OLD_CREATE_ORDER_PATH = \"/createOrder\";\nexport const CREATE_ORDER_PATH = \"/\";\nexport const ACTIVE_ORDER_PATH = \"/activeOrder\";\nexport const SUMMARY_PATH = \"/summary\";\nexport const LOGIN_PATH = \"/login\";\nexport const DISPATCH_POSITION_PATH = \"/dispatchPosition\";\n\nexport const STARTED = \"STARTED\";\nexport const ARRIVED = \"ARRIVED\";\nexport const PREPARE_TRIP_TO_WORKSHOP = \"PREPARE_TRIP_TO_WORKSHOP\";\nexport const PICKEDUP = \"PICKEDUP\";\nexport const DROPPED = \"DROPPED\";\nexport const PENDING = \"PENDING\";\nexport const COMPLETED = \"COMPLETED\";\n\nexport const STOCKHOLM_SUBDOMAIN = \"stockholm\";\nexport const GOTEBORG_SUBDOMAIN = \"goteborg\";\nexport const MALMO_SUBDOMAIN = \"malmo\";\n","export const ARRIVED = \"ARRIVED\";\nexport const COMPLETED = \"COMPLETED\";\nexport const DISPATCH = \"DISPATCH\";\nexport const DROPPED = \"DROPPED\";\nexport const INACTIVITY = \"INACTIVITY\";\nexport const PENDING_DISPATCH = \"PENDING_DISPATCH\";\nexport const PENDING = \"PENDING\";\nexport const PICKEDUP = \"PICKEDUP\";\nexport const PREPARE_TRIP_TO_WORKSHOP = \"PREPARE_TRIP_TO_WORKSHOP\";\nexport const PROVIDER = \"PROVIDER\";\nexport const REJECTED = \"REJECTED\";\nexport const SCHEDULED = \"SCHEDULED\";\nexport const SEARCHING = \"SEARCHING\";\nexport const STARTED = \"STARTED\";\nexport const USER = \"USER\";\nexport const WAITING_FOR_DISPATCH = \"WAITING_FOR_DISPATCH\";\nexport const WEB = \"WEB\";\n\n// GAT 2.0 STATES\nexport const DRIVER_DRIVING_TO_SOURCE = \"DrivingToSource\";\n\nexport const DRIVER_AT_SOURCE = \"DriverAtSource\";\nexport const DRIVER_PREPARE_DRIVE_TO_DESTINATION = \"PrepareDriveToDestination\";\n\nexport const DRIVER_DRIVING_TO_DESTINATION = \"DrivingToDestination\";\nexport const DRIVER_AT_DESTINATION = \"DriverAtDestination\";\n\nexport const CANCELLED = \"Cancelled\";\n\nexport const FINISHED = \"Finished\";\n\nexport const DEBRIEFED = \"Debriefed\";\n\nexport const REVIEW_MISSION_SUMMARY = \"ReviewMissionSummary\";\n\nexport const MISSION_NOT_STARTED = \"NotStarted\";\n\nexport const MISSION_CREATED = \"Created\";\n\nexport const WAITING_FOR_DRIVER_ACCEPT = \"WaitingForDriverAccept\";\n\nexport const WAITING_FOR_CUSTOMER_ACCEPT = \"WaitingForCustomerAccept\";\n","const getLoading = ({ loading }) => loading.get(\"isLoading\");\n\nexport default {\n getLoading\n};\n","const TOGGLE_LOADING = \"TOGGLE_LOADING\";\n\nexport default TOGGLE_LOADING;\n","export const CAR_POSITION_VIEW = \"CAR_POSITION_VIEW\";\nexport const CONFIRM_ORDER_VIEW = \"CONFIRM_ORDER_VIEW\";\nexport const CUSTOMER_DETAILS_VIEW = \"CUSTOMER_DETAILS_VIEW\";\nexport const DAMAGE_REASON_VIEW = \"DAMAGE_REASON_VIEW\";\nexport const ESTIMATE_PRICE_VIEW = \"ESTIMATE_PRICE_VIEW\";\nexport const SEEKING_RESPONDER_VIEW = \"SEEKING_RESPONDER_VIEW\";\nexport const USER_TERMS_VIEW = \"USER_TERMS_VIEW\";\nexport const TMA_CAR_TERMS_VIEW = \"TMA_CAR_TERMS_VIEW\";\nexport const WELCOME_SCREEN_VIEW = \"WELCOME_SCREEN_VIEW\";\n","const getCurrentView = ({ createOrder }) =>\n createOrder.getIn([\"view\", \"current\"]);\n\nconst getNextView = ({ createOrder }) => createOrder.getIn([\"view\", \"next\"]);\n\nconst getPreviousView = ({ createOrder }) =>\n createOrder.getIn([\"view\", \"previous\"]);\n\nconst getModalBackView = ({ createOrder }) =>\n createOrder.getIn([\"view\", \"current\"]);\n\nconst getEstimateAssistancePrice = ({ createOrder }) =>\n createOrder.get(\"estimateAssistancePrice\");\n\nconst getEstimateTowingPrice = ({ createOrder }) =>\n createOrder.get(\"estimateTowingPrice\");\n\nconst getEstimateCalculatedAssistancePrice = ({ createOrder }) =>\n createOrder.get(\"estimateCalculatedAssistancePrice\");\n\nconst getEstimateCalculatedTowingPrice = ({ createOrder }) =>\n createOrder.get(\"estimateCalculatedTowingPrice\");\n\nconst getEstimateTime = ({ createOrder }) =>\n createOrder.getIn([\"estimateTime\", \"seconds\"]);\n\nconst getCustomerType = ({ createOrder }) =>\n createOrder.getIn([\"customerType\"]);\n\nconst getFinalPriceLoading = ({ createOrder }) =>\n createOrder.get(\"fetchingFinalPrice\");\n\nconst getFinalPrice = ({ createOrder }) => createOrder.get(\"finalPrice\");\n\nconst getLoading = ({ createOrder }) => createOrder.get(\"loading\");\n\nconst getNoConfirmationModalState = ({ createOrder }) =>\n createOrder.get(\"noConfirmationModalState\");\n\nconst getUnexpectedErrorModalState = ({ createOrder }) =>\n createOrder.get(\"unexpectedErrorModalState\");\n\nconst getAlreadyStartedErrorModalState = ({ createOrder }) =>\n createOrder.get(\"alreadyStartedErrorModalState\");\n\nconst getToggleFormValue = ({ createOrder }) => createOrder.get(\"toggleForm\");\n\nconst getSocialNumberFieldError = ({ createOrder }) =>\n createOrder.get(\"socialNumberFieldError\");\n\nconst getRegnoFieldError = ({ createOrder }) =>\n createOrder.get(\"regnoFieldError\");\n\nconst getShowTowDestinationPicker = ({ createOrder }) =>\n createOrder.getIn([\"towDestination\", \"showTowDestination\"]);\n\nconst getShowPreviousEstimate = ({ createOrder }) =>\n createOrder.getIn([\"previousEstimate\", \"show\"]);\n\nconst getPreviousEstimatePrice = ({ createOrder }) =>\n createOrder.getIn([\"previousEstimate\", \"price\"]);\n\nconst getSearchPlacesResult = ({ createOrder }) =>\n createOrder.get(\"searchPlacesResult\");\n\nconst getIsCustomer = ({ createOrder }) => createOrder.get(\"isCustomer\");\n\nconst getIsFetchingVehicle = ({ createOrder }) =>\n createOrder.get(\"isFetchingVehicle\");\n\nconst getIsFetchingPerson = ({ createOrder }) =>\n createOrder.get(\"isFetchingPerson\");\n\nconst getCancelledByDispatchModalState = ({ createOrder }) =>\n createOrder.get(\"cancelledByDispatchModalState\");\n\nconst getDispatchWillCallModalState = ({ createOrder }) =>\n createOrder.get(\"dispatchWillCallModalState\");\n\nconst getHasPreviousVehiclePositionChanged = ({ createOrder }) =>\n createOrder.get(\"hasPreviousVehiclePositionChanged\");\n\nconst getVehicleCoords = ({ createOrder }) =>\n createOrder.get(\"vehiclePosition\");\n\nconst getNoEstimateReason = ({ createOrder }) =>\n createOrder.get(\"noEstimateReason\");\n\nconst getEstimatePriceCollectedCoords = ({ createOrder }) =>\n createOrder.get(\"estimatePriceCollectedCoords\");\n\nconst getDamageReasons = ({ createOrder }) => createOrder.get(\"damageReasons\");\n\nconst selectConfinedSpaces = ({ createOrder }) =>\n createOrder.get(\"confinedSpaces\");\n\nconst selectVehicleInsuranceLevels = ({ createOrder }) =>\n createOrder.get(\"insuranceLevels\");\n\nconst isCookiesAccepted = ({ createOrder }) => createOrder.get(\"isAccepted\");\n\nexport default {\n getDamageReasons,\n getCurrentView,\n getNextView,\n getPreviousView,\n getModalBackView,\n getEstimateAssistancePrice,\n getEstimateTowingPrice,\n getEstimateCalculatedAssistancePrice,\n getEstimateCalculatedTowingPrice,\n getEstimateTime,\n getCustomerType,\n getFinalPriceLoading,\n getFinalPrice,\n getLoading,\n getNoConfirmationModalState,\n getUnexpectedErrorModalState,\n getAlreadyStartedErrorModalState,\n getToggleFormValue,\n getSocialNumberFieldError,\n getRegnoFieldError,\n getShowTowDestinationPicker,\n getShowPreviousEstimate,\n getPreviousEstimatePrice,\n getSearchPlacesResult,\n getIsCustomer,\n getIsFetchingVehicle,\n getIsFetchingPerson,\n getCancelledByDispatchModalState,\n getDispatchWillCallModalState,\n getHasPreviousVehiclePositionChanged,\n getVehicleCoords,\n getNoEstimateReason,\n getEstimatePriceCollectedCoords,\n selectConfinedSpaces,\n selectVehicleInsuranceLevels,\n isCookiesAccepted\n};\n","import { createBrowserHistory } from \"history\";\n\nconst history = createBrowserHistory();\n\nexport default history;\n","module.exports = __webpack_public_path__ + \"static/media/gat_symbol_animate.837bc86e.svg\";","module.exports = __webpack_public_path__ + \"static/media/search-dark.cac6aa2f.svg\";","module.exports = __webpack_public_path__ + \"static/media/location-pin.2811e8c1.svg\";","module.exports = __webpack_public_path__ + \"static/media/pin.cd565f5f.svg\";","module.exports = __webpack_public_path__ + \"static/media/car-position-icon.50030d11.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow-down.a784f458.svg\";","export function setCookie(cookie) {\n const { name, val } = cookie;\n document.cookie = `${name}=${val}`;\n}\n\nexport function getCookie(a) {\n const b = document.cookie.match(`(^|[^;]+)\\\\s*${a}\\\\s*=\\\\s*([^;]+)`);\n return b ? b.pop() : null;\n}\n\nexport function deleteCookie(name) {\n document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:01 GMT;`;\n}\n","module.exports = __webpack_public_path__ + \"static/media/star-solid.34bfb7fe.svg\";","module.exports = __webpack_public_path__ + \"static/media/star.caad7ec9.svg\";","import TOGGLE_LOADING from \"./constants\";\n\nexport default function toggleLoading(bool) {\n return {\n type: TOGGLE_LOADING,\n payload: bool,\n };\n}\n","module.exports = __webpack_public_path__ + \"static/media/arrow-down-outline.b60cb441.svg\";","module.exports = __webpack_public_path__ + \"static/media/DINPro-Bold_13934.05078759.ttf\";","module.exports = __webpack_public_path__ + \"static/media/DINPro-Regular_13937.86fda987.ttf\";","module.exports = __webpack_public_path__ + \"static/media/DINPro-Light_13935.e0be9bd5.ttf\";","module.exports = __webpack_public_path__ + \"static/media/DINPro-Medium_13936.48a3635c.ttf\";","import legacyApi, { legacyGetBaseUrl } from \"../../../helpers/legacyApiHelper\";\nimport { BaseUrl, GET } from \"../../../constants/apiConstants\";\nimport services from \"../service\";\n\nconst MISSIONS_SUMMARY = \"v1/missions/summary\";\nconst USER_ASSISTANCE_RATE = \"user/assistance/rate\";\n\nconst getSummary = damageOrderNumber => {\n const url = `${legacyGetBaseUrl(\n BaseUrl.AbUrl\n )}${MISSIONS_SUMMARY}?damageOrderNumber=${damageOrderNumber}`;\n return fetch(url, { method: GET })\n .then(res => {\n return res.json();\n })\n .catch(err => {\n throw err;\n });\n};\n\nconst postOpinion = async body => {\n const urlParams = new URLSearchParams(window.location.search);\n\n const params = {\n id: urlParams.get(\"id\"),\n regno: urlParams.get(\"regno\"),\n phone: urlParams.get(\"phone\")\n };\n const dispatchToken = await services.fetchToken({\n mobile: params.phone,\n regno: params.regno\n });\n\n return legacyApi\n .post(\n `${USER_ASSISTANCE_RATE}`,\n BaseUrl.RescueUrl,\n {\n rating: body.rating,\n request_id: body.request_id,\n comment: body.comment\n },\n dispatchToken\n )\n .then(res => {\n return res;\n })\n .catch(err => {\n throw err;\n });\n};\n\nexport default { getSummary, postOpinion };\n","/* global google */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport PlacesAutocomplete, {\n geocodeByAddress,\n getLatLng\n} from \"react-places-autocomplete\";\nimport { connect } from \"react-redux\";\nimport { injectIntl } from \"react-intl\";\nimport locationPin from \"../../assets/images/location-pin.svg\";\nimport searchImage from \"../../assets/images/search-dark.svg\";\nimport actions from \"../../features/createOrder/actions\";\nimport serveActions from \"../../features/welcomeScreen/actions\";\nimport LoadingSpinner from \"../LoadingSpinner/LoadingSpinner\";\nimport logErrorHelper from \"../../helpers/logErrorHelper\";\nimport addressComponentsHelper from \"../../helpers/addressComponentsHelper\";\n\nimport \"./style.css\";\n\nconst { setSearchPlacesResult } = actions;\n\nconst { setPositionToServe } = serveActions;\n\nclass LocationSearchInput extends React.Component {\n constructor(props) {\n super(props);\n this.state = { value: \"\", showError: false, addressComponents: {} };\n }\n\n setAddressComponents = data => {\n this.setState({ addressComponents: data });\n };\n\n handleChange = result => {\n this.handleSetError(false);\n this.setState({ value: result });\n };\n\n handleSetError = bool => {\n this.setState({ showError: bool });\n };\n\n // If user hits enter key then placeId will be null\n handleSelect = (address, placeId) => {\n if (!placeId) {\n this.handleChange(\"\");\n this.handleSetError(true);\n return;\n }\n this.handleSetError(false);\n const {\n saveSearchPlacesResult,\n map,\n showSearchField,\n setPositionToServe\n } = this.props;\n geocodeByAddress(address)\n .then(results => {\n this.handleChange(results[0].formatted_address);\n this.setAddressComponents(addressComponentsHelper(results));\n return getLatLng(results[0]);\n })\n .then(latLng => {\n const { addressComponents, value } = this.state;\n console.log(\"addressComponents\", addressComponents);\n saveSearchPlacesResult({\n addressComponents: { ...addressComponents },\n address: value,\n lat: latLng.lat,\n lng: latLng.lng\n });\n setPositionToServe({\n lat: latLng.lat,\n lng: latLng.lng,\n address:\n `${addressComponents.route} ${addressComponents.streetNumber}` ||\n addressComponents.streetAddress,\n zipCode: addressComponents.postalCode,\n city: addressComponents.postalTown\n });\n const currentLatLng = new google.maps.LatLng({\n lat: latLng.lat,\n lng: latLng.lng\n });\n showSearchField();\n map.panTo(currentLatLng);\n })\n .catch(error => {\n logErrorHelper(error);\n });\n };\n\n render() {\n const searchOptions = {\n types: [\"address\"]\n // componentRestrictions: { country: \"swe\" }\n };\n\n const { value, showError } = this.state;\n const { intl, placeholder: message } = this.props;\n\n return (\n 1}\n >\n {({ getInputProps, suggestions, getSuggestionItemProps, loading }) => (\n
\n
\n {loading && (\n \n )}\n \n \n {showError && (\n \n {intl.formatMessage({\n id: \"DispatchPosition.CarPosition.ErrorMessage\",\n defaultMessage: \"Choose a valid address\",\n description: \"CarPosition.ErrorMessage: choose option\"\n })}\n \n )}\n
\n {suggestions.map(suggestion => {\n const className = suggestion.active\n ? \"suggestion-item--active\"\n : \"suggestion-item\";\n const style = suggestion.active\n ? {\n cursor: \"pointer\",\n padding: \"10px 8px\"\n }\n : {\n cursor: \"pointer\",\n padding: \"10px 8px\"\n };\n return (\n \n \n {suggestion.description}\n
\n );\n })}\n
\n
\n
\n )}\n \n );\n }\n}\n\nLocationSearchInput.propTypes = {\n saveSearchPlacesResult: PropTypes.func.isRequired,\n setPositionToServe: PropTypes.func.isRequired,\n map: PropTypes.shape({\n panTo: PropTypes.func\n }).isRequired,\n showSearchField: PropTypes.func.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired,\n placeholder: PropTypes.string.isRequired\n};\n\nconst mapDispatchToProps = dispatch => ({\n saveSearchPlacesResult: address => dispatch(setSearchPlacesResult(address)),\n setPositionToServe: position => dispatch(setPositionToServe(position))\n});\n\nexport default injectIntl(\n connect(undefined, mapDispatchToProps)(LocationSearchInput)\n);\n","export default function addressComponentsHelper(results) {\n let street;\n let streetNumber;\n let route;\n let postalTown;\n let postalCode;\n let country;\n let streetAddress;\n let area;\n let formattedAddress;\n\n if (results) {\n results[0].address_components.forEach(adressComponent => {\n if (adressComponent.types.includes(\"street\")) {\n street = adressComponent.long_name;\n } else if (adressComponent.types.includes(\"street_number\")) {\n streetNumber = adressComponent.long_name;\n } else if (adressComponent.types.includes(\"route\")) {\n route = adressComponent.long_name;\n } else if (adressComponent.types.includes(\"postal_town\")) {\n postalTown = adressComponent.long_name;\n } else if (adressComponent.types.includes(\"postal_code\")) {\n postalCode = adressComponent.long_name;\n } else if (adressComponent.types.includes(\"country\")) {\n country = adressComponent.long_name;\n } else if (adressComponent.types.includes(\"locality\")) {\n postalTown = adressComponent.long_name;\n } else if (adressComponent.types.includes(\"city\")) {\n postalTown = adressComponent.long_name;\n }\n });\n\n if (street) {\n streetAddress = streetNumber ? `${street} ${streetNumber}` : street;\n } else if (route) {\n streetAddress = streetNumber ? `${route} ${streetNumber}` : route;\n } else {\n streetAddress = \"\";\n }\n if (postalTown) {\n area = postalCode ? `${postalCode} ${postalTown}` : postalTown;\n } else if (postalCode) {\n area = postalCode;\n } else {\n area = \"\";\n }\n\n if (streetAddress) {\n formattedAddress = area ? `${streetAddress}, ${area}` : streetAddress;\n } else if (area) {\n formattedAddress = streetAddress ? `${streetAddress}, ${area}` : area;\n }\n if (country) {\n if (area) {\n area += `, ${country}`;\n }\n if (formattedAddress) {\n formattedAddress += `, ${country}`;\n }\n }\n\n return {\n street: street || \"\",\n streetNumber: streetNumber || \"\",\n route: route || \"\",\n postalTown: postalTown || \"\",\n postalCode: postalCode || \"\",\n country: country || \"\",\n streetAddress,\n area,\n formattedAddress: formattedAddress || \"\"\n };\n }\n return null;\n}\n","import styled from \"styled-components\";\nimport { Card } from \"@assistansbolaget/gat-components\";\n\nconst PositionInputContainer = styled(Card)`\n width: 310px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 1.5rem;\n padding: 24px;\n`;\n\nexport default PositionInputContainer;\n","/* global google */\nimport React, { useState } from \"react\";\nimport { compose, withProps } from \"recompose\";\nimport {\n GoogleMap,\n Marker,\n withGoogleMap,\n withScriptjs\n} from \"react-google-maps\";\nimport { Button } from \"@assistansbolaget/gat-components\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCarBurst } from \"@fortawesome/pro-light-svg-icons\";\nimport { useIntl } from \"react-intl\";\nimport LocationSearchInput from \"../../components/LocationSearchInput/LocationSearchInput\";\nimport { GOOGLE_MAP_URL } from \"../../constants/apiConstants\";\nimport { SWEDEN_LAT_LNG, DENMARK_LAT_LNG } from \"../../helpers/locations\";\nimport { directionsMapOptions } from \"../background/defaultMapOptions\";\nimport location from \"../../assets/images/car-position-icon.svg\";\nimport LoadingSpinner from \"../../components/LoadingSpinner/LoadingSpinner\";\nimport locationPinLogo from \"../../assets/images/pin.svg\";\nimport \"./style.css\";\nimport PositionInputContainer from \"./CarPositionPresentation.style\";\nimport {\n CONFIRM_ORDER_VIEW,\n CUSTOMER_DETAILS_VIEW\n} from \"../createOrder/viewConstants\";\nimport { getSession, SESSION_KEYS } from \"../../helpers/sessionStore\";\n\nconst CarPositionPresentation = compose(\n withProps({\n googleMapURL: GOOGLE_MAP_URL,\n loadingElement:
,\n containerElement:
,\n mapElement:
\n }),\n withScriptjs,\n withGoogleMap\n)(props => {\n const [showSearchField, setShowSearchField] = useState(false);\n const appId = getSession(SESSION_KEYS.appId);\n\n const intl = useIntl();\n\n const handleShowSearchField = bool => {\n setShowSearchField(bool);\n };\n\n const handleSaveButton = () => {\n if (props.previousView === CONFIRM_ORDER_VIEW) {\n props.saveDestinationChange({\n lat: props.map.getCenter().lat(),\n lng: props.map.getCenter().lng()\n });\n return props.handleNavigationButton(CONFIRM_ORDER_VIEW);\n }\n if (props.handleSaveButton) {\n return props.handleSaveButton();\n }\n\n return props.handleNavigationButton(CUSTOMER_DETAILS_VIEW);\n };\n\n const handleBackButton = () => {\n const { previousView } = props;\n if (previousView === CONFIRM_ORDER_VIEW) {\n props.saveCenter(null);\n return props.handleNavigationButton(CONFIRM_ORDER_VIEW);\n }\n return null;\n };\n\n let accuracy;\n if (props.geoCoordinates && props.geoCoordinates.accuracy >= 10) {\n accuracy = 10;\n } else {\n // eslint-disable-next-line\n accuracy = props.geoCoordinates.accuracy;\n }\n\n let zoomLevel;\n\n if (props.map) {\n zoomLevel = props.map.getZoom();\n }\n\n // eslint-disable-next-line\n let markerCoords = { lat: 0, lng: 0 };\n if (props.centerCoords && props.centerCoords.lat) {\n markerCoords = {\n lat: props.centerCoords.lat,\n lng: props.centerCoords.lng\n };\n }\n let geoCoords = { lat: 0, lng: 0 };\n\n let defaultCenter = {};\n\n if (props.centerCoords && props.centerCoords.lat) {\n defaultCenter = {\n lat: props.centerCoords.lat,\n lng: props.centerCoords.lng\n };\n } else if (props.geoCoordinates && props.geoCoordinates.latitude) {\n defaultCenter = {\n lat: props.geoCoordinates.latitude,\n lng: props.geoCoordinates.longitude\n };\n } else {\n defaultCenter =\n appId === \"gat-rescue-frontend\" ? SWEDEN_LAT_LNG : DENMARK_LAT_LNG;\n }\n\n if (props.geoCoordinates && props.geoCoordinates.latitude) {\n geoCoords = {\n lat: props.geoCoordinates.latitude,\n lng: props.geoCoordinates.longitude\n };\n }\n let address;\n if (props.vehiclePosition && props.vehiclePosition.address) {\n if (props.vehiclePosition.address.length >= 27) {\n address = `${props.vehiclePosition.address.substring(0, 27)}...`;\n }\n if (\n props.vehiclePosition.city !== \"\" &&\n props.vehiclePosition.zipCode !== \"\"\n ) {\n const fullAddress = `${props.vehiclePosition.address}, ${props.vehiclePosition.zipCode} ${props.vehiclePosition.city}`;\n if (fullAddress.length > 27) {\n address = `${fullAddress.substring(0, 27)}...`;\n } else {\n // eslint-disable-next-line\n address = props.vehiclePosition.address;\n }\n }\n }\n const hasAddress =\n props.vehiclePosition &&\n props.vehiclePosition.address &&\n !props.isFetchingReverseGeoCode;\n\n const messageToDisplay =\n props.previousView !== CONFIRM_ORDER_VIEW\n ? intl.formatMessage({\n id: \"DispatchPosition.CarPosition.Placeholder\",\n defaultMessage: \"Your position?\",\n description: \"CarPosition.Placeholder: your position\"\n })\n : intl.formatMessage({\n id: \"DispatchPosition.DestinationInput.Placeholder\",\n defaultMessage: \"Your destination?\",\n description: \"CarPosition.Placeholder: your destination\"\n });\n\n return (\n <>\n
\n \n
\n \n
\n

\n {props.previousView === CONFIRM_ORDER_VIEW\n ? intl.formatMessage({\n id: \"DispatchPosition.Destination\",\n defaultMessage: \"Destination\",\n description: \"dispatchPosition: destination\"\n })\n : intl.formatMessage({\n id: \"DispatchPosition.Title\",\n defaultMessage: \"Vehicle position\",\n description: \"dispatchPosition: title\"\n })}\n

\n
\n
\n {!showSearchField ? (\n handleShowSearchField(true)}\n onKeyDown={() => handleShowSearchField(true)}\n >\n
\n \n {hasAddress ? (\n address\n ) : (\n \n )}\n
\n
\n ) : (\n props.saveCenter()}\n map={props.map}\n showSearchField={() => handleShowSearchField(false)}\n placeholder={messageToDisplay}\n />\n )}\n
\n \n {intl\n .formatMessage({\n id: \"general.confirm\",\n defaultMessage: \"Confirm\",\n description: \"Confirm\"\n })\n .toUpperCase()}\n \n {props.previousView === CONFIRM_ORDER_VIEW && (\n \n {intl\n .formatMessage({\n id: \"general.goBack\",\n defaultMessage: \"Go back\",\n description: \"Go back\"\n })\n .toUpperCase()}\n \n )}\n
\n \n
\n {\n props.saveMap(map);\n }}\n onZoomChanged={() => {\n handleShowSearchField(false);\n if (props.centerCoords) {\n props.saveCenter(null);\n }\n }}\n onDragStart={() => {\n handleShowSearchField(false);\n if (props.centerCoords) {\n props.saveCenter(null);\n }\n }}\n defaultCenter={{ lat: defaultCenter.lat, lng: defaultCenter.lng }}\n defaultZoom={14}\n defaultOptions={directionsMapOptions}\n onIdle={() => {\n props.saveCenter({\n lat: props.map.getCenter().lat(),\n lng: props.map.getCenter().lng()\n });\n }}\n >\n \"location\n \n \n \n \n );\n});\n\nexport default CarPositionPresentation;\n","import { fromJS } from \"immutable\";\nimport TOGGLE_LOADING from \"./constants\";\n\nconst initialState = fromJS({\n isLoading: false,\n});\n\nconst reducer = (state = initialState, action) => {\n let newState = state;\n switch (action.type) {\n case TOGGLE_LOADING:\n newState = newState.set(\"isLoading\", action.payload);\n return newState;\n default:\n return newState;\n }\n};\n\nexport default { reducer };\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport selectors from \"./selectors\";\nimport gatLoader from \"../../assets/images/gat_symbol_animate.svg\";\n\nconst { getLoading } = selectors;\n\nconst Loading = ({ loading }) => {\n return (\n <>\n {loading && (\n
\n
\n \"loading\"\n
\n
\n )}\n \n );\n};\n\nLoading.propTypes = {\n loading: PropTypes.bool.isRequired\n};\n\nconst mapStateToProps = state => ({\n loading: getLoading(state)\n});\n\nexport default connect(mapStateToProps, null)(Loading);\n","const formatPrice = price =>\n new Intl.NumberFormat(\"sv-SE\", { maximumFractionDigits: 0 }).format(price);\n\nexport default formatPrice;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport \"./style.css\";\nimport { Button } from \"@assistansbolaget/gat-components\";\n\nfunction NextStepButton({ nextStep, nextStepText, disabled, id }) {\n return (\n \n {nextStepText}\n \n );\n}\n\nNextStepButton.defaultProps = {\n disabled: false,\n id: \"\"\n};\n\nNextStepButton.propTypes = {\n nextStep: PropTypes.func.isRequired,\n nextStepText: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n id: PropTypes.string\n};\n\nexport default NextStepButton;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport PlacesAutocomplete, {\n geocodeByAddress,\n getLatLng\n} from \"react-places-autocomplete\";\nimport languageHelper from \"../../helpers/languageHelper\";\nimport actions from \"./actions\";\nimport selectors from \"./selectors\";\nimport welcomeScreenSelectors from \"../welcomeScreen/selectors\";\nimport welcomeScreenActions from \"../welcomeScreen/actions\";\nimport searchImage from \"../../assets/images/search-dark.svg\";\nimport locationPin from \"../../assets/images/location-pin.svg\";\nimport logErrorHelper from \"../../helpers/logErrorHelper\";\n\nimport \"../../components/LocationSearchInput/style.css\";\n\nconst language = languageHelper();\n\nconst {\n toggleEstimateDestination,\n estimateDestinationPrice,\n estimatePrice,\n setShowPreviousPrice\n} = actions;\n\nconst { getShowTowDestinationPicker, getShowPreviousEstimate } = selectors;\nconst { getShopCoordinates, getVehiclePosition } = welcomeScreenSelectors;\nconst { handleUnsavedShopPosition } = welcomeScreenActions;\n\nclass EstimateDestination extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n address: \"\",\n name: null,\n data: null,\n showUndoButton: false,\n canSave: false,\n formattedAddress: \"\"\n };\n }\n\n componentDidMount() {\n const {\n showPreviousEstimate,\n showTowDestinationPicker,\n getShopLocation\n } = this.props;\n\n if (showTowDestinationPicker && !showPreviousEstimate) {\n this.setShowUndo(false);\n this.setAllowSave(false);\n this.handleChange(\"\");\n } else if (showTowDestinationPicker && showPreviousEstimate) {\n this.setShowUndo(true);\n this.setAllowSave(false);\n const shopLocationAddress =\n getShopLocation.address.length > 32\n ? `${getShopLocation.address.substring(0, 32)}...`\n : getShopLocation.address;\n this.handleChange(shopLocationAddress);\n } else if (!showTowDestinationPicker && !showPreviousEstimate) {\n this.setShowUndo(false);\n this.setAllowSave(false);\n }\n }\n\n setGoogleResponse = result => this.setState({ data: result });\n\n setWorkShopName = workshopName => this.setState({ name: workshopName });\n\n setFormattedAddress = fAddress =>\n this.setState({ formattedAddress: fAddress });\n\n handleChange = address => {\n this.setState({ address });\n };\n\n setShowUndo = value => {\n this.setState({ showUndoButton: value });\n };\n\n setAllowSave = value => {\n this.setState({ canSave: value });\n };\n\n handleSetError = bool => {\n this.setState({ showError: bool });\n };\n\n // If user hits enter key then placeId will be null\n handleSelect = (address, placeId) => {\n const { setUnsavedShopPosition } = this.props;\n const splitAdress = address.split(\",\");\n const workshopName = splitAdress[0];\n\n if (!placeId) {\n this.handleChange(\"\");\n this.handleSetError(true);\n return;\n }\n this.handleSetError(false);\n\n geocodeByAddress(address)\n .then(results => {\n let inputFieldValue;\n const formattedAddress = results[0].formatted_address;\n this.setFormattedAddress(formattedAddress);\n const splitFormattedAddress = formattedAddress.split(\",\");\n const index0 = splitFormattedAddress[0];\n\n if (\n index0 !== workshopName &&\n results[0].types.includes(\"car_repair\")\n ) {\n inputFieldValue = `${workshopName}, ${formattedAddress}`;\n this.setWorkShopName(workshopName);\n } else {\n inputFieldValue = formattedAddress;\n this.setWorkShopName(null);\n }\n const formattedInputFieldValue =\n inputFieldValue.length > 32\n ? `${inputFieldValue.substring(0, 32)}...`\n : inputFieldValue;\n this.handleChange(formattedInputFieldValue);\n this.setGoogleResponse(results);\n return getLatLng(results[0]);\n })\n .then(latLng => {\n const { formattedAddress, data, name } = this.state;\n const shopPosition = {\n latitude: latLng.lat,\n longitude: latLng.lng,\n name,\n formattedAddress,\n data\n };\n setUnsavedShopPosition(shopPosition);\n this.setAllowSave(true);\n })\n .catch(error => {\n logErrorHelper(error);\n });\n };\n\n render() {\n const {\n toggleSetDestination,\n showTowDestinationPicker,\n getEstimatePrice,\n getEstimateDestinationPrice,\n showPreviousPrice,\n showPreviousEstimate,\n vehiclePosition\n } = this.props;\n\n const searchOptions = {\n location: new window.google.maps.LatLng(\n vehiclePosition.lat,\n vehiclePosition.lng\n ),\n radius: 20000\n // componentRestrictions: { country: \"swe\" },\n };\n\n const { address, showError, showUndoButton, canSave } = this.state;\n const opacity = !canSave ? 0.5 : 1;\n return (\n
\n {showTowDestinationPicker ? (\n <>\n {!showPreviousEstimate && (\n 1}\n >\n {({ getInputProps, suggestions, getSuggestionItemProps }) => (\n
\n
\n \n \n {showError && (\n \n {language.carPositionPicker.searchError}\n \n )}\n
\n {suggestions.map(suggestion => {\n const className = suggestion.active\n ? \"flex align-center suggestion-item--active\"\n : \"flex align-center suggestion-item\";\n const style = suggestion.active\n ? {\n backgroundColor: \"#fafafa\",\n cursor: \"pointer\",\n padding: \"4px 4px\"\n }\n : {\n backgroundColor: \"#ffffff\",\n cursor: \"pointer\",\n padding: \"4px 4px\"\n };\n return (\n \n \n {suggestion.description}\n
\n );\n })}\n
\n
\n
\n )}\n \n )}\n\n {showUndoButton ? (\n {\n showPreviousPrice(false);\n this.setShowUndo(false);\n toggleSetDestination();\n getEstimatePrice();\n }}\n >\n {language.createOrder.estimatePrice.destinationButtonUndo}\n \n ) : (\n {\n showPreviousPrice(true);\n this.setShowUndo(true);\n this.setAllowSave(false);\n getEstimateDestinationPrice();\n }}\n style={{ opacity, width: \"100%\" }}\n >\n {language.createOrder.estimatePrice.destinationButtonSave}\n \n )}\n \n ) : (\n {\n toggleSetDestination();\n this.handleChange(\"\");\n }}\n >\n {language.createOrder.estimatePrice.destinationButtonOpen}\n \n )}\n
\n );\n }\n}\nEstimateDestination.propTypes = {\n toggleSetDestination: PropTypes.func.isRequired,\n showTowDestinationPicker: PropTypes.bool.isRequired,\n showPreviousEstimate: PropTypes.bool.isRequired,\n getShopLocation: PropTypes.shape({\n latitude: PropTypes.number,\n longitude: PropTypes.number,\n address: PropTypes.string\n }).isRequired,\n setUnsavedShopPosition: PropTypes.func.isRequired,\n getEstimatePrice: PropTypes.func.isRequired,\n getEstimateDestinationPrice: PropTypes.func.isRequired,\n showPreviousPrice: PropTypes.func.isRequired,\n vehiclePosition: PropTypes.shape({\n lat: PropTypes.number,\n lng: PropTypes.number\n }).isRequired\n};\n\nconst mapStateToProps = state => ({\n showTowDestinationPicker: getShowTowDestinationPicker(state),\n getShopLocation: getShopCoordinates(state),\n showPreviousEstimate: getShowPreviousEstimate(state),\n vehiclePosition: getVehiclePosition(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n toggleSetDestination: () => dispatch(toggleEstimateDestination()),\n setUnsavedShopPosition: pos => dispatch(handleUnsavedShopPosition(pos)),\n getEstimatePrice: () => dispatch(estimatePrice()),\n getEstimateDestinationPrice: () => dispatch(estimateDestinationPrice()),\n showPreviousPrice: show => dispatch(setShowPreviousPrice(show))\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(EstimateDestination);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport moment from \"moment\";\nimport actions from \"./actions\";\nimport selectors from \"./selectors\";\nimport welcomeScreenSelectors from \"../welcomeScreen/selectors\";\nimport languageHelper from \"../../helpers/languageHelper\";\nimport formatPrice from \"../../helpers/formatPrice\";\nimport { DAMAGE_REASON_VIEW, SEEKING_RESPONDER_VIEW } from \"./viewConstants\";\nimport CardBoxContainer from \"../../components/CardBoxContainer/CardBoxContainer\";\nimport NextStepButton from \"../../components/ButtonContainer/NextStepButton\";\nimport EstimateDestination from \"./renderDestinationInput\";\n\nconst language = languageHelper();\n\nconst {\n estimatePrice,\n goBack,\n setCurrentView,\n setPreviousView,\n setNextView,\n goForward,\n toggleEstimateDestination\n} = actions;\n\nconst {\n getEstimateAssistancePrice,\n getEstimateTowingPrice,\n getEstimateTime,\n getNextView,\n getPreviousView,\n getShowTowDestinationPicker,\n getShowPreviousEstimate,\n getPreviousEstimatePrice,\n getHasPreviousVehiclePositionChanged,\n getCustomerType\n} = selectors;\nconst { getVehiclePosition, getShopCoordinates } = welcomeScreenSelectors;\n\nclass EstimatePrice extends React.Component {\n componentDidMount() {\n const {\n getEstimatePrice,\n previousView,\n nextView,\n showPreviousEstimate,\n vehiclePositionHasChanged\n } = this.props;\n previousView();\n nextView();\n if (!showPreviousEstimate || vehiclePositionHasChanged) getEstimatePrice();\n }\n\n render() {\n const {\n estimatedAssistancePrice,\n estimatedTowingPrice,\n estimatedTime,\n vehiclePosition,\n next,\n previous,\n showTowDestinationPicker,\n shopLocation,\n showPreviousEstimate,\n previousEstimatePrice,\n customerType\n } = this.props;\n\n let DisplayDestinationComponent;\n\n if (shopLocation && shopLocation.formattedAddress) {\n const DisplayNameAndCity = (\n {`${shopLocation.name}, ${shopLocation.city}`}\n );\n\n const DisplayNameAndAddress = (\n \n {`${shopLocation.name}, ${shopLocation.formattedAddress.substring(\n 0,\n 14\n )}...`}\n \n );\n\n const DisplayAddress = (\n \n {shopLocation.formattedAddress.length >= 36\n ? `${shopLocation.formattedAddress.substring(0, 36)}...`\n : shopLocation.formattedAddress}\n \n );\n\n if (shopLocation.name && shopLocation.city) {\n DisplayDestinationComponent = DisplayNameAndCity;\n } else if (shopLocation.name && !shopLocation.city) {\n DisplayDestinationComponent = DisplayNameAndAddress;\n } else {\n DisplayDestinationComponent = DisplayAddress;\n }\n }\n\n const d = moment();\n d.add(estimatedTime, \"s\");\n if (\n estimatedTowingPrice === 0 &&\n estimatedAssistancePrice === 0 &&\n estimatedTime === 0\n ) {\n return null;\n }\n\n const engineInsuranceCoverage = customerType === \"ENGINE_INSURANCE\";\n return (\n <>\n \n

\n {showTowDestinationPicker && !showPreviousEstimate\n ? language.createOrder.estimatePrice.titleChange\n : language.createOrder.estimatePrice.title}\n

\n
\n {engineInsuranceCoverage ? (\n language.createOrder.estimatePrice.textEngineInsuranceCoverage\n ) : (\n <>\n {language.createOrder.estimatePrice.text1}\n {` ${formatPrice(\n estimatedAssistancePrice\n )} ${language.currency}. `}\n {language.createOrder.estimatePrice.text2}\n \n {` ${formatPrice(estimatedTowingPrice)} ${\n language.currency\n }.`}\n \n \n )}\n
\n
\n
\n \n {language.createOrder.estimatePrice.suggestedArrival}\n \n {`${\n language.createOrder.estimatePrice.time\n } ${d.format(\"HH:mm\")}`}\n
\n
\n \n {vehiclePosition && vehiclePosition.address.length >= 36\n ? `${vehiclePosition.address.substring(0, 36)}...`\n : vehiclePosition.address}\n \n \n {language.createOrder.preliminary}\n \n
\n
\n
\n
\n
\n \n {language.createOrder.estimatePrice.suggestedAssistancePrice}\n \n\n \n {`${formatPrice(estimatedAssistancePrice)} ${\n language.currency\n }`}\n \n
\n\n
\n \n {vehiclePosition && vehiclePosition.address.length >= 36\n ? `${vehiclePosition.address.substring(0, 36)}...`\n : vehiclePosition.address}\n \n
\n
\n
\n \n
\n \n {language.createOrder.estimatePrice.suggestedShopPrice}\n \n <>\n {showPreviousEstimate && (\n \n {`${formatPrice(previousEstimatePrice)} ${\n language.currency\n }`}\n \n )}\n \n {` ${formatPrice(estimatedTowingPrice)} ${language.currency}`}\n \n \n
\n {((shopLocation &&\n shopLocation.address &&\n !showTowDestinationPicker) ||\n showPreviousEstimate) && (\n
\n {DisplayDestinationComponent}\n
\n )}\n
\n \n \n \n \n );\n }\n}\n\nEstimatePrice.propTypes = {\n previousView: PropTypes.func.isRequired,\n getEstimatePrice: PropTypes.func.isRequired,\n nextView: PropTypes.func.isRequired,\n estimatedAssistancePrice: PropTypes.number.isRequired,\n estimatedTowingPrice: PropTypes.number.isRequired,\n estimatedTime: PropTypes.number.isRequired,\n showTowDestinationPicker: PropTypes.bool.isRequired,\n showPreviousEstimate: PropTypes.bool.isRequired,\n previousEstimatePrice: PropTypes.number.isRequired,\n customerType: PropTypes.string.isRequired,\n vehiclePosition: PropTypes.shape({\n address: PropTypes.string,\n lat: PropTypes.number,\n lng: PropTypes.number,\n town: PropTypes.string,\n zipcode: PropTypes.string\n }).isRequired,\n shopLocation: PropTypes.shape({\n formattedAddress: PropTypes.string,\n latitude: PropTypes.number,\n longitude: PropTypes.number,\n address: PropTypes.string,\n name: PropTypes.string,\n city: PropTypes.string\n }).isRequired,\n next: PropTypes.func.isRequired,\n previous: PropTypes.func.isRequired,\n vehiclePositionHasChanged: PropTypes.bool.isRequired\n};\n\nconst mapStateToProps = state => ({\n next: getNextView(state),\n previous: getPreviousView(state),\n estimatedAssistancePrice: getEstimateAssistancePrice(state),\n estimatedTowingPrice: getEstimateTowingPrice(state),\n estimatedTime: getEstimateTime(state),\n vehiclePosition: getVehiclePosition(state),\n showTowDestinationPicker: getShowTowDestinationPicker(state),\n shopLocation: getShopCoordinates(state),\n showPreviousEstimate: getShowPreviousEstimate(state),\n previousEstimatePrice: getPreviousEstimatePrice(state),\n vehiclePositionHasChanged: getHasPreviousVehiclePositionChanged(state),\n customerType: getCustomerType(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n previousView: () => dispatch(setPreviousView(DAMAGE_REASON_VIEW)),\n nextView: () => dispatch(setNextView(SEEKING_RESPONDER_VIEW)),\n getEstimatePrice: () => dispatch(estimatePrice()),\n previous: () => dispatch(goBack()),\n next: () => dispatch(goForward()),\n handlePreviousButton: previous => dispatch(setCurrentView(previous)),\n toggleSetDestination: () => dispatch(toggleEstimateDestination())\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EstimatePrice);\n","import { isValidPhoneNumber } from \"react-phone-number-input\";\nimport languageHelper from \"../../helpers/languageHelper\";\n\nconst language = languageHelper();\n\nconst validateRegno = (regno) => {\n if ((regno && regno.trim() === \"\") || !regno) {\n return language.errors.vehicleRequired;\n }\n if (regno && regno.length < 2) {\n return language.errors.minimumLength;\n }\n if (regno && regno.length > 7) {\n return language.errors.maximumLength;\n }\n return null;\n};\n\nfunction validateMobile(mobile) {\n if (!mobile) {\n return language.errors.required;\n }\n if (!isValidPhoneNumber(mobile)) {\n return language.errors.invalidPhone;\n }\n return null;\n}\n\nfunction validateRadio(value) {\n if (value === undefined) {\n return language.errors.required;\n }\n return null;\n}\n\nconst validateSocialNumber = (socialNumber) => {\n const onlyNumberPattern = /^\\d+$/;\n if (socialNumber && !socialNumber.match(onlyNumberPattern)) {\n return language.errors.onlyNumbers;\n }\n if ((socialNumber && socialNumber.trim() === \"\") || !socialNumber) {\n return language.errors.socialNumberRequired;\n }\n if (socialNumber.length < 12) {\n return language.errors.minimumLengthSocialNumber;\n }\n if (socialNumber.length > 12) {\n return language.errors.maximumLengthSocialNumber;\n }\n return null;\n};\n\nconst validatePosition = (position) => {\n if ((position && position.trim() === \"\") || !position) {\n return language.errors.required;\n }\n return null;\n};\n\nexport default {\n validateRegno,\n validateMobile,\n validateRadio,\n validateSocialNumber,\n validatePosition,\n};\n","import styled from \"styled-components\";\nimport {Button, Input, InputStyles} from \"@assistansbolaget/gat-components\";\nimport PhoneInput from \"react-phone-number-input\";\n\nexport const LocationsHandlerButton = styled(Button)`\n margin: 0.5rem 0;\n font-size: 10px;\n background-color: rgba(255, 212, 163, 0.15);\n color: #ffd4a3;\n`;\n\nexport const CustomerDetailsInput = styled(Input)`\n width: 100%;\n margin-bottom: 25px;\n`;\n\nexport const PhoneNumberContainer = styled(InputStyles.Container)`\n margin-bottom: 25px;\n input:-webkit-autofill,\n input:-webkit-autofill:hover,\n input:-webkit-autofill:focus,\n input:-webkit-autofill:active {\n -webkit-transition: color 600000s ease-out, background-color 600000s ease-out; // HACK to remove the background color of the autofill\n -webkit-transition-delay: 600000s;\n }\n`;\n\n\nexport const PhoneNumber = styled(PhoneInput)`\n --PhoneInput-color--focus: ${(p) => p.theme.palette.primary.main};\n\n .PhoneInputCountry {\n background-color: transparent;\n align-self: center;\n border-radius: 0;\n } \n \n .PhoneInputCountrySelect {\n align-self: center;\n }\n\n .PhoneInputInput {\n background-color: transparent;\n color: ${(p) => p.theme.palette.layout.depth6};\n font-size: ${(p) => p.theme.fontSize.sm};\n }\n`;\n\n","/* eslint-disable react/forbid-prop-types */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n// import check from \"../../assets/images/check-solid-blue.svg\";\n\nimport \"./style.css\";\nimport { useIntl } from \"react-intl\";\nimport { CustomerDetailsInput } from \"../../features/createOrder/customerDetails.style\";\n\nconst Input = ({ input, meta, ...props }) => {\n const { placeholder } = props;\n const { active, error, touched } = meta;\n const shouldShowError = touched && !active && error;\n\n const intl = useIntl();\n\n // TODO - Errorhandling for input\n return (\n
\n \n
\n );\n};\n\nInput.defaultProps = {\n image: null,\n loading: false,\n customFormerror: false,\n customErrorStyle: false\n};\n\nInput.propTypes = {\n input: PropTypes.object.isRequired,\n type: PropTypes.string.isRequired,\n meta: PropTypes.object.isRequired,\n image: PropTypes.string,\n loading: PropTypes.bool,\n customFormerror: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n customErrorStyle: PropTypes.bool,\n placeholder: PropTypes.string.isRequired\n};\n\nexport default Input;\n","import { SubmissionError } from \"redux-form\";\nimport validators from \"./validators\";\n\nconst {\n validateRegno,\n validateMobile,\n validateSocialNumber,\n validatePosition\n} = validators;\n\nfunction submitCustomerDetailsValidation(values) {\n const regnoError = validateRegno(values.regno);\n const mobileError = validateMobile(values.mobile);\n const carPositionError = validatePosition(values.carPosition);\n const socialNumberError = validateSocialNumber(values.socialNumber);\n if (regnoError) {\n throw new SubmissionError({\n regno: regnoError,\n _error: regnoError\n });\n }\n\n if (mobileError) {\n throw new SubmissionError({\n mobile: mobileError,\n _error: mobileError\n });\n }\n\n if (carPositionError) {\n throw new SubmissionError({\n carPosition: carPositionError,\n _error: carPositionError\n });\n }\n\n if (socialNumberError) {\n throw new SubmissionError({\n socialNumber: socialNumberError,\n _error: socialNumberError\n });\n }\n}\n\nexport default submitCustomerDetailsValidation;\n","/* eslint-disable react/forbid-prop-types */\nimport { InputStyles } from \"@assistansbolaget/gat-components\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport \"react-phone-number-input/style.css\";\nimport { useIntl } from \"react-intl\";\nimport {useSessionStorage} from \"usehooks-ts\";\nimport {\n PhoneNumber,\n PhoneNumberContainer\n} from \"../../features/createOrder/customerDetails.style\";\nimport { SESSION_KEYS } from \"../../helpers/sessionStore\";\nimport \"./style.css\";\n\nfunction getDefaultCountry(locale) {\n const country = locale?.split(\"-\")[1];\n return country ? country : \"US\";\n}\n\nconst PhoneNumberInput = ({\n input: { onFocus, onBlur, onChange, value },\n meta: { active, error, touched },\n ref,\n placeholder,\n ...rest\n}) => {\n const [locale] = useSessionStorage(SESSION_KEYS.locale, undefined);\n const shouldShowError = touched && !active && error;\n\n const defaultCountry = getDefaultCountry(locale);\n const intl = useIntl();\n return (\n \n {placeholder}\n \n \n onBlur()}\n onFocus={() => onFocus()}\n defaultCountry={defaultCountry}\n type=\"tel\"\n {...rest}\n />\n \n \n {shouldShowError\n ? intl.formatMessage({\n id: \"CreateOrder.PhoneInput.ErrorMessage\",\n defaultMessage: \"Wrong format\",\n description: \"phonenumber input: errormessage\"\n })\n : undefined}\n \n \n \n );\n};\n\nPhoneNumberInput.propTypes = {\n input: PropTypes.object.isRequired,\n meta: PropTypes.object.isRequired,\n ref: PropTypes.object.isRequired,\n placeholder: PropTypes.string.isRequired\n};\n\nexport default PhoneNumberInput;\n","/* eslint-disable react/forbid-prop-types */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n// import check from \"../../assets/images/check-solid-blue.svg\";\n\nimport \"./style.css\";\nimport { LocationsHandlerButton } from \"../../features/createOrder/customerDetails.style\";\n\nconst PositionInput = ({ input, customFormerror, ...rest }) => {\n return (\n
\n \n {rest.label}\n \n
\n );\n};\n\nPositionInput.defaultProps = {\n image: null,\n loading: false,\n customFormerror: false,\n customErrorStyle: false\n};\n\nPositionInput.propTypes = {\n input: PropTypes.object.isRequired,\n type: PropTypes.string.isRequired,\n meta: PropTypes.object.isRequired,\n image: PropTypes.string,\n loading: PropTypes.bool,\n customFormerror: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n customErrorStyle: PropTypes.bool\n};\n\nexport default PositionInput;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Field, getFormValues, reduxForm } from \"redux-form\";\nimport PropTypes from \"prop-types\";\nimport debounce from \"lodash.debounce\";\nimport { injectIntl } from \"react-intl\";\nimport activeOrderSelectors from \"../activeOrder/selectors\";\nimport actions from \"./actions\";\nimport selectors from \"./selectors\";\nimport validators from \"./validators\";\nimport Input from \"../../components/Input/Input\";\nimport submitCustomerDetailsValidation from \"./submitCustomerDetailsValidation\";\nimport { DAMAGE_REASON_VIEW, WELCOME_SCREEN_VIEW } from \"./viewConstants\";\nimport CardBoxContainer from \"../../components/CardBoxContainer/CardBoxContainer\";\nimport welcomeScreenSelectors from \"../welcomeScreen/selectors\";\nimport locationPinLogo from \"../../assets/images/pin.svg\";\nimport PhoneNumberInput from \"../../components/PhoneNumberInput/PhonenumberInput\";\nimport PositionInput from \"../../components/Input/PositionInput\";\nimport NextStepButton from \"../../components/ButtonContainer/NextStepButton\";\n\nconst {\n submitCustomerDetailsForm,\n setNextView,\n setPreviousView,\n getPosition,\n fetchVehicle\n} = actions;\nconst {\n getSocialNumberFieldError,\n getRegnoFieldError,\n getNextView,\n getIsFetchingVehicle,\n getIsFetchingPerson,\n isCookiesAccepted\n} = selectors;\nconst {\n validateRegno,\n validateMobile,\n validateSocialNumber,\n validatePosition\n} = validators;\n\nconst { getOrder } = activeOrderSelectors;\n\nconst { getVehiclePosition } = welcomeScreenSelectors;\n\nconst validate = values => {\n const errors = {};\n errors.regno = validateRegno(values.regno);\n errors.mobile = validateMobile(values.mobile);\n errors.carPosition = validatePosition(values.carPosition);\n errors.socialNumber = validateSocialNumber(values.socialNumber);\n return errors;\n};\n\nclass CustomerDetails extends React.Component {\n // eslint-disable-next-line\n debounceVehicleSearch = debounce(this.props.getVehicle, 1000, {\n leading: false\n });\n\n constructor(props) {\n super(props);\n this.state = {\n hasSetInitialValues: false\n };\n }\n\n componentDidMount() {\n const { previousView, nextView } = this.props;\n previousView();\n nextView();\n }\n\n componentDidUpdate() {\n const { order, initialize, getCurrentVehiclePosition } = this.props;\n const { hasSetInitialValues } = this.state;\n if (\n hasSetInitialValues ||\n order.size !== undefined ||\n getCurrentVehiclePosition.size !== undefined\n )\n return;\n if (\n !order?.customerVehicle?.registrationNumber ||\n !order?.customer?.mobilePhone ||\n !getCurrentVehiclePosition?.address\n )\n return;\n initialize({\n regno: order?.customerVehicle?.registrationNumber,\n mobile: order?.customer?.mobilePhone,\n carPosition: getCurrentVehiclePosition.address\n });\n this.state.hasSetInitialValues = true;\n }\n\n render() {\n const {\n handleSubmit,\n handleNextButton,\n regnoFieldError,\n requestPosition,\n getCurrentVehiclePosition,\n formValues,\n intl\n } = this.props;\n\n const { regno, mobile, carPosition } = formValues || {};\n const shouldDisableNextButton = !regno || !mobile || !carPosition;\n\n return (\n <>\n \n

\n {intl.formatMessage({\n id: \"CreateOrder.CustomerDetails.Title\",\n defaultMessage: \"Roadassistance\",\n description: \"Startpage: Ask for customer details\"\n })}\n

\n

\n {intl.formatMessage({\n id: \"CreateOrder.CustomerDetails.ProvideText\",\n defaultMessage: \"Provide details\",\n description: \"Startpage: Provide details text\"\n })}\n

\n
\n \n \n

\n {intl.formatMessage({\n id: \"CreateOrder.CustomerDetails.VehiclPositionLabel\",\n defaultMessage: \"Vehicle position\",\n description: \"Vehicle position title\"\n })}\n

\n {getCurrentVehiclePosition.address && (\n
\n \"pin-location\"\n

{getCurrentVehiclePosition.address}

\n
\n )}\n
\n requestPosition()}\n label={intl\n .formatMessage({\n id: \"CreateOrder.CustomerDetails.VehiclePosition\",\n defaultMessage: \"Vehicle position\",\n description: \"Startpage: vehicle position title\"\n })\n .toUpperCase()}\n />\n \n
\n

\n {intl.formatMessage({\n id: \"CreateOrder.CustomerDetails.CallInformation\",\n defaultMessage: \"Do you need help with your order?\",\n description: \"Call information\"\n })}\n

\n \n {intl.formatMessage({\n id: \"CreateOrder.CustomerDetails.DisplayedPhoneNumber\",\n defaultMessage: \"Call +4620400500\",\n description: \"Displayed phonenr to call center\"\n })}\n \n
\n
\n {/*
\n \n \n {language.createOrder.toggleText1}\n {language.createOrder.toggleText2}\n \n
\n {formValues && formValues.isInsured && (\n <>\n \n {language.createOrder.customerDetails.pnrInfo}\n

\n (!isFetchingPerson ? getPerson(e) : null)}\n component={Input}\n placeholder=\"Personnummer\"\n type=\"tel\"\n normalize={normalizeSocialNumber}\n customFormerror={\n socialNumberFieldError.type === \"socialNumber\" &&\n socialNumberFieldError\n }\n loading={isFetchingPerson}\n />\n \n )} */}\n \n
\n \n );\n }\n}\n\nCustomerDetails.propTypes = {\n // eslint-disable-next-line\n formValues: PropTypes.shape({\n regno: PropTypes.string,\n mobile: PropTypes.string,\n carPosition: PropTypes.string,\n isInsured: PropTypes.bool,\n socialNumber: PropTypes.string\n }),\n handleSubmit: PropTypes.func.isRequired,\n requestPosition: PropTypes.func.isRequired,\n getCurrentVehiclePosition: PropTypes.string.isRequired,\n previousView: PropTypes.func.isRequired,\n nextView: PropTypes.func.isRequired,\n socialNumberFieldError: PropTypes.shape({\n show: PropTypes.bool,\n message: PropTypes.string,\n type: PropTypes.string\n }).isRequired,\n regnoFieldError: PropTypes.shape({\n show: PropTypes.bool,\n message: PropTypes.string,\n type: PropTypes.string\n }).isRequired,\n handleNextButton: PropTypes.func.isRequired,\n getVehicle: PropTypes.func.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired,\n initialize: PropTypes.func.isRequired,\n order: PropTypes.shape({\n id: PropTypes.string,\n customerVehicle: PropTypes.string,\n customer: PropTypes.string,\n size: PropTypes.string\n }).isRequired\n};\n\n// eslint-disable-next-line\nCustomerDetails = reduxForm({\n form: \"customerDetails\",\n initialValues: {\n isInsured: false,\n mobile: undefined,\n regno: undefined,\n carPosition: undefined\n },\n onSubmit: submitCustomerDetailsValidation,\n validate,\n destroyOnUnmount: false\n})(CustomerDetails);\n\nconst mapStateToProps = state => ({\n socialNumberFieldError: getSocialNumberFieldError(state),\n regnoFieldError: getRegnoFieldError(state),\n next: getNextView(state),\n formValues: getFormValues(\"customerDetails\")(state),\n isFetchingVehicle: getIsFetchingVehicle(state),\n isFetchingPerson: getIsFetchingPerson(state),\n getCurrentVehiclePosition: getVehiclePosition(state),\n order: getOrder(state),\n cookieValue: isCookiesAccepted(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n previousView: () => dispatch(setPreviousView(WELCOME_SCREEN_VIEW)),\n nextView: () => dispatch(setNextView(DAMAGE_REASON_VIEW)),\n handleNextButton: () => dispatch(submitCustomerDetailsForm()),\n requestPosition: () => dispatch(getPosition()),\n getVehicle: value => {\n dispatch(fetchVehicle(value));\n }\n});\n\nexport default injectIntl(\n connect(mapStateToProps, mapDispatchToProps)(CustomerDetails)\n);\n","/* eslint-disable react/forbid-prop-types */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Select } from \"@assistansbolaget/gat-components\";\n\nimport \"./style.css\";\nimport { useIntl } from \"react-intl\";\n\nconst SelectField = ({\n meta: { touched, error },\n input: { onChange, value },\n options,\n ...rest\n}) => {\n const optionsList = options?.map(option => {\n return { label: option.name, value: option.value || option.id };\n });\n\n const intl = useIntl();\n\n const errors =\n touched && error\n ? intl.formatMessage({\n id: \"DamageOrder.DamageReason.ErrorMessage\",\n defaultMessage: \"Required\",\n description: \"damagereasons: errormessage\"\n })\n : null;\n\n const { placeholder } = rest;\n\n return (\n \n );\n};\n\nSelectField.propTypes = {\n input: PropTypes.object.isRequired,\n options: PropTypes.array.isRequired,\n meta: PropTypes.object.isRequired,\n placeholder: PropTypes.string.isRequired\n};\n\nexport default SelectField;\n","import languageHelper from \"./languageHelper\";\n\nconst language = languageHelper();\n\nconst required = value => (value ? undefined : language.errors.required);\n\nexport default { required };\n","import { SubmissionError } from \"redux-form\";\nimport validators from \"./validators\";\nimport languageHelper from \"../../helpers/languageHelper\";\n\nconst language = languageHelper();\n\nconst { validateRadio } = validators;\n\nfunction submitDamageReasonValidation(values) {\n const reserveTireError = validateRadio(values.reserveTire);\n const garageError = validateRadio(values.garage);\n const engineInsuranceTypeError = validateRadio(values.engineInsuranceType);\n\n if (!values.damageReason) {\n throw new SubmissionError({\n damageReason: language.errors.required,\n _error: language.errors.required\n });\n }\n if (values.damageReason === \"901113\" && !values.damageDetails) {\n throw new SubmissionError({\n damageDetails: language.errors.required,\n _error: language.errors.required\n });\n }\n if (values.damageReason === \"901105\" && !values.damageDetails) {\n throw new SubmissionError({\n damageDetails: language.errors.required,\n _error: language.errors.required\n });\n }\n if (values.damageReason === \"901115\" && !values.damageDetails) {\n throw new SubmissionError({\n damageDetails: language.errors.required,\n _error: language.errors.required\n });\n }\n if (values.damageReason === \"901114\" && !values.damageDetails) {\n throw new SubmissionError({\n damageDetails: language.errors.required,\n _error: language.errors.required\n });\n }\n if (values.damageReason === \"901114\" && reserveTireError) {\n throw new SubmissionError({\n reserveTire: reserveTireError,\n _error: language.errors.required\n });\n }\n if (garageError) {\n throw new SubmissionError({\n garage: garageError,\n _error: garageError\n });\n }\n if (engineInsuranceTypeError) {\n throw new SubmissionError({\n garage: engineInsuranceTypeError,\n _error: engineInsuranceTypeError\n });\n }\n if (!values.terms) {\n throw new SubmissionError({\n terms: language.errors.terms,\n _error: language.errors.terms\n });\n }\n}\n\nexport default submitDamageReasonValidation;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport \"./style.css\";\nimport { Button } from \"@assistansbolaget/gat-components\";\nimport { LocationsHandlerButton } from \"../../features/createOrder/customerDetails.style\";\n\nfunction TwoButtonContainer({\n nextStep,\n previousStep,\n nextStepText,\n previousStepText,\n id,\n disabled\n}) {\n return (\n
\n \n {nextStepText}\n \n \n {previousStepText}\n \n
\n );\n}\n\nTwoButtonContainer.defaultProps = {\n disabled: false,\n id: \"\"\n};\n\nTwoButtonContainer.propTypes = {\n nextStep: PropTypes.func.isRequired,\n previousStep: PropTypes.func.isRequired,\n nextStepText: PropTypes.string.isRequired,\n previousStepText: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n id: PropTypes.string\n};\n\nexport default TwoButtonContainer;\n","import styled from \"styled-components\";\nimport { Radio } from \"@assistansbolaget/gat-components\";\n\nconst RadioGroupsStyle = styled(Radio)``;\n\nexport default RadioGroupsStyle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport RadioGroupsStyle from \"./RadioGroups.style\";\n\nconst ButtonGroup = ({\n value,\n name,\n submitFailed,\n label,\n values,\n onChange\n}) => {\n const convertValueToName = () => {\n if (value === true) {\n return \"Ja\";\n }\n return \"Nej\";\n };\n return (\n
\n \n {label}\n \n {values.map(v => (\n onChange(v.value)}\n />\n ))}\n
\n );\n};\n\nButtonGroup.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n onChange: PropTypes.func.isRequired,\n name: PropTypes.string,\n submitFailed: PropTypes.bool,\n label: PropTypes.string,\n values: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })\n )\n};\n\nButtonGroup.defaultProps = {\n value: undefined,\n name: \"\",\n submitFailed: undefined,\n label: \"\",\n values: []\n};\n\nexport default ButtonGroup;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n Field,\n getFormError,\n getFormSubmitErrors,\n getFormValues,\n reduxForm,\n submit\n} from \"redux-form\";\nimport PropTypes from \"prop-types\";\nimport { injectIntl } from \"react-intl\";\nimport actions from \"./actions\";\nimport selectors from \"./selectors\";\nimport activeOrderSelectors from \"../activeOrder/selectors\";\nimport SelectField from \"../../components/SelectField/SelectField\";\nimport formValidate from \"../../helpers/formValidate\";\nimport submitDamageReasonValidation from \"./submitDamageReasonValidation\";\nimport {\n CUSTOMER_DETAILS_VIEW,\n ESTIMATE_PRICE_VIEW,\n SEEKING_RESPONDER_VIEW\n} from \"./viewConstants\";\nimport CardBoxContainer from \"../../components/CardBoxContainer/CardBoxContainer\";\nimport TwoButtonContainer from \"../../components/ButtonContainer/TwoButtonContainer\";\nimport ButtonGroup from \"../../components/ButtonGroup/ButtonGroup\";\nimport { SESSION_KEYS, getSession } from \"../../helpers/sessionStore\";\n\nconst { required } = formValidate;\n\nconst {\n decrementStep,\n clearValues,\n setCurrentView,\n setPreviousView,\n setNextView,\n submitCreateOrderForm,\n checkPreviousVehiclePosition,\n fetchDamageReasons,\n fetchConfinedSpaceAttributes,\n fetchPaymentOptionsList,\n fetchVehicleInsuranceLevels\n} = actions;\n\nconst {\n getToggleFormValue,\n getNextView,\n getPreviousView,\n getDamageReasons,\n selectConfinedSpaces\n} = selectors;\n\nconst { getOrder } = activeOrderSelectors;\n\nclass DamageReason extends React.Component {\n constructor(props) {\n const currentMission = getSession(SESSION_KEYS.missionId);\n super(props);\n this.state = {\n hasSetInitialValues: false,\n currentMission\n };\n }\n\n componentDidMount() {\n const {\n checkIfVehiclePositionHasChanged,\n previousView,\n nextView,\n customerDetailsFormValues,\n dispatchFetchDamageReasons,\n dispatchFetchConfinedSpaceAttributes,\n dispatchFetchPaymentOptionsList,\n dispatchFetchVehicleInsuranceLevels\n } = this.props;\n previousView();\n dispatchFetchDamageReasons();\n dispatchFetchConfinedSpaceAttributes();\n dispatchFetchPaymentOptionsList();\n dispatchFetchVehicleInsuranceLevels();\n if (customerDetailsFormValues?.isInsured) {\n nextView(SEEKING_RESPONDER_VIEW);\n } else {\n checkIfVehiclePositionHasChanged();\n nextView(ESTIMATE_PRICE_VIEW);\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n const gatLocaleMission = getSession(SESSION_KEYS.missionId);\n const {\n currentMission,\n dispatchFetchDamageReasons,\n order,\n damageReasons,\n initialize,\n getSelectConfinedSpaces\n } = this.props;\n if (gatLocaleMission !== currentMission) {\n dispatchFetchDamageReasons();\n }\n const currentDamageDetails = order?.reason;\n if (!currentDamageDetails) {\n return;\n }\n if (\n !this.state.hasSetInitialValues &&\n order.size !== 0 &&\n damageReasons.size !== 0 &&\n getSelectConfinedSpaces !== \"\"\n ) {\n const currentDamageReasonGroup = damageReasons.find(item =>\n item?.missionReasons?.find(reason => reason?.id === order?.reason?.id)\n );\n const garage =\n order?.attributes?.find(\n item => item?.attributeId === getSelectConfinedSpaces\n )?.value === \"true\";\n initialize({\n damageReason: {\n label: currentDamageReasonGroup?.name,\n value: currentDamageReasonGroup?.id\n },\n damageDetails: {\n label: currentDamageDetails?.name,\n value: currentDamageDetails?.id\n },\n garage\n });\n this.state.hasSetInitialValues = true;\n }\n }\n\n render() {\n const {\n handleSubmit,\n nextStep,\n formValues,\n changeValue,\n submitFailed,\n handlePreviousButton,\n previous,\n damageReasons,\n intl\n } = this.props;\n\n const handleGarageChange = value => {\n const { change } = this.props;\n change(\"garage\", value);\n };\n\n const damageGroupReasonsOptions = damageReasons?.map(item => ({\n value: item.id,\n name: item.name\n }));\n\n const damageReasonsOptions = damageReasons?.find(\n item => item?.id === formValues?.damageReason?.value\n );\n\n const damageReasonsOptionsValues = damageReasonsOptions?.missionReasons?.map(\n item => ({\n value: item.id,\n name: item.name\n })\n );\n\n const { damageDetails, damageReason } = formValues || {};\n\n const shouldDisableNextButton = !damageDetails || !damageReason;\n\n return (\n <>\n
\n \n

\n {intl.formatMessage({\n id: \"CreateOrder.DamageReason.Title\",\n defaultMessage: \"Select damage reason\",\n description: \"Damagereason: damagereason title\"\n })}\n

\n \n \n {damageReasonsOptionsValues && (\n \n )}\n \n \n handlePreviousButton(previous)}\n nextStep={nextStep}\n nextStepText={intl\n .formatMessage({\n id: \"general.continue\",\n defaultMessage: \"Continue\",\n description: \"Continue\"\n })\n .toUpperCase()}\n disabled={shouldDisableNextButton}\n />\n
\n
\n \n );\n }\n}\n\nDamageReason.propTypes = {\n // eslint-disable-next-line\n formValues: PropTypes.shape({\n damageReason: PropTypes.object,\n damageDetails: PropTypes.string,\n reserveTire: PropTypes.bool,\n garage: PropTypes.bool,\n engineInsuranceType: PropTypes.string\n }),\n change: PropTypes.func.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n customerDetailsFormValues: PropTypes.shape({\n isInsured: PropTypes.bool\n }).isRequired,\n nextStep: PropTypes.func.isRequired,\n previousView: PropTypes.func.isRequired,\n nextView: PropTypes.func.isRequired,\n previous: PropTypes.string.isRequired,\n changeValue: PropTypes.func.isRequired,\n submitFailed: PropTypes.bool.isRequired,\n handlePreviousButton: PropTypes.func.isRequired,\n checkIfVehiclePositionHasChanged: PropTypes.func.isRequired,\n damageReasons: PropTypes.arrayOf(PropTypes.object).isRequired,\n dispatchFetchDamageReasons: PropTypes.func.isRequired,\n dispatchFetchConfinedSpaceAttributes: PropTypes.func.isRequired,\n dispatchFetchVehicleInsuranceLevels: PropTypes.func.isRequired,\n dispatchFetchPaymentOptionsList: PropTypes.func.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired\n};\n\n// eslint-disable-next-line\nDamageReason = reduxForm({\n form: \"createOrderForm\",\n initialValues: { garage: false, reserveTire: undefined },\n onSubmit: submitDamageReasonValidation,\n destroyOnUnmount: false\n})(DamageReason);\n\nconst mapStateToProps = state => ({\n order: getOrder(state),\n next: getNextView(state),\n previous: getPreviousView(state),\n formValues: getFormValues(\"createOrderForm\")(state),\n customerDetailsFormValues: getFormValues(\"customerDetails\")(state),\n submitErrors: getFormSubmitErrors(\"createOrderForm\")(state),\n formError: getFormError(\"createOrderForm\")(state),\n toggleFormValue: getToggleFormValue(state),\n damageReasons: getDamageReasons(state),\n getSelectConfinedSpaces: selectConfinedSpaces(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n previousView: () => dispatch(setPreviousView(CUSTOMER_DETAILS_VIEW)),\n nextView: view => dispatch(setNextView(view)),\n submitForm: () => dispatch(submit(\"createOrderForm\")),\n previousStep: () => dispatch(decrementStep()),\n nextStep: () => dispatch(submitCreateOrderForm()),\n changeValue: () => dispatch(clearValues()),\n handlePreviousButton: previous => dispatch(setCurrentView(previous)),\n checkIfVehiclePositionHasChanged: () =>\n dispatch(checkPreviousVehiclePosition()),\n dispatchFetchDamageReasons: () => dispatch(fetchDamageReasons()),\n dispatchFetchConfinedSpaceAttributes: () =>\n dispatch(fetchConfinedSpaceAttributes()),\n dispatchFetchPaymentOptionsList: () => dispatch(fetchPaymentOptionsList()),\n dispatchFetchVehicleInsuranceLevels: () =>\n dispatch(fetchVehicleInsuranceLevels())\n});\n\nexport default injectIntl(\n connect(mapStateToProps, mapDispatchToProps)(DamageReason)\n);\n","import styled from \"styled-components\";\nimport { Card } from \"@assistansbolaget/gat-components\";\n\nconst StyledInfoCard = styled(Card)`\n width: 370px;\n height: fit-content;\n padding: 2rem;\n color: #fff;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n z-index: 3;\n`;\n\nexport default StyledInfoCard;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { getFormValues } from \"redux-form\";\nimport { faUserHeadset } from \"@fortawesome/pro-light-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { injectIntl } from \"react-intl\";\nimport actions from \"./actions\";\nimport selectors from \"./selectors\";\nimport StyledInfoCard from \"./SeekingResponder.styles\";\n\nconst { fetchFinalPrice, fetchDispatch } = actions;\nconst { getNoEstimateReason } = selectors;\n\nclass SeekingResponder extends React.Component {\n componentDidMount() {\n const {\n createAssistanceOrder,\n createDispatchOrder,\n customerDetailsFormValues,\n noEstimateReason\n } = this.props;\n if (\n customerDetailsFormValues?.isInsured ||\n customerDetailsFormValues?.noEstimate ||\n noEstimateReason !== undefined\n ) {\n createDispatchOrder();\n } else {\n createAssistanceOrder();\n }\n }\n\n render() {\n const { intl } = this.props;\n return (\n
\n \n \n \n {intl.formatMessage({\n id: \"SeekingResponder.Title\",\n defaultMessage: \"We will assist you!\",\n description: \"Title for Seeking responder view\"\n })}\n \n <>\n

\n {intl.formatMessage({\n id: \"SeekingResponder.BreadText\",\n defaultMessage:\n \"We will get in touch with you shortly. You mission will be handled by our dispatch\",\n description: \"Bread text for Seeking Responder\"\n })}\n

\n \n \n {intl.formatMessage({\n id: \"SeekingResponder.HighLightText\",\n defaultMessage:\n \"Please wait, we will call you within minutes on the provided phone number\",\n description: \"High lighted text in Seeking Responder modal\"\n })}\n \n \n
\n
\n
\n );\n }\n}\n\nSeekingResponder.propTypes = {\n createAssistanceOrder: PropTypes.func.isRequired,\n createDispatchOrder: PropTypes.func.isRequired,\n customerDetailsFormValues: PropTypes.shape({\n isInsured: PropTypes.bool,\n noEstimate: PropTypes.bool\n }).isRequired,\n noEstimateReason: PropTypes.bool.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired\n};\n\nconst mapStateToProps = state => ({\n customerDetailsFormValues: getFormValues(\"customerDetails\")(state),\n noEstimateReason: getNoEstimateReason(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n createDispatchOrder: () => dispatch(fetchDispatch()),\n createAssistanceOrder: () => dispatch(fetchFinalPrice())\n});\n\nexport default injectIntl(\n connect(mapStateToProps, mapDispatchToProps)(SeekingResponder)\n);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport languageHelper from \"../../helpers/languageHelper\";\nimport { CONFIRM_ORDER_VIEW } from \"./viewConstants\";\nimport actions from \"./actions\";\n\nconst language = languageHelper();\n\nconst { setCurrentView } = actions;\n\nconst UserTerms = ({ closeTerms }) => (\n <>\n
\n
\n

{language.createOrder.userTerms.title}

\n
\n

\n {language.createOrder.userTerms.text}\n

\n
\n
\n \n {language.createOrder.close}\n \n \n);\n\nUserTerms.propTypes = {\n closeTerms: PropTypes.func.isRequired\n};\n\nconst mapDispatchToProps = dispatch => ({\n closeTerms: () => dispatch(setCurrentView(CONFIRM_ORDER_VIEW))\n});\n\nexport default connect(null, mapDispatchToProps)(UserTerms);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport languageHelper from \"../../helpers/languageHelper\";\nimport actions from \"./actions\";\n\nconst language = languageHelper();\n\nconst { modalGoBack } = actions;\n\nconst TmaCarTerms = ({ closeTerms }) => (\n <>\n
\n
\n

{language.createOrder.tmaCarTerms.title}

\n
\n

\n {language.createOrder.tmaCarTerms.text}\n

\n
\n
\n \n {language.createOrder.close}\n \n \n);\n\nTmaCarTerms.propTypes = {\n closeTerms: PropTypes.func.isRequired,\n};\n\n\nconst mapDispatchToProps = (dispatch) => ({\n closeTerms: () => dispatch(modalGoBack()),\n});\n\nexport default connect(null, mapDispatchToProps)(TmaCarTerms);\n","import React, { useEffect, useState } from \"react\";\nimport { Divider } from \"@assistansbolaget/gat-components\";\nimport PropTypes from \"prop-types\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faHourglassClock } from \"@fortawesome/pro-light-svg-icons\";\n\nconst CustomerAcceptCountDown = ({ countdownTime }) => {\n const [time, setTime] = useState(countdownTime);\n\n useEffect(() => {\n const timer = setInterval(() => {\n setTime(prevTime => prevTime - 1);\n }, 1000);\n\n if (time === 0) {\n clearInterval(timer);\n return false;\n }\n return () => clearInterval(timer);\n }, [time]);\n\n const minutes = Math.floor(time / 60);\n const seconds = time % 60 || 0;\n\n return (\n <>\n \n
\n \n

{`${minutes || 0}:${seconds < 10 ? \"0\" : \"\"}${seconds.toFixed(\n 0\n )}`}

\n
\n \n );\n};\n\nCustomerAcceptCountDown.propTypes = {\n countdownTime: PropTypes.number.isRequired\n};\n\nexport default CustomerAcceptCountDown;\n","import React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { Button, Divider } from \"@assistansbolaget/gat-components\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faBadgeDollar } from \"@fortawesome/pro-light-svg-icons\";\nimport { injectIntl } from \"react-intl\";\nimport { useSessionStorage } from \"usehooks-ts\";\nimport actions from \"./actions\";\nimport activeOrderSelectors from \"../activeOrder/selectors\";\nimport CardBoxContainer from \"../../components/CardBoxContainer/CardBoxContainer\";\nimport loadingSelector from \"../loading/selectors\";\nimport {\n CONFIRM_ORDER_VIEW,\n DAMAGE_REASON_VIEW,\n SEEKING_RESPONDER_VIEW,\n USER_TERMS_VIEW\n} from \"./viewConstants\";\nimport \"./confirmOrder.css\";\nimport {\n BaseUrl,\n CLEAR_DESTINATION_CHANGE,\n CUSTOMER_ACCEPT_MISSION,\n EDIT_MISSION_REQUEST,\n FIND_DRIVER,\n GET_MISSIONS_BY_ID\n} from \"../../constants/apiConstants\";\nimport { getSession, SESSION_KEYS } from \"../../helpers/sessionStore\";\nimport api from \"../../helpers/apiUtils\";\nimport {\n CANCELLED,\n MISSION_NOT_STARTED,\n WAITING_FOR_CUSTOMER_ACCEPT,\n WAITING_FOR_DRIVER_ACCEPT\n} from \"../../constants/orderStatusConstants\";\nimport CustomerAcceptCountDown from \"./customerAcceptCountDown\";\nimport LoadingSpinner from \"../../components/LoadingSpinner/LoadingSpinner\";\nimport history from \"../../history\";\nimport { ACTIVE_ORDER_PATH } from \"../../constants/routeConstants\";\nimport createOrderSelectors from \"./selectors\";\n\nconst { getOrder, getEstimatedArrivalTimeSeconds } = activeOrderSelectors;\nconst { getPreviousView } = createOrderSelectors;\nconst {\n createOrder,\n deny,\n toggleNoConfirmationModal,\n setCurrentView,\n getPosition,\n setPreviousView\n} = actions;\n\nconst { getLoading } = loadingSelector;\n\nconst ConfirmOrder = ({\n requestPosition,\n previousView,\n redirectToSeekingResponder,\n handlePreviousButton,\n loading,\n intl\n}) => {\n const [gatLocale] = useSessionStorage(SESSION_KEYS.locale, undefined);\n const [gatOrgUnit] = useSessionStorage(\n SESSION_KEYS.gatOrganizationUnit,\n undefined\n );\n const accessToken = getSession(SESSION_KEYS.accessToken);\n const missionId = getSession(SESSION_KEYS.missionId);\n const appId = getSession(SESSION_KEYS.appId);\n const [currentOrder, setCurrentOrder] = useState({});\n const [smallLoaderState, setSmallLoaderState] = useState(false);\n const [findDriverLoadingState, setFindDriverLoadingState] = useState(false);\n\n const currentOrderVehiclePosition = currentOrder.locations;\n\n const destinationObject = currentOrderVehiclePosition?.find(\n item => item?.type === \"Destination\"\n );\n\n const sourceObject = currentOrderVehiclePosition?.find(\n item => item?.type === \"Source\"\n );\n\n const calculatedDestinationAddress = currentOrderVehiclePosition?.find(\n item => item?.type === \"CalculatedDestination\"\n );\n\n const renderDestinationAddress = () => {\n if (!destinationObject && !calculatedDestinationAddress) {\n return null;\n }\n\n if (destinationObject) {\n const { address, zipCode, city } = destinationObject;\n const addressParts = [];\n\n if (address) {\n addressParts.push(address);\n }\n\n if (zipCode) {\n addressParts.push(zipCode);\n }\n\n if (city) {\n addressParts.push(city);\n }\n\n if (addressParts.length > 0) {\n return addressParts.join(\", \");\n }\n }\n\n if (calculatedDestinationAddress) {\n const {\n address,\n zipCode,\n city,\n coordinate\n } = calculatedDestinationAddress;\n const addressParts = [];\n\n if (coordinate.name) {\n addressParts.push(coordinate.name);\n }\n\n if (address) {\n addressParts.push(address);\n }\n\n if (zipCode) {\n addressParts.push(zipCode);\n }\n\n if (city) {\n addressParts.push(city);\n }\n\n if (addressParts.length > 0) {\n return addressParts.join(\", \");\n }\n }\n\n return null;\n };\n\n useEffect(() => {\n // eslint-disable-next-line consistent-return\n const interval = setInterval(() => {\n if (!missionId) {\n return;\n }\n try {\n api\n .get(`${GET_MISSIONS_BY_ID}${missionId}`, BaseUrl.GatUrl, {\n gatOrgUnit,\n accessToken,\n gatLocale,\n appId\n })\n .then(response => {\n if (\n response.data.state === CANCELLED ||\n response.statusCode > 400 ||\n response.statusCode === undefined\n ) {\n redirectToSeekingResponder();\n return () => clearInterval(interval);\n }\n return setCurrentOrder(response.data);\n });\n } catch (error) {\n clearInterval(interval);\n redirectToSeekingResponder();\n }\n }, 1000);\n\n return () => clearInterval(interval);\n }, [missionId]);\n\n const locationObject = currentOrder?.locations?.find(\n item => item.type === \"Destination\"\n );\n\n const destinationButtonMessage = locationObject\n ? intl.formatMessage({\n id: \"ConfirmOrder.UndoChangeDestinationButton\",\n defaultMessage: \"Undo change destination\",\n description: \"Change destination button text\"\n })\n : intl.formatMessage({\n id: \"ConfirmOrder.ChangeDestinationButton\",\n defaultMessage: \"Change destination\",\n description: \"Change destination button text\"\n });\n\n // eslint-disable-next-line consistent-return\n const onClick = () => {\n if (locationObject) {\n setSmallLoaderState(true);\n return api\n .post(\n `${CLEAR_DESTINATION_CHANGE}`,\n BaseUrl.GatUrl,\n { missionId },\n {\n gatOrgUnit,\n accessToken,\n gatLocale,\n appId\n }\n )\n .then(() => {\n setSmallLoaderState(false);\n });\n }\n\n requestPosition();\n previousView();\n };\n\n const towingPrice = currentOrder?.orders?.find(\n item => item?.missionType?.externalReference === \"Towing\"\n );\n const assistancePrice = currentOrder?.orders?.find(\n item => item?.missionType?.externalReference === \"Assistance\"\n );\n const servicePrice = currentOrder?.orders?.find(\n item => item?.category === \"Service\"\n );\n\n const formatPrice = price => {\n if (price == null) return \"\";\n const roundedPrice = Math.round(price * 100) / 100;\n return roundedPrice % 1 === 0\n ? roundedPrice.toString()\n : roundedPrice.toFixed(2);\n };\n\n const totalTowingPrice = formatPrice(\n towingPrice?.total + towingPrice?.calculatedVAT\n );\n const totalAssistancePrice = formatPrice(\n assistancePrice?.total + assistancePrice?.calculatedVAT\n );\n const totalServicePrice = formatPrice(\n servicePrice?.total + servicePrice?.calculatedVAT\n );\n\n const showAssistanceOrService = assistancePrice || servicePrice;\n const showTowingOrService = towingPrice || servicePrice;\n\n const timeToResolve = 180;\n\n const findDriver = () => {\n try {\n setFindDriverLoadingState(true);\n api\n .post(\n `${FIND_DRIVER}`,\n BaseUrl.GatUrl,\n { missionId },\n {\n gatOrgUnit,\n accessToken,\n gatLocale,\n appId\n }\n )\n .then(res => {\n setFindDriverLoadingState(false);\n if (res.statusCode > 399 || res.data.currentDriver === null) {\n redirectToSeekingResponder();\n }\n });\n } catch (e) {\n setFindDriverLoadingState(false);\n redirectToSeekingResponder();\n }\n };\n\n const customerAcceptMission = () => {\n try {\n api\n .post(\n `${CUSTOMER_ACCEPT_MISSION}`,\n BaseUrl.GatUrl,\n { missionId },\n {\n gatOrgUnit,\n accessToken,\n gatLocale,\n appId\n }\n )\n .then(() => {\n history.push(`${ACTIVE_ORDER_PATH}`);\n });\n } catch (e) {\n console.log(e);\n }\n };\n\n const loadingStates =\n findDriverLoadingState ||\n currentOrder?.state === WAITING_FOR_DRIVER_ACCEPT ||\n !currentOrder.id ||\n loading;\n\n const providerArrivalAt = currentOrder?.segments?.find(\n item => item?.endType === \"Source\"\n );\n\n function formatArrivalTime(arrivalTime) {\n if (arrivalTime) {\n const dateObj = new Date(arrivalTime);\n const hours = dateObj.getHours();\n const minutes = dateObj.getMinutes();\n const formattedTime = `${hours}:${minutes < 10 ? \"0\" : \"\"}${minutes}`;\n return formattedTime;\n }\n return \"\";\n }\n\n const handleBackButton = () => {\n try {\n api\n .post(\n `${EDIT_MISSION_REQUEST}`,\n BaseUrl.GatUrl,\n { missionId },\n {\n gatOrgUnit,\n accessToken,\n gatLocale,\n appId\n }\n )\n .then(() => {\n handlePreviousButton();\n });\n } catch (e) {\n console.log(e);\n }\n };\n\n return (\n <>\n {loadingStates ? (\n \n ) : (\n \n
\n \n {currentOrder.state === WAITING_FOR_CUSTOMER_ACCEPT ? (\n
\n

\n {intl.formatMessage({\n id: \"general.confirm\",\n defaultMessage: \"Confirm\",\n description: \"Confirm\"\n })}\n

\n
\n ) : (\n
\n

\n {intl.formatMessage({\n id: \"ConfirmOrder.Title\",\n defaultMessage: \"Estimated price\",\n description: \"Title for first price modal\"\n })}\n

\n
\n )}\n
\n
\n

\n {intl.formatMessage({\n id: \"ConfirmOrder.BreadTextBeforeAssistancePrice\",\n defaultMessage:\n \"If we can can repair the vehicle on the spot, you only pay \",\n description: \"Text before the first price in estimated price\"\n })}{\" \"}\n \n {showAssistanceOrService &&\n `${totalAssistancePrice || totalServicePrice} ${\n currentOrder?.currency\n }`}\n {\" \"}\n

{\" \"}\n {intl.formatMessage({\n id: \"ConfirmOrder.BreadTextAfterAssistancePrice\",\n defaultMessage:\n \"If your vehicle is in need of towing, you will have to pay \",\n description: \"Text after the first price in estimated price\"\n })}{\" \"}\n \n {showTowingOrService &&\n `${totalTowingPrice || totalServicePrice} ${\n currentOrder?.currency\n }`}\n \n

\n
\n {currentOrder.state === WAITING_FOR_CUSTOMER_ACCEPT && (\n
\n \n

\n {intl.formatMessage({\n id: \"ConfirmOrder.ProviderEta\",\n defaultMessage: \"Driver ETA\",\n description: \"Drivers ETA\"\n })}\n

\n

{`${formatArrivalTime(\n providerArrivalAt?.estimatedArrivalAt\n )}`}

\n
\n {\" \"}\n
\n )}\n
\n \n

\n {intl.formatMessage({\n id: \"ConfirmOrder.AssistancePriceSubTitle\",\n defaultMessage: \"On the spot\",\n description: \"Sub title for assistance\"\n })}\n

\n

\n {showAssistanceOrService &&\n `${totalAssistancePrice || totalServicePrice} ${\n currentOrder?.currency\n }`}\n

\n
\n \n

{sourceObject?.address}

\n
\n {\" \"}\n
\n
\n \n

\n {intl.formatMessage({\n id: \"ConfirmOrder.TowingPriceSubTitle\",\n defaultMessage: \"Towing\",\n description: \"Sub title for towing\"\n })}\n

\n

\n {showTowingOrService &&\n `${totalTowingPrice || totalServicePrice} ${\n currentOrder?.currency\n }`}\n

\n
\n \n

{renderDestinationAddress()}

\n
\n
\n {currentOrder.state === MISSION_NOT_STARTED && (\n
\n \n \n
\n )}\n {currentOrder.state === WAITING_FOR_CUSTOMER_ACCEPT && (\n <>\n \n \n )}\n
\n {currentOrder.state === WAITING_FOR_CUSTOMER_ACCEPT ? (\n \n ) : (\n \n )}\n\n {currentOrder.state !== WAITING_FOR_CUSTOMER_ACCEPT && (\n \n )}\n
\n
\n )}\n \n );\n};\n\nConfirmOrder.propTypes = {\n order: PropTypes.shape({\n s_address: PropTypes.string,\n updated_at: PropTypes.string,\n assistance_price: PropTypes.number,\n d_address: PropTypes.string,\n workshop_city: PropTypes.string,\n workshop_name: PropTypes.string,\n workshop_address: PropTypes.string,\n towing_price: PropTypes.number\n }).isRequired,\n requestPosition: PropTypes.func.isRequired,\n previousView: PropTypes.func.isRequired,\n redirectToSeekingResponder: PropTypes.func.isRequired,\n handlePreviousButton: PropTypes.func.isRequired,\n loading: PropTypes.bool.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired\n};\n\nconst mapStateToProps = state => ({\n order: getOrder(state),\n timeSeconds: getEstimatedArrivalTimeSeconds(state),\n previous: getPreviousView(state),\n loading: getLoading(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n previousView: () => dispatch(setPreviousView(CONFIRM_ORDER_VIEW)),\n confirmOrder: () => {\n dispatch(createOrder());\n },\n requestPosition: () => dispatch(getPosition()),\n openTerms: () => dispatch(setCurrentView(USER_TERMS_VIEW)),\n abortOrder: () => dispatch(deny()),\n showNoConfirmationModal: () => dispatch(toggleNoConfirmationModal(true)),\n redirectToSeekingResponder: () =>\n dispatch(setCurrentView(SEEKING_RESPONDER_VIEW)),\n handlePreviousButton: () => dispatch(setCurrentView(DAMAGE_REASON_VIEW))\n});\n\nexport default injectIntl(\n connect(mapStateToProps, mapDispatchToProps)(ConfirmOrder)\n);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\nimport { injectIntl } from \"react-intl\";\nimport actions from \"./actions\";\nimport selectors from \"./selectors\";\nimport EstimatePrice from \"./estimatePrice\";\nimport CustomerDetails from \"./customerDetails\";\nimport DamageReason from \"./damageReason\";\nimport SeekingResponder from \"./seekingResponder\";\nimport UserTerms from \"./userTerms\";\nimport TmaCarTerms from \"./tmaCarTerms\";\nimport ConfirmOrder from \"./confirmOrder\";\nimport Modal from \"../../components/Modal/Modal\";\nimport languageHelper from \"../../helpers/languageHelper\";\nimport history from \"../../history\";\nimport { CREATE_ORDER_PATH } from \"../../constants/routeConstants\";\nimport {\n CUSTOMER_DETAILS_VIEW,\n CAR_POSITION_VIEW,\n DAMAGE_REASON_VIEW,\n ESTIMATE_PRICE_VIEW,\n CONFIRM_ORDER_VIEW,\n USER_TERMS_VIEW,\n TMA_CAR_TERMS_VIEW,\n SEEKING_RESPONDER_VIEW\n} from \"./viewConstants\";\nimport { CarPositionPicker } from \"../carPositionPicker\";\nimport activeOrderSelectors from \"../activeOrder/selectors\";\nimport activeOrderActions from \"../activeOrder/actions\";\n\nimport \"./style.css\";\nimport logout from \"../../helpers/clearSessionStore\";\nimport {\n isSubdomainHelper,\n subdomainStringsRender\n} from \"../../helpers/SubdomainHelper\";\nimport arrowButton from \"../../assets/images/arrow-down.svg\";\nimport { SESSION_KEYS, setSession } from \"../../helpers/sessionStore\";\n\nconst language = languageHelper();\n\nconst { getPreventResumeOrderState } = activeOrderSelectors;\nconst { findCurrentView: findCurrentViewAction } = activeOrderActions;\n\nconst {\n toggleNoConfirmationModal,\n toggleAlreadyStartedErrorModal,\n toggleUnexpectedErrorModal,\n setCurrentView,\n toggleCancelledByDispatchErrorModal,\n toggleDispatchWillCallModal,\n login\n} = actions;\n\nconst {\n getCurrentView,\n getNoConfirmationModalState,\n getUnexpectedErrorModalState,\n getAlreadyStartedErrorModalState,\n getCancelledByDispatchModalState,\n getDispatchWillCallModalState\n} = selectors;\nclass CreateOrder extends React.Component {\n state = {\n toggleDescription: false,\n descriptionHeight: 0\n };\n\n componentDidMount() {\n const { findCurrentView } = this.props;\n\n setSession(SESSION_KEYS.appId, process.env.REACT_APP_APPLICATION_ID);\n findCurrentView();\n }\n\n toggleDescriptionHandler = () => {\n const { toggleDescription } = this.state;\n if (!toggleDescription) {\n this.expandDescription();\n } else {\n this.collapseDescription();\n }\n this.setState(prevState => ({\n toggleDescription: !toggleDescription\n }));\n };\n\n expandDescription = () => {\n this.setState({ descriptionHeight: 10 });\n };\n\n collapseDescription = () => {\n this.setState({ descriptionHeight: 0 });\n };\n\n render() {\n const {\n closeNoConfirmationModal,\n noConfirmationModalState,\n alreadyStartedErrorModalState,\n unexpectedErrorModalState,\n closeAlreadyStartedErrorModal,\n closeUnexpectedErrorModal,\n currentView,\n cancelledByDispatchModalState,\n closeCancelledByDispatchErrorModal,\n dispatchWillCallModalState,\n closeDispatchWillCallModal,\n intl\n } = this.props;\n\n const { toggleDescription } = this.state;\n\n const MetaDataHandler = () => {\n const allowMetadata = isSubdomainHelper();\n\n return allowMetadata ? (\n {\n this.DOMRef = el;\n }}\n >\n
\n \n \n \n Visa mer information\n \n \n
\n \n {\n this.regionTextRef = el;\n }}\n >\n {subdomainStringsRender(intl)}\n
\n
\n
\n ) : null;\n };\n\n return (\n <>\n {noConfirmationModalState && (\n \n )}\n {dispatchWillCallModalState && (\n \n {intl.formatMessage({\n id: \"CreateOrder.CustomerDetails.DisplayedPhoneNumber\",\n defaultMessage: \"Call +4620400500\",\n description: \"Displayed phonenr to call center\"\n })}\n \n }\n primaryModalButtonAction={closeDispatchWillCallModal}\n primaryModalButtonText={\n language.createOrder.dispatchWillCallModal.button\n }\n />\n )}\n {alreadyStartedErrorModalState && (\n \n )}\n {unexpectedErrorModalState && (\n \n )}\n {cancelledByDispatchModalState && (\n \n )}\n {/* pointer-events-none class makes it able to click on map trough createOrder container */}\n \n {currentView === CUSTOMER_DETAILS_VIEW && }\n {currentView === CAR_POSITION_VIEW && }\n {currentView === DAMAGE_REASON_VIEW && }\n {currentView === ESTIMATE_PRICE_VIEW && }\n {currentView === SEEKING_RESPONDER_VIEW && }\n {currentView === CONFIRM_ORDER_VIEW && }\n {currentView === USER_TERMS_VIEW && }\n {currentView === TMA_CAR_TERMS_VIEW && }\n {currentView === CUSTOMER_DETAILS_VIEW && }\n
\n \n );\n }\n}\n\nCreateOrder.propTypes = {\n closeNoConfirmationModal: PropTypes.func.isRequired,\n noConfirmationModalState: PropTypes.bool.isRequired,\n alreadyStartedErrorModalState: PropTypes.bool.isRequired,\n unexpectedErrorModalState: PropTypes.bool.isRequired,\n closeAlreadyStartedErrorModal: PropTypes.func.isRequired,\n closeUnexpectedErrorModal: PropTypes.func.isRequired,\n currentView: PropTypes.string.isRequired,\n cancelledByDispatchModalState: PropTypes.bool.isRequired,\n closeCancelledByDispatchErrorModal: PropTypes.func.isRequired,\n dispatchWillCallModalState: PropTypes.bool.isRequired,\n closeDispatchWillCallModal: PropTypes.func.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired,\n findCurrentView: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n preventResumeOrder: getPreventResumeOrderState(state),\n currentView: getCurrentView(state),\n noConfirmationModalState: getNoConfirmationModalState(state),\n unexpectedErrorModalState: getUnexpectedErrorModalState(state),\n cancelledByDispatchModalState: getCancelledByDispatchModalState(state),\n alreadyStartedErrorModalState: getAlreadyStartedErrorModalState(state),\n dispatchWillCallModalState: getDispatchWillCallModalState(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n findCurrentView: () => dispatch(findCurrentViewAction()),\n closeNoConfirmationModal: () => {\n dispatch(toggleNoConfirmationModal(false));\n dispatch(setCurrentView(CUSTOMER_DETAILS_VIEW));\n },\n closeAlreadyStartedErrorModal: () => {\n dispatch(toggleAlreadyStartedErrorModal(false));\n dispatch(login());\n },\n closeUnexpectedErrorModal: () => {\n logout();\n dispatch(toggleUnexpectedErrorModal(false));\n history.push(CREATE_ORDER_PATH);\n },\n closeCancelledByDispatchErrorModal: () => {\n logout();\n dispatch(toggleCancelledByDispatchErrorModal(false));\n dispatch(setCurrentView(CUSTOMER_DETAILS_VIEW));\n history.push(CREATE_ORDER_PATH);\n },\n closeDispatchWillCallModal: () => {\n logout();\n dispatch(toggleDispatchWillCallModal(false));\n history.push(CREATE_ORDER_PATH);\n }\n});\n\nexport default injectIntl(\n connect(mapStateToProps, mapDispatchToProps)(CreateOrder)\n);\n","import React from \"react\";\nimport {\n GOTEBORG_SUBDOMAIN,\n MALMO_SUBDOMAIN,\n STOCKHOLM_SUBDOMAIN\n} from \"../constants/routeConstants\";\n\nexport const isSubdomainHelper = () => {\n const subdomain = window.location.hostname.split(\".\")[1];\n switch (subdomain) {\n case STOCKHOLM_SUBDOMAIN:\n case MALMO_SUBDOMAIN:\n case GOTEBORG_SUBDOMAIN:\n return true;\n default:\n return false;\n }\n};\n\nexport const subdomainStringsRender = intl => {\n const subdomain = window.location.hostname.split(\".\")[1];\n\n switch (subdomain) {\n case STOCKHOLM_SUBDOMAIN:\n return (\n <>\n

\n {intl.formatMessage({\n id: \"SubdomainInfo.Stockholm\",\n defaultMessage:\n \"Assistansbolaget are quick to help you with towing of cars, light trucks, trailers, motorhomes or MC’s in Stockholm. Upon arrival we try to repair your vehicle on spot, if that’s not possible we’ll tow the vehicle to the nearest workshop.\",\n description: \"SEO text for Stockholm subdomain\"\n })}\n

\n

\n {intl.formatMessage({\n id: \"SubdomainInfo.GeneralInfo\",\n defaultMessage:\n \"Our towing is safe and price worthy. We are the leading option with 350 000 satisfied customers in the Nordics.\",\n description: \"General towing info for subdomain.\"\n })}\n

\n \n );\n case MALMO_SUBDOMAIN:\n return (\n <>\n

\n {intl.formatMessage({\n id: \"SubdomainInfo.Malmo\",\n defaultMessage:\n \"Assistansbolaget are quick to help you with towing of cars, light trucks, trailers, motorhomes or MC’s in Malmo. Upon arrival we try to repair your vehicle on spot, if that’s not possible we’ll tow the vehicle to the nearest workshop.\",\n description: \"SEO text for Malmo subdomain\"\n })}\n

\n

\n {intl.formatMessage({\n id: \"SubdomainInfo.GeneralInfo\",\n defaultMessage:\n \"Our towing is safe and price worthy. We are the leading option with 350 000 satisfied customers in the Nordics.\",\n description: \"General towing info for subdomain.\"\n })}\n

\n \n );\n case GOTEBORG_SUBDOMAIN:\n return (\n <>\n

\n {intl.formatMessage({\n id: \"SubdomainInfo.Goteborg\",\n defaultMessage:\n \"Assistansbolaget are quick to help you with towing of cars, light trucks, trailers, motorhomes or MC’s in Goteborg. Upon arrival we try to repair your vehicle on spot, if that’s not possible we’ll tow the vehicle to the nearest workshop.\",\n description: \"SEO text for Goteborg subdomain\"\n })}\n

\n

\n {intl.formatMessage({\n id: \"SubdomainInfo.GeneralInfo\",\n defaultMessage:\n \"Our towing is safe and price worthy. We are the leading option with 350 000 satisfied customers in the Nordics.\",\n description: \"General towing info for subdomain.\"\n })}\n

\n \n );\n default:\n return null;\n }\n};\n","import { fromJS } from \"immutable\";\nimport languageHelper from \"../../helpers/languageHelper\";\nimport * as constants from \"./constants\";\nimport { CUSTOMER_DETAILS_VIEW } from \"./viewConstants\";\n\nconst language = languageHelper();\n\nconst initialState = fromJS({\n isFetchingVehicle: false,\n isFetchingPerson: false,\n view: { current: CUSTOMER_DETAILS_VIEW, next: \"\", previous: \"\" },\n toggleForm: false,\n noConfirmationModalState: false,\n unexpectedErrorModalState: false,\n alreadyStartedErrorModalState: false,\n estimatePriceCollectedCoords: null,\n estimateAssistancePrice: 0,\n estimateTowingPrice: 0,\n estimateCalculatedAssistancePrice: 0,\n estimateCalculatedTowingPrice: 0,\n estimateTime: {\n string: \"\",\n seconds: 0\n },\n socialNumberFieldError: { show: false, message: \"\", type: \"\" },\n isCustomer: false,\n customerType: undefined,\n regnoFieldError: { show: false, message: \"\", type: \"\" },\n fetchingFinalPrice: false,\n finalPrice: {\n assistance_price: null,\n calculated_assistance_price: null,\n distance: null,\n driver_latitude: null,\n driver_longitude: null,\n time: null,\n towing_price: null,\n calculated_towing_price: null,\n unit: null,\n workshop_latitude: null,\n workshop_longitude: null\n },\n towDestination: { showTowDestination: false },\n previousEstimate: { show: false, price: 0 },\n searchPlacesResult: {},\n cancelledByDispatchModalState: false,\n dispatchWillCallModalState: false,\n hasPreviousVehiclePositionChanged: false,\n damageReasons: [],\n confinedSpaces: \"\",\n selfServeMission: {},\n isAccepted: false\n});\n\nconst reducer = (state = initialState, action) => {\n let newState = state;\n switch (action.type) {\n case constants.FETCH_ESTIMATE_SUCCESS:\n newState = newState.set(\n \"estimateAssistancePrice\",\n action.estimate.assistance_price\n );\n newState = newState.set(\n \"estimateTowingPrice\",\n action.estimate.towing_price\n );\n newState = newState.set(\n \"estimateCalculatedAssistancePrice\",\n action.estimate.calculated_assistance_price\n );\n newState = newState.set(\n \"estimateCalculatedTowingPrice\",\n action.estimate.calculated_towing_price\n );\n newState = newState.setIn(\n [\"estimateTime\", \"string\"],\n action.estimate.time\n );\n newState = newState.setIn(\n [\"estimateTime\", \"seconds\"],\n action.estimate.time_seconds\n );\n newState = newState.setIn([\"customerType\"], action.estimate.customerType);\n return newState;\n case constants.FETCH_ESTIMATE_SUCCESS_COORDS:\n newState = newState.set(\"estimatePriceCollectedCoords\", action.payload);\n return newState;\n case constants.GO_FORWARD: {\n const next = newState.getIn([\"view\", \"next\"]);\n const current = newState.getIn([\"view\", \"current\"]);\n newState = newState.setIn([\"view\", \"previous\"], current);\n newState = newState.setIn([\"view\", \"current\"], next);\n newState = newState.setIn([\"view\", \"next\"], \"\");\n return newState;\n }\n case constants.GO_BACK: {\n const previous = newState.getIn([\"view\", \"previous\"]);\n const current = newState.getIn([\"view\", \"current\"]);\n newState = newState.setIn([\"view\", \"previous\"], \"\");\n newState = newState.setIn([\"view\", \"next\"], current);\n newState = newState.setIn([\"view\", \"current\"], previous);\n return newState;\n }\n case constants.SET_NEXT_VIEW:\n newState = newState.setIn([\"view\", \"next\"], action.payload);\n return newState;\n case constants.SET_CURRENT_VIEW:\n newState = newState.setIn([\"view\", \"current\"], action.payload);\n return newState;\n case constants.SET_MODAL_VIEW: {\n const current = newState.getIn([\"view\", \"current\"]);\n newState = newState.setIn([\"view\", \"modalBack\"], current);\n newState = newState.setIn([\"view\", \"current\"], action.payload);\n return newState;\n }\n case constants.MODAL_GO_BACK: {\n const current = newState.getIn([\"view\", \"modalBack\"]);\n newState = newState.setIn([\"view\", \"modalBack\"], \"\");\n newState = newState.setIn([\"view\", \"current\"], current);\n return newState;\n }\n case constants.SET_PREVIOUS_VIEW:\n newState = newState.setIn([\"view\", \"previous\"], action.payload);\n return newState;\n case constants.FETCHING_VEHICLE:\n newState = newState.set(\"isFetchingVehicle\", true);\n newState = newState.set(\"regnoFieldError\", {\n show: false,\n message: \"\",\n type: \"\"\n });\n return newState;\n case constants.GET_VEHICLE_DETAILS_SUCCESS:\n newState = newState.set(\"isFetchingVehicle\", false);\n newState = newState.set(\"regnoFieldError\", {\n show: false,\n message: \"\",\n type: \"\"\n });\n return newState;\n case constants.ERROR_VEHICLE_NOT_FOUND:\n newState = newState.set(\"isFetchingVehicle\", false);\n newState = newState.set(\"regnoFieldError\", {\n show: true,\n message: language.errors.vehicleNotFound,\n type: \"regno\"\n });\n return newState;\n case constants.GET_VEHICLE_DETAILS_FAILURE:\n newState = newState.set(\"isFetchingVehicle\", false);\n newState = newState.set(\"regnoFieldError\", {\n show: true,\n message: language.errors.fetchVehicleFailure,\n type: \"regno\"\n });\n return newState;\n case constants.FETCH_DAMAGE_REASONS_SUCCESS: {\n newState = newState.set(\"damageReasons\", action.payload);\n return newState;\n }\n case constants.FETCH_CONFINED_SPACE_ATTRIBUTES_SUCCESS: {\n const { content } = action.payload;\n newState = newState.set(\"confinedSpaces\", content[0].id);\n return newState;\n }\n case constants.FETCH_VEHICLE_INSURANCE_LEVELS_SUCCESS: {\n newState = newState.set(\"insuranceLevels\", action.payload);\n return newState;\n }\n case constants.START_FETCH_FINAL_PRICE:\n newState = newState.set(\"fetchingFinalPrice\", true);\n return newState;\n case constants.FETCH_FINAL_PRICE_SUCCESS:\n newState = newState.set(\"fetchingFinalPrice\", false);\n newState = newState.set(\"finalPrice\", action.finalPrice);\n return newState;\n case constants.FETCH_FINAL_PRICE_FAILURE:\n newState = newState.set(\"fetchingFinalPrice\", false);\n return newState;\n case constants.TOGGLE_NO_CONFIRMATION_MODAL:\n newState = newState.set(\"noConfirmationModalState\", action.payload);\n return newState;\n case constants.TOGGLE_ALREADY_STARTED_ERROR_MODAL:\n newState = newState.set(\"alreadyStartedErrorModalState\", action.payload);\n return newState;\n case constants.TOGGLE_UNEXPECTED_ERROR_MODAL:\n newState = newState.set(\"unexpectedErrorModalState\", action.payload);\n return newState;\n case constants.FETCHING_PERSON:\n newState = newState.set(\"isFetchingPerson\", true);\n newState = newState.set(\"socialNumberFieldError\", {\n show: false,\n message: \"\",\n type: \"\"\n });\n return newState;\n case constants.FETCHING_PERSON_SUCCESS:\n newState = newState.set(\"isFetchingPerson\", false);\n newState = newState.set(\"isCustomer\", true);\n newState = newState.set(\"socialNumberFieldError\", {\n show: false,\n message: \"\",\n type: \"\"\n });\n return newState;\n case constants.GET_PERSON_DETAILS_FAILURE:\n newState = newState.set(\"isCustomer\", false);\n newState = newState.set(\"isFetchingPerson\", false);\n newState = newState.set(\"socialNumberFieldError\", {\n show: true,\n message: language.errors.fetchPersonFailure,\n type: \"socialNumber\"\n });\n return newState;\n case constants.PERSON_NOT_FOUND:\n newState = newState.set(\"isFetchingPerson\", false);\n newState = newState.set(\"isCustomer\", false);\n newState = newState.set(\"socialNumberFieldError\", {\n show: true,\n message: language.errors.personNotFound,\n type: \"socialNumber\"\n });\n return newState;\n case constants.TOGGLE_ESTIMATE_DESTINATION: {\n const towDestination = newState.getIn([\n \"towDestination\",\n \"showTowDestination\"\n ]);\n newState = newState.setIn(\n [\"towDestination\", \"showTowDestination\"],\n !towDestination\n );\n return newState;\n }\n case constants.SET_TOGGLE_ESTIMATE_DESTINATION_VALUE: {\n newState = newState.setIn(\n [\"towDestination\", \"showTowDestination\"],\n action.payload\n );\n return newState;\n }\n case constants.SET_PREVIOUS_PRICE:\n newState = newState.setIn([\"previousEstimate\", \"price\"], action.payload);\n return newState;\n case constants.SET_SHOW_PREVIOUS_PRICE:\n newState = newState.setIn([\"previousEstimate\", \"show\"], action.show);\n return newState;\n case constants.SET_SEARCH_PLACES_RESULT:\n newState = newState.set(\"searchPlacesResult\", action.payload);\n return newState;\n case constants.TOGGLE_ORDER_CANCELLED_BY_DISPATCH_MODAL:\n newState = newState.set(\"cancelledByDispatchModalState\", action.payload);\n return newState;\n case constants.TOGGLE_DISPATCH_WILL_CALL_MODAL:\n newState = newState.set(\"dispatchWillCallModalState\", action.payload);\n return newState;\n case constants.SET_NO_ESTIMATE_REASON:\n newState = newState.set(\"noEstimateReason\", action.payload);\n return newState;\n case constants.SET_HAS_PREVIOUS_VEHICLE_POSITION_CHANGED:\n newState = newState.set(\n \"hasPreviousVehiclePositionChanged\",\n action.payload\n );\n return newState;\n case constants.SAVE_SELF_SERVE_MISSION_SUCCESS:\n newState = newState.set(\"selfServeMission\", action.payload);\n return newState;\n\n case constants.ACCEPT_COOKIE_VALUE:\n newState = newState.set(\"isAccepted\", true);\n return newState;\n\n default:\n return newState;\n }\n};\n\nexport default { reducer };\n","import {\n all,\n call,\n put,\n select,\n takeLatest,\n delay,\n take,\n race\n} from \"redux-saga/effects\";\nimport { getFormValues, submit, clearFields, change } from \"redux-form\";\nimport history from \"../../history\";\nimport {\n CREATE_ORDER,\n ESTIMATE_PRICE,\n ESTIMATE_PRICE_DESTINATION,\n FETCH_FINAL_PRICE,\n LISTEN_FOR_DRIVER,\n LOGIN,\n DENY_HELP,\n VALUES_CHANGED,\n GET_POSITION,\n CUSTOMER_DETAILS_FORM_SUBMITTED,\n FETCH_PERSON,\n FETCH_VEHICLE,\n CREATE_ORDER_FORM_SUBMITTED,\n FETCH_DISPATCH,\n CHECK_PREVIOUS_VEHICLE_POSITION,\n FETCH_TOKEN,\n CANCEL_LISTEN_FOR_DRIVER,\n FETCH_DAMAGE_REASONS,\n FETCH_CONFINED_SPACE_ATTRIBUTES,\n FETCH_PAYMENT_OPTIONS,\n FETCH_VEHICLE_INSURANCE_LEVELS\n} from \"./constants\";\nimport service from \"./service\";\nimport actions from \"./actions\";\nimport activeOrderService from \"../activeOrder/service\";\nimport activeOrderActions from \"../activeOrder/actions\";\nimport {\n SEARCHING,\n CANCELLED,\n PENDING,\n COMPLETED,\n REJECTED,\n WAITING_FOR_DISPATCH,\n WEB,\n DISPATCH,\n STARTED,\n ARRIVED,\n PENDING_DISPATCH,\n USER,\n INACTIVITY,\n PREPARE_TRIP_TO_WORKSHOP,\n PICKEDUP,\n DROPPED\n} from \"../../constants/orderStatusConstants\";\nimport {\n ACTIVE_ORDER_PATH,\n CREATE_ORDER_PATH,\n SUMMARY_PATH\n} from \"../../constants/routeConstants\";\nimport activeOrderSelectors from \"../activeOrder/selectors\";\nimport welcomeScreenSelectors from \"../welcomeScreen/selectors\";\nimport welcomeScreenActions from \"../welcomeScreen/actions\";\nimport {\n DAMAGE_REASON_VIEW,\n CAR_POSITION_VIEW,\n CONFIRM_ORDER_VIEW,\n SEEKING_RESPONDER_VIEW,\n CUSTOMER_DETAILS_VIEW\n} from \"./viewConstants\";\nimport selectors from \"./selectors\";\nimport dispatchPositionActions from \"../dispatchPosition/actions\";\nimport {\n selectors as carPositionPickerSelectors,\n actions as carPositionPickerActions\n} from \"../carPositionPicker\";\nimport { SAVE_CENTER_COORDS } from \"../carPositionPicker/constants\";\nimport validators from \"./validators\";\nimport { setCookie } from \"../../helpers/cookieHelper\";\nimport toggleLoading from \"../loading/actions\";\nimport logErrorHelper from \"../../helpers/logErrorHelper\";\nimport {\n BaseUrl,\n GET_JWT_TOKEN,\n POST,\n SELF_SERVE\n} from \"../../constants/apiConstants\";\nimport api from \"../../helpers/apiUtils\";\nimport {\n getSession,\n SESSION_KEYS,\n setSession\n} from \"../../helpers/sessionStore\";\n\nconst {\n setCurrentView,\n cancelListenForDriver,\n toggleUnexpectedErrorModal,\n toggleDispatchWillCallModal,\n fetchEstimateSuccess,\n fetchEstimateSuccessCoords,\n toggleNoConfirmationModal,\n toggleCancelledByDispatchErrorModal,\n listenForDriver,\n setShopLocation,\n fetchingVehicle,\n setPreviousPrice,\n getPersonDetailsFailure,\n getPositionSuccess,\n toggleAlreadyStartedErrorModal,\n setHasPreviousVehiclePositionChanged,\n setShowPreviousPrice,\n setToogleEstimateDestinationValue,\n getVehicleDetailsSuccess,\n getVehicleDetailsFailure,\n vehicleNotFoundError,\n setNoEstimateReason,\n fetchingPerson,\n fetchingPersonSuccess,\n personNotFound,\n fetchCurrentDamageReasonsSuccess,\n fetchCurrentDamageReasonsFailure,\n fetchConfinedSpaceAttributesSuccess,\n fetchConfinedSpaceAttributesFailure,\n fetchPaymentOptionsListFailure,\n fetchPaymentOptionsListSuccess,\n saveSelfServeMissionSuccess,\n fetchVehicleInsuranceLevelsSuccess,\n fetchVehicleInsuranceLevelsFailure\n} = actions;\nconst {\n setOrderStatus,\n getEstimatedArrivalTimeSuccess,\n toggleStartedModal\n} = activeOrderActions;\nconst { saveCenterCoords } = carPositionPickerActions;\nconst {\n setVehicleLocation,\n fetchingReverseGeocode,\n setPositionToServe\n} = welcomeScreenActions;\nconst {\n getSocialNumberFieldError,\n getEstimateTowingPrice,\n getSearchPlacesResult,\n getIsCustomer,\n getIsFetchingPerson,\n getIsFetchingVehicle,\n getEstimatePriceCollectedCoords,\n selectConfinedSpaces,\n selectVehicleInsuranceLevels\n} = selectors;\n\nconst {\n acceptOrder,\n estimatePrice,\n estimatePriceDestination,\n fetchToken,\n requestDriver,\n getLocation,\n getUserInfo,\n reverseGeoCode,\n requestDispatch,\n saveCustomerToPyramid,\n getLatestOrder,\n getInsuranceLevelsForOrgUnit,\n getAttributeConfinedSpace,\n getPaymentOptions,\n getVehicleInsuranceLevels\n} = service;\nconst { cancelOrder, getEta, getOrderById } = activeOrderService;\nconst { toggleLocationBlockedModal, showDispatchMap } = dispatchPositionActions;\nconst {\n getVehiclePosition,\n getShopCoordinates,\n getUnsavedShopPosition,\n getServeVehiclePosition\n} = welcomeScreenSelectors;\nconst { getCenterCoords } = carPositionPickerSelectors;\nconst { getOrder } = activeOrderSelectors;\n\nconst {\n validateMobile,\n validateRegno,\n validateSocialNumber,\n validatePosition\n} = validators;\n\nconst ONGOING_STATUSES = [\n STARTED,\n ARRIVED,\n PREPARE_TRIP_TO_WORKSHOP,\n PICKEDUP,\n DROPPED\n];\n\nfunction urlSearchParams() {\n const urlParams = new URLSearchParams(window.location.search);\n return {\n mobile: urlParams.get(\"phone\"),\n regno: urlParams.get(\"regno\"),\n id: urlParams.get(\"id\"),\n redirect: urlParams.get(\"redirect\"),\n transport: urlParams.get(\"transport\")\n };\n}\n\nfunction* createOrderWorker() {\n try {\n const order = yield select(getOrder);\n yield put(toggleLoading(true));\n yield call(acceptOrder, { request_id: order.id });\n const { data } = yield call(getOrderById, order.id);\n yield all([\n put(toggleLoading(false)),\n put(setOrderStatus(data)),\n put(cancelListenForDriver())\n ]);\n history.push(`${ACTIVE_ORDER_PATH}?id=${order.id}`);\n yield put(toggleStartedModal(true));\n } catch (error) {\n yield all([\n put(toggleLoading(false)),\n put(toggleUnexpectedErrorModal(true))\n ]);\n }\n}\n\nfunction* estimatePriceWorker() {\n try {\n const vehiclePos = yield select(getCenterCoords);\n yield put(toggleLoading(true));\n const { regno } = yield select(getFormValues(\"customerDetails\"));\n const { garage, damageReason, engineInsuranceType } = yield select(\n getFormValues(\"createOrderForm\")\n );\n const estimate = yield call(estimatePrice, {\n vehiclePos,\n regno,\n garage,\n damageReason,\n engineInsuranceType\n });\n if (estimate.exception === \"ErrorException\") {\n throw Error(estimate.message);\n }\n if (\n estimate.message !== \"No Drivers Found\" &&\n estimate.is_driver_available\n ) {\n const shopPosition = {\n formattedAddress: `${estimate.workshop_address}, ${estimate.workshop_zipcode}, ${estimate.workshop_city}`,\n latitude: estimate.workshop_latitude,\n longitude: estimate.workshop_longitude,\n address: estimate.workshop_address,\n zipcode: estimate.workshop_zipcode,\n city: estimate.workshop_city,\n name: estimate.workshop_name\n };\n yield all([\n put(setNoEstimateReason(undefined)),\n put(fetchEstimateSuccess(estimate)),\n put(fetchEstimateSuccessCoords(vehiclePos)),\n put(setShopLocation(shopPosition)),\n put(toggleLoading(false))\n ]);\n } else if (!estimate.is_driver_available) {\n yield all([\n put(setNoEstimateReason(\" \")),\n put(fetchEstimateSuccessCoords({})),\n put(setCurrentView(SEEKING_RESPONDER_VIEW)),\n put(toggleLoading(false))\n ]);\n } else {\n const reason =\n estimate.reason !== \"\" ? estimate.reason : estimate.message;\n yield all([\n put(setNoEstimateReason(reason)),\n put(fetchEstimateSuccessCoords({})),\n put(setCurrentView(SEEKING_RESPONDER_VIEW)),\n put(toggleLoading(false))\n ]);\n }\n } catch (error) {\n yield all([\n put(toggleLoading(false)),\n put(toggleUnexpectedErrorModal(true))\n ]);\n }\n}\n\nfunction* setPreviousEstimate() {\n const towingPrice = yield select(getEstimateTowingPrice);\n yield put(setPreviousPrice(towingPrice));\n}\n\nfunction* estimatePriceDestinationWorker() {\n try {\n yield call(setPreviousEstimate);\n const vehiclePos = yield select(getCenterCoords);\n const destinationPos = yield select(getUnsavedShopPosition);\n const { regno } = yield select(getFormValues(\"customerDetails\"));\n const { garage, damageReason, engineInsuranceType } = yield select(\n getFormValues(\"createOrderForm\")\n );\n yield put(toggleLoading(true));\n const estimate = yield call(estimatePriceDestination, {\n vehiclePos,\n destinationPos,\n regno,\n garage,\n damageReason,\n engineInsuranceType\n });\n yield put(toggleLoading(false));\n if (\n estimate.message !== \"No Drivers Found\" &&\n estimate.is_driver_available\n ) {\n yield all([\n put(setNoEstimateReason(undefined)),\n put(fetchEstimateSuccess(estimate)),\n put(setShopLocation(destinationPos)),\n put(fetchEstimateSuccessCoords(vehiclePos))\n ]);\n } else if (!estimate.is_driver_available) {\n yield all([\n put(setNoEstimateReason(\" \")),\n put(fetchEstimateSuccessCoords({})),\n put(setCurrentView(SEEKING_RESPONDER_VIEW)),\n put(toggleLoading(false))\n ]);\n } else {\n const reason =\n estimate.reason !== \"\" ? estimate.reason : estimate.message;\n yield all([put(setNoEstimateReason(reason))]);\n yield all([\n put(fetchEstimateSuccessCoords({})),\n put(setCurrentView(SEEKING_RESPONDER_VIEW))\n ]);\n }\n } catch (error) {\n yield all([\n put(toggleLoading(false)),\n put(toggleUnexpectedErrorModal(true))\n ]);\n }\n}\n\n// todo: Exclude regno for transport mission\nfunction* fetchTokenWorker() {\n try {\n const { regno, mobile } = urlSearchParams();\n const customerDetailsFormValues = yield select(\n getFormValues(\"customerDetails\")\n );\n const { regno: r, mobile: m } = customerDetailsFormValues ?? {};\n\n let loginObject;\n\n if (regno && mobile) {\n loginObject = {\n regno,\n mobile\n };\n } else {\n loginObject = {\n regno: r,\n mobile: m\n };\n }\n const res = yield call(fetchToken, loginObject);\n if (!res.status) {\n throw Error(\"Error fetching token\");\n }\n yield call(setCookie, { name: \"token\", val: res.access_token });\n } catch (error) {\n yield all([\n put(toggleLoading(false)),\n put(toggleUnexpectedErrorModal(true))\n ]);\n throw Error(error);\n }\n}\n\nfunction* loginWorker() {\n try {\n const { id, redirect, transport } = urlSearchParams();\n yield call(fetchTokenWorker);\n\n let order;\n if (id) {\n const { data } = yield call(getOrderById, id);\n order = data;\n } else {\n const { data } = yield call(getLatestOrder);\n order = data;\n }\n yield put(setOrderStatus(order));\n\n if (!redirect) {\n return;\n }\n\n let params = `?id=${order.id}`;\n\n if (transport) {\n params += \"&transport=true\";\n }\n\n if (order) {\n if (redirect.includes(\"createOrder\")) {\n history.push(`${CREATE_ORDER_PATH}${params}`);\n yield put(listenForDriver());\n }\n if (redirect.includes(\"activeOrder\")) {\n history.push(`${ACTIVE_ORDER_PATH}${params}`);\n }\n if (redirect.includes(\"summary\")) {\n history.push(`${SUMMARY_PATH}${params}`);\n }\n }\n } catch (error) {\n yield all([\n put(toggleLoading(false)),\n put(toggleUnexpectedErrorModal(true))\n ]);\n throw Error(error);\n }\n}\n\nfunction* denyWorker() {\n try {\n const { id } = urlSearchParams();\n yield put(toggleLoading(true));\n const { data } = yield call(getOrderById, id);\n if (data.status === PENDING) {\n yield call(cancelOrder, data.id);\n const { data: d } = yield call(getOrderById, id);\n yield all([\n put(setCurrentView(CUSTOMER_DETAILS_VIEW)),\n put(cancelListenForDriver()),\n put(setOrderStatus(d)),\n put(toggleLoading(false))\n ]);\n } else {\n yield all([\n put(setCurrentView(CUSTOMER_DETAILS_VIEW)),\n put(cancelListenForDriver()),\n put(setOrderStatus(data)),\n put(toggleLoading(false))\n ]);\n }\n history.push(CREATE_ORDER_PATH);\n } catch (error) {\n yield all([\n put(toggleLoading(false)),\n put(toggleUnexpectedErrorModal(true))\n ]);\n }\n}\n\nfunction* clearValues() {\n yield put(clearFields(\"createOrderForm\", false, false, \"damageDetails\"));\n}\n\nfunction* listenForDriverWorker() {\n try {\n while (1) {\n const { id } = urlSearchParams();\n const { data } = yield call(getOrderById, id);\n yield put(setOrderStatus(data));\n if (data.status === PENDING && data.booking_by === WEB) {\n yield put(toggleLoading(true));\n const etaResponse = yield call(getEta, data.id);\n yield all([\n put(getEstimatedArrivalTimeSuccess(etaResponse)),\n put(\n saveCenterCoords({ lat: data.s_latitude, lng: data.s_longitude })\n ),\n put(setCurrentView(CONFIRM_ORDER_VIEW))\n ]);\n history.push(`${CREATE_ORDER_PATH}?id=${data.id}`);\n yield put(toggleLoading(false));\n yield delay(90000);\n } else if (ONGOING_STATUSES.includes(data.status)) {\n history.push(`${ACTIVE_ORDER_PATH}?id=${data.id}`);\n yield put(cancelListenForDriver());\n } else if (data.status === COMPLETED) {\n if (window.location.pathname !== ACTIVE_ORDER_PATH) {\n // history.push(WELCOME_SCREEN_PATH);\n yield put(cancelListenForDriver());\n }\n } else if (data.status === CANCELLED) {\n yield put(change(\"customerDetails\", \"noEstimate\", undefined));\n if (\n data.cancelled_by === USER &&\n data.booking_by === WEB &&\n data.cancel_reason === INACTIVITY\n ) {\n yield put(toggleNoConfirmationModal(true));\n history.push(CREATE_ORDER_PATH);\n yield put(cancelListenForDriver());\n }\n if (data.cancelled_by === REJECTED && data.booking_by === WEB) {\n yield all([\n put(setNoEstimateReason(REJECTED)),\n put(cancelListenForDriver())\n ]);\n history.push(CREATE_ORDER_PATH);\n } else if (data.cancelled_by === DISPATCH) {\n yield all([\n put(toggleCancelledByDispatchErrorModal(true)),\n put(cancelListenForDriver())\n ]);\n } else {\n yield put(setCurrentView(CUSTOMER_DETAILS_VIEW));\n history.push(CREATE_ORDER_PATH);\n yield put(cancelListenForDriver());\n }\n } else if (\n data.status === SEARCHING ||\n data.status === WAITING_FOR_DISPATCH ||\n data.status === PENDING_DISPATCH\n ) {\n history.push(`${CREATE_ORDER_PATH}?id=${data.id}`);\n yield all([put(setCurrentView(SEEKING_RESPONDER_VIEW))]);\n yield delay(2000);\n yield put(listenForDriver());\n } else {\n yield put(cancelListenForDriver());\n }\n }\n } catch (error) {\n yield all([\n put(toggleLoading(false)),\n put(toggleUnexpectedErrorModal(true)),\n put(cancelListenForDriver())\n ]);\n }\n}\n\nfunction* getPositionWorker() {\n try {\n yield put(toggleLoading(true));\n const position = yield call(getLocation);\n yield put(toggleLoading(false));\n yield put(toggleLocationBlockedModal(true));\n if (position) {\n yield put(toggleLocationBlockedModal(false));\n yield all([\n put(\n getPositionSuccess({\n latitude: position.coords.latitude,\n longitude: position.coords.longitude,\n accuracy: position.coords.accuracy\n })\n ),\n put(showDispatchMap(true)),\n put(setCurrentView(CAR_POSITION_VIEW))\n ]);\n } else {\n yield all([\n put(showDispatchMap(true)),\n put(setCurrentView(CAR_POSITION_VIEW))\n ]);\n }\n } catch (error) {\n yield put(toggleLocationBlockedModal(true));\n yield all([\n put(setCurrentView(CAR_POSITION_VIEW)),\n put(toggleLoading(false))\n ]);\n }\n}\n\nfunction* fetchPersonWorker(action) {\n try {\n if (!action.payload) {\n throw Error(\"No payload\");\n }\n if (validateSocialNumber(action.payload)) {\n throw Error(\"Not a valid socialnumber\");\n }\n yield put(fetchingPerson());\n const res = yield call(getUserInfo, action.payload);\n if (res.isValid) {\n yield put(fetchingPersonSuccess());\n } else {\n yield put(personNotFound());\n }\n } catch (error) {\n if (error.message === \"Error Fetching Person\") {\n yield put(getPersonDetailsFailure());\n }\n }\n}\n\nfunction* getVehicleWorker(action) {\n try {\n if (!action.payload) {\n throw Error(\"No payload\");\n }\n if (validateRegno(action.payload)) {\n throw Error(\"Not a valid regno\");\n }\n yield put(fetchingVehicle());\n yield put(getVehicleDetailsSuccess());\n } catch (error) {\n if (\n error.message === \"No payload\" ||\n error.message === \"Not a valid regno\"\n ) {\n logErrorHelper(error);\n } else if (error.message === \"No vehicle found\") {\n yield put(vehicleNotFoundError());\n } else {\n yield put(getVehicleDetailsFailure());\n }\n }\n}\n\nfunction* saveVehicleAddressWorker(action) {\n try {\n if (action.payload) {\n const searchPlacesResult = yield select(getSearchPlacesResult);\n if (\n searchPlacesResult &&\n Number.parseFloat(searchPlacesResult.lat).toFixed(4) ===\n Number.parseFloat(action.payload.lat).toFixed(4) &&\n Number.parseFloat(searchPlacesResult.lng).toFixed(4) ===\n Number.parseFloat(action.payload.lng).toFixed(4)\n ) {\n yield put(setVehicleLocation(searchPlacesResult));\n if (searchPlacesResult && searchPlacesResult.address) {\n yield put(\n change(\n \"customerDetails\",\n \"carPosition\",\n searchPlacesResult.address.length >= 24\n ? `${searchPlacesResult.address.substring(0, 24)}...`\n : searchPlacesResult.address\n )\n );\n }\n } else {\n yield put(fetchingReverseGeocode(true));\n const res = yield call(reverseGeoCode, action.payload);\n yield put(fetchingReverseGeocode(false));\n\n yield put(\n setPositionToServe({\n lat: action.payload.lat,\n lng: action.payload.lng,\n address: res.address,\n zipCode: res.zipcode,\n city: res.town\n })\n );\n\n yield put(\n setVehicleLocation({\n lat: action.payload.lat,\n lng: action.payload.lng,\n address: res.formatted_address\n })\n );\n yield put(\n change(\n \"customerDetails\",\n \"carPosition\",\n res.formatted_address?.length >= 24\n ? `${res.formatted_address.substring(0, 24)}...`\n : res.formatted_address\n )\n );\n }\n }\n } catch (error) {\n yield all([\n put(fetchingReverseGeocode(false)),\n put(toggleUnexpectedErrorModal(true))\n ]);\n }\n}\n\n// eslint-disable-next-line consistent-return\nfunction* updateMissionSelfServe(body) {\n const gatOrgUnit = getSession(SESSION_KEYS.gatOrganizationUnit);\n const gatLocale = getSession(SESSION_KEYS.locale);\n const accessToken = getSession(SESSION_KEYS.accessToken);\n const appId = getSession(SESSION_KEYS.appId);\n try {\n const response = yield api.post(`${SELF_SERVE}`, BaseUrl.GatUrl, body, {\n gatOrgUnit,\n accessToken,\n gatLocale,\n appId\n });\n yield put(saveSelfServeMissionSuccess(response.data));\n return response.data;\n } catch (error) {\n logErrorHelper(error);\n }\n}\n\nfunction* submitCreateOrderForm() {\n try {\n const order = yield select(getOrder);\n yield put(submit(\"createOrderForm\"));\n const formValueCreate = yield select(getFormValues(\"createOrderForm\"));\n const formValueCustomer = yield select(getFormValues(\"customerDetails\"));\n const orderRegno = order?.customerVehicle?.registrationNumber;\n const orderMobile = order?.customer?.mobilePhone;\n const vehiclePosition = yield select(getServeVehiclePosition);\n const confinedSpacesId = yield select(selectConfinedSpaces);\n const vehicleInsuranceLevel = yield select(selectVehicleInsuranceLevels);\n const { lat, lng, address, city, zipCode } = vehiclePosition;\n const requestBody = {\n missionId: getSession(SESSION_KEYS.missionId),\n vehicleInsuranceLevel: vehicleInsuranceLevel.id,\n reason: formValueCreate.damageDetails.value,\n address,\n zipCode,\n city,\n latitude: lat,\n longitude: lng,\n registrationNumber: formValueCustomer?.regno || orderRegno,\n paymentOptionReference: null,\n mobilePhone: formValueCustomer?.mobile || orderMobile,\n attributes: [\n {\n attributeId: confinedSpacesId,\n value: formValueCreate.garage\n }\n ]\n };\n yield put(toggleLoading(true));\n const response = yield call(updateMissionSelfServe, requestBody);\n if (response.id) {\n yield put(setCurrentView(CONFIRM_ORDER_VIEW));\n }\n yield put(toggleLoading(false));\n } catch (error) {\n logErrorHelper(error);\n }\n}\n\nfunction* createGatBody() {\n const formValueCustomer = yield select(getFormValues(\"customerDetails\"));\n const formValueCreate = yield select(getFormValues(\"createOrderForm\"));\n // Default reserveTire to false if undefined\n if (formValueCreate.reserveTire === undefined) {\n formValueCreate.reserveTire = false;\n }\n // HACK Default terms to true until validation is removed from backend\n formValueCreate.terms = true;\n const vehiclePosition = yield select(getVehiclePosition);\n\n const damageReason = formValueCreate.damageReason.value;\n const engineInsuranceType = formValueCreate.engineInsuranceType.value;\n const { damageDetails } = formValueCreate.damageDetails || undefined;\n const { garage, reserveTire, terms } = formValueCreate;\n\n if (formValueCustomer.noEstimate) {\n return {\n s_address: vehiclePosition.address,\n s_latitude: vehiclePosition.lat,\n s_longitude: vehiclePosition.lng,\n damageReason,\n damageDetails,\n engineInsuranceType,\n regno: formValueCustomer.regno,\n mobile: formValueCustomer.mobile,\n garage,\n reserveTire,\n terms\n };\n }\n\n if (formValueCustomer.isInsured) {\n return {\n customerCode: formValueCustomer.socialNumber,\n s_address: vehiclePosition.address,\n s_latitude: vehiclePosition.lat,\n s_longitude: vehiclePosition.lng,\n damageReason,\n damageDetails,\n engineInsuranceType,\n regno: formValueCustomer.regno,\n mobile: formValueCustomer.mobile,\n garage,\n reserveTire,\n terms\n };\n }\n const destinationPos = yield select(getShopCoordinates);\n const body = {\n d_latitude: destinationPos.latitude,\n d_longitude: destinationPos.longitude,\n d_address: destinationPos.address,\n workshop_address: destinationPos.address,\n workshop_zipcode: destinationPos.zipcode,\n workshop_city: destinationPos.city,\n s_address: vehiclePosition.address,\n s_latitude: vehiclePosition.lat,\n s_longitude: vehiclePosition.lng,\n regno: formValueCustomer.regno,\n mobile: formValueCustomer.mobile,\n engineInsuranceType,\n damageReason,\n damageDetails,\n garage,\n reserveTire,\n terms\n };\n\n if (destinationPos.name) {\n body.workshop_name = destinationPos.name;\n }\n return body;\n}\n\nfunction* handleGatRequestError(error) {\n if (error.message === \"Request already in progress\") {\n yield put(toggleAlreadyStartedErrorModal(true));\n history.push(`${CREATE_ORDER_PATH}?redirect=${CREATE_ORDER_PATH}`);\n } else {\n put(toggleUnexpectedErrorModal(true));\n }\n}\n\nfunction* fetchFinalPriceWorker() {\n try {\n const body = yield call(createGatBody);\n const { mobile } = body;\n const result = yield call(requestDriver, body);\n const { customerCode } = result;\n const pyramidBody = {\n mobile,\n customerCode,\n updateCustomerInfo: {\n mobile\n }\n };\n yield call(saveCustomerToPyramid, pyramidBody);\n history.push(`${CREATE_ORDER_PATH}?id=${result.request_id}`);\n yield all([put(setOrderStatus(result)), put(listenForDriver())]);\n } catch (error) {\n yield call(handleGatRequestError, error);\n }\n}\n\nfunction* fetchDispatchWorker() {\n try {\n const body = yield call(createGatBody);\n const result = yield call(requestDispatch, body);\n history.push(`${CREATE_ORDER_PATH}?id=${result.request_id}`);\n yield all([put(setOrderStatus(result)), put(listenForDriver())]);\n } catch (error) {\n yield call(handleGatRequestError, error);\n }\n}\n\nfunction* hasPreviousVehiclePositionChangedWorker() {\n try {\n const mapCenterCoords = yield select(getCenterCoords);\n const estimatePriceCollectedCoords = yield select(\n getEstimatePriceCollectedCoords\n );\n\n if (estimatePriceCollectedCoords) {\n if (\n mapCenterCoords &&\n estimatePriceCollectedCoords.lat === mapCenterCoords.lat &&\n estimatePriceCollectedCoords.lng === mapCenterCoords.lng\n ) {\n yield put(setHasPreviousVehiclePositionChanged(false));\n } else {\n yield all([\n put(setShowPreviousPrice(false)),\n put(setToogleEstimateDestinationValue(false)),\n put(setHasPreviousVehiclePositionChanged(true))\n ]);\n }\n }\n } catch (error) {\n logErrorHelper(error);\n }\n}\n\nfunction* fetchCurrentDamageReasons() {\n try {\n const damageReasons = yield call(getInsuranceLevelsForOrgUnit);\n if (damageReasons) {\n yield put(fetchCurrentDamageReasonsSuccess(damageReasons.data));\n }\n } catch (error) {\n yield call(fetchCurrentDamageReasonsFailure);\n logErrorHelper(error);\n }\n}\n\nfunction* fetchPaymentOptions() {\n try {\n const paymentOptions = yield call(getPaymentOptions);\n if (paymentOptions) {\n yield put(fetchPaymentOptionsListSuccess(paymentOptions.data));\n }\n } catch (error) {\n yield call(fetchPaymentOptionsListFailure);\n logErrorHelper(error);\n }\n}\n\nfunction* fetchConfinedSpaceAttributes() {\n try {\n const confinedSpaceAttributes = yield call(getAttributeConfinedSpace);\n if (confinedSpaceAttributes) {\n yield put(\n fetchConfinedSpaceAttributesSuccess(confinedSpaceAttributes.data)\n );\n }\n } catch (error) {\n yield call(fetchConfinedSpaceAttributesFailure);\n logErrorHelper(error);\n }\n}\n\nfunction* fetchVehicleInsuranceLevels() {\n try {\n const vehicleInsuranceLevels = yield call(getVehicleInsuranceLevels);\n if (vehicleInsuranceLevels) {\n const trafficInsurance = vehicleInsuranceLevels.data.find(\n insurance => insurance.externalReference === \"TRAFFIC\"\n );\n yield put(fetchVehicleInsuranceLevelsSuccess(trafficInsurance));\n }\n } catch (error) {\n yield call(fetchVehicleInsuranceLevelsFailure);\n logErrorHelper(error);\n }\n}\n\nasync function tryParseResponse(response) {\n try {\n const json = await response.json();\n return {\n statusCode: response.status,\n data: json\n };\n } catch (error) {\n throw error;\n }\n}\n\nfunction* createGatMission() {\n const appId = getSession(SESSION_KEYS.appId);\n const response = yield fetch(\n `${api.getBaseUrl(BaseUrl.GatUrl)}${GET_JWT_TOKEN}`,\n {\n method: POST,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n \"gat-application-id\": appId\n }\n }\n );\n const data = yield tryParseResponse(response);\n if (data?.data?.status) {\n throw Error;\n }\n const { token, id, accessToken } = data.data;\n setSession(SESSION_KEYS.accessToken, accessToken);\n setSession(SESSION_KEYS.missionId, id);\n setSession(SESSION_KEYS.token, token);\n}\n\nfunction* submitCustomerDetails() {\n const accessToken = getSession(SESSION_KEYS.accessToken);\n try {\n yield put(submit(\"customerDetails\"));\n const formValue = yield select(getFormValues(\"customerDetails\"));\n const socialNumberFieldError = yield select(getSocialNumberFieldError);\n const isCustomer = yield select(getIsCustomer);\n const isFetchingPerson = yield select(getIsFetchingPerson);\n const isFetchingVehicle = yield select(getIsFetchingVehicle);\n if (\n formValue &&\n !validateRegno(formValue.regno) &&\n !isFetchingVehicle &&\n !validateMobile(formValue.mobile) &&\n !validatePosition(formValue.carPosition) &&\n (!formValue.isInsured || !socialNumberFieldError.show) &&\n (!formValue.isInsured || isCustomer) &&\n (!formValue.isInsured || !isFetchingPerson) &&\n (!formValue.isInsured || !validateSocialNumber(formValue.socialNumber))\n ) {\n if (!accessToken) {\n try {\n yield call(createGatMission);\n yield put(setCurrentView(DAMAGE_REASON_VIEW));\n } catch (error) {\n yield put(toggleDispatchWillCallModal(true));\n logErrorHelper(error);\n }\n } else if (accessToken) {\n yield put(setCurrentView(DAMAGE_REASON_VIEW));\n }\n }\n } catch (error) {\n logErrorHelper(error);\n }\n}\n\nfunction* getPositionWatcher() {\n yield takeLatest(GET_POSITION, getPositionWorker);\n}\n\nfunction* createOrderWatcher() {\n yield takeLatest(CREATE_ORDER, createOrderWorker);\n}\n\nfunction* estimatePriceWatcher() {\n yield takeLatest(ESTIMATE_PRICE, estimatePriceWorker);\n}\n\nfunction* estimatePriceDestinationWatcher() {\n yield takeLatest(ESTIMATE_PRICE_DESTINATION, estimatePriceDestinationWorker);\n}\n\nfunction* fetchFinalPriceWatcher() {\n yield takeLatest(FETCH_FINAL_PRICE, fetchFinalPriceWorker);\n}\n\nfunction* listenForDriverWatcher() {\n while (1) {\n yield take(LISTEN_FOR_DRIVER);\n yield race([call(listenForDriverWorker), take(CANCEL_LISTEN_FOR_DRIVER)]);\n }\n}\n\nfunction* loginWatcher() {\n yield takeLatest(LOGIN, loginWorker);\n}\n\nfunction* denyWatcher() {\n yield takeLatest(DENY_HELP, denyWorker);\n}\n\nfunction* valuesChangedWatcher() {\n yield takeLatest(VALUES_CHANGED, clearValues);\n}\n\nfunction* submitCustomerDetailsWatcher() {\n yield takeLatest(CUSTOMER_DETAILS_FORM_SUBMITTED, submitCustomerDetails);\n}\n\nfunction* submitCreateOrderFormWatcher() {\n yield takeLatest(CREATE_ORDER_FORM_SUBMITTED, submitCreateOrderForm);\n}\n\nfunction* getVehicleWatcher() {\n yield takeLatest(FETCH_VEHICLE, getVehicleWorker);\n}\n\nfunction* fetchPersonWatcher() {\n yield takeLatest(FETCH_PERSON, fetchPersonWorker);\n}\n\nfunction* saveCenterCoordsWatcher() {\n yield takeLatest(SAVE_CENTER_COORDS, saveVehicleAddressWorker);\n}\n\nfunction* fetchDispatchWatcher() {\n yield takeLatest(FETCH_DISPATCH, fetchDispatchWorker);\n}\n\nfunction* hasPreviousVehiclePositionChangedWatcher() {\n yield takeLatest(\n CHECK_PREVIOUS_VEHICLE_POSITION,\n hasPreviousVehiclePositionChangedWorker\n );\n}\n\nfunction* fetchTokenWatcher() {\n yield takeLatest(FETCH_TOKEN, fetchTokenWorker);\n}\n\nfunction* fetchCurrentDamageReasonsWatcher() {\n yield takeLatest(FETCH_DAMAGE_REASONS, fetchCurrentDamageReasons);\n}\n\nfunction* fetchConfinedSpaceAttributesWatcher() {\n yield takeLatest(\n FETCH_CONFINED_SPACE_ATTRIBUTES,\n fetchConfinedSpaceAttributes\n );\n}\n\nfunction* fetchPaymentOptionsWatcher() {\n yield takeLatest(FETCH_PAYMENT_OPTIONS, fetchPaymentOptions);\n}\n\nfunction* fetchVehicleInsuranceLevelsWatcher() {\n yield takeLatest(FETCH_VEHICLE_INSURANCE_LEVELS, fetchVehicleInsuranceLevels);\n}\n\nexport default {\n createOrderWatcher,\n estimatePriceWatcher,\n estimatePriceDestinationWatcher,\n fetchFinalPriceWatcher,\n listenForDriverWatcher,\n loginWatcher,\n denyWatcher,\n valuesChangedWatcher,\n getPositionWatcher,\n submitCustomerDetailsWatcher,\n submitCreateOrderFormWatcher,\n fetchPersonWatcher,\n getVehicleWatcher,\n saveCenterCoordsWatcher,\n fetchDispatchWatcher,\n hasPreviousVehiclePositionChangedWatcher,\n fetchTokenWatcher,\n fetchCurrentDamageReasonsWatcher,\n fetchConfinedSpaceAttributesWatcher,\n fetchPaymentOptionsWatcher,\n fetchVehicleInsuranceLevelsWatcher\n};\n","export const CANCEL_ESTIMATED_ARRIVAL_TIME_POLLER =\n \"CANCEL_ESTIMATED_ARRIVAL_TIME_POLLER\";\nexport const CANCEL_ORDER_SUCCESS = \"CANCEL_ORDER_SUCCESS\";\nexport const CLOSE_CANCEL_ORDER_MODAL = \"CLOSE_CANCEL_ORDER_MODAL\";\nexport const FETCH_TOWTRUCK_POSITION = \"FETCH_TOWTRUCK_POSITION\";\nexport const GET_ESTIMATED_ARRIVAL_TIME_FAILURE =\n \"GET_ESTIMATED_ARRIVAL_TIME_FAILURE\";\nexport const GET_ESTIMATED_ARRIVAL_TIME_SUCCESS =\n \"GET_ESTIMATED_ARRIVAL_TIME_SUCCESS\";\nexport const GET_ESTIMATED_ARRIVAL_TIME = \"GET_ESTIMATED_ARRIVAL_TIME\";\nexport const OPEN_CANCEL_ORDER_MODAL = \"OPEN_CANCEL_ORDER_MODAL\";\nexport const SET_ORDER_STATUS = \"SET_ORDER_STATUS\";\nexport const SET_TOWTRUCK_LOCATION = \"SET_TOWTRUCK_LOCATION\";\nexport const FIND_CURRENT_VIEW = \"FIND_CURRENT_VIEW\";\nexport const START_CANCEL_ORDER = \"START_CANCEL_ORDER\";\nexport const TOGGLE_STARTED_ORDER_MODAL = \"TOGGLE_STARTED_ORDER_MODAL\";\nexport const TOW_TRUCK_CANCELLED = \"TOW_TRUCK_CANCELLED\";\nexport const CANCEL_FETCH_TOWTRUCK_POSITION = \"CANCEL_FETCH_TOWTRUCK_POSITION\";\n\nexport const GET_MISSION_BY_TOKEN = \"GET_MISSION_BY_TOKEN\";\nexport const GET_MISSION_BY_TOKEN_SUCCESS = \"GET_MISSION_BY_TOKEN_SUCCESS\";\nexport const GET_MISSION_BY_TOKEN_FAILURE = \"GET_MISSION_BY_TOKEN_FAILURE\";\n","const getCustomerCoordinates = ({ position }) =>\n position.get(\"customerPosition\");\n\nconst getVehiclePosition = ({ position }) => position.get(\"vehiclePosition\");\n\nconst getServeVehiclePosition = ({ position }) =>\n position.get(\"positionToServe\");\n\nconst getDestinationPosition = ({ position }) =>\n position.get(\"destinationChangerPosition\");\n\nconst getShopCoordinates = ({ position }) => position.get(\"shopPosition\");\n\nconst getUnsavedShopPosition = ({ position }) =>\n position.get(\"unsavedShopPosition\");\n\nconst getTowtruckCoordinates = ({ position }) =>\n position.get(\"towtruckPosition\");\n\nconst getPreviousTowtruckCoordinates = ({ position }) =>\n position.get(\"previousTowtruckPosition\");\n\nconst getNoTowTruckModalState = ({ position }) =>\n position.get(\"noTowTrucksModalState\");\n\nconst getNoLocationServiceModalState = ({ position }) =>\n position.get(\"noLocationServiceModalState\");\n\nconst getIsFetchingReverseGeoCode = ({ position }) =>\n position.get(\"isFetchingVehiclePosition\");\n\nexport default {\n getCustomerCoordinates,\n getShopCoordinates,\n getTowtruckCoordinates,\n getPreviousTowtruckCoordinates,\n getNoTowTruckModalState,\n getNoLocationServiceModalState,\n getVehiclePosition,\n getIsFetchingReverseGeoCode,\n getUnsavedShopPosition,\n getDestinationPosition,\n getServeVehiclePosition\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"staticMap_container__2J91t\",\"map\":\"staticMap_map__2pJKK\"};","module.exports = __webpack_public_path__ + \"static/media/location-pin-secondary.05841d2e.svg\";","export default function towTruckTemplate(color, heading) {\n return `\n\n \n icon/towtruck/green/towtruck_0\n Created with Sketch.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n`;\n}\n","import towTruckTemplate from \"./towtruckTemplate\";\n\nconst getTemplateFromType = type => {\n switch (type) {\n case \"transporttruck\":\n // return transportTemplate;\n return towTruckTemplate;\n case \"towtruck\":\n default:\n return towTruckTemplate;\n }\n};\n\nexport default function truckIcon(color, heading, type) {\n const template = getTemplateFromType(type);\n return template(color, heading);\n}\n","const getOrder = ({ activeOrder }) => activeOrder.get(\"order\");\n\nconst getStartedOrderModalState = ({ activeOrder }) =>\n activeOrder.get(\"startedOrderModal\");\n\nconst getCancelModalState = ({ activeOrder }) =>\n activeOrder.get(\"cancelModalOpen\");\nconst getTowCancelModalState = ({ activeOrder }) =>\n activeOrder.get(\"towCancelModalOpen\");\n\nconst getCosts = ({ activeOrder }) => activeOrder.getIn([\"order\", \"costs\"]);\n\nconst getOriginTowingPrice = ({ activeOrder }) =>\n activeOrder.getIn([\"order\", \"origin_towing_price\"]);\n\nconst getOriginAssistancePrice = ({ activeOrder }) =>\n activeOrder.getIn([\"order\", \"origin_assistance_price\"]);\n\nconst getEstimatedArrivalTimeText = ({ activeOrder }) =>\n activeOrder.getIn([\"estimatedArrivalTime\", \"timeText\"]);\n\nconst getIsEstimatedArrivalTimeOutdated = ({ activeOrder }) =>\n activeOrder.getIn([\"estimatedArrivalTime\", \"outdatedEta\"]);\n\nconst getEstimatedArrivalTimeSeconds = ({ activeOrder }) =>\n activeOrder.getIn([\"estimatedArrivalTime\", \"timeSeconds\"]);\n\nconst getCountDownTime = ({ activeOrder }) => activeOrder.get(\"countDownTime\");\n\nconst getTimeSinceLastCall = ({ activeOrder }) =>\n activeOrder.get(\"timeSinceLastCall\");\n\nconst getUnexpectedErrorModalState = ({ activeOrder }) =>\n activeOrder.get(\"unexpectedErrorModalState\");\n\nconst getPreventResumeOrderState = ({ activeOrder }) =>\n activeOrder.get(\"preventResumeOrder\");\n\nexport default {\n getOrder,\n getCancelModalState,\n getStartedOrderModalState,\n getTowCancelModalState,\n getCosts,\n getOriginTowingPrice,\n getOriginAssistancePrice,\n getEstimatedArrivalTimeSeconds,\n getCountDownTime,\n getTimeSinceLastCall,\n getUnexpectedErrorModalState,\n getPreventResumeOrderState,\n getEstimatedArrivalTimeText,\n getIsEstimatedArrivalTimeOutdated,\n};\n","export const POST_RATING_SUCCESS = \"POST_RATING_SUCCESS\";\nexport const POST_RECEIPT_SUCCESS = \"POST_RECEIPT_SUCCESS\";\nexport const POST_RECEIPT = \"POST_RECEIPT\";\nexport const RECEIPT_SUBMITTED = \"RECEIPT_SUBMITTED\";\nexport const SET_DISPLAY_VALUE = \"SET_DISPLAY_VALUE\";\nexport const SET_RATING = \"SET_RATING\";\nexport const SUMMARY_SUBMITTED = \"SUMMARY_SUBMITTED\";\nexport const LEGACY_SUMMARY_SUBMITTED = \"LEGACY_SUMMARY_SUBMITTED\";\nexport const TOGGLE_RECEIPT_FAILURE_MODAL = \"TOGGLE_RECEIPT_FAILURE_MODAL\";\nexport const TOGGLE_SUMMARY_FAILURE_MODAL = \"TOGGLE_SUMMARY_FAILURE_MODAL\";\nexport const TOGGLE_SUMMARY_SUCCESS_MODAL = \"TOGGLE_SUMMARY_SUCCESS_MODAL\";\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"receipt_container__KNOCJ\",\"header\":\"receipt_header__2VwTa\",\"textBox\":\"receipt_textBox__281ZZ\",\"rating\":\"receipt_rating__1DsHT\",\"createdAt\":\"receipt_createdAt__1o4VX\",\"timeStamps\":\"receipt_timeStamps__2ueRO\",\"arrowIcon\":\"receipt_arrowIcon__xx6Ds\",\"receipt\":\"receipt_receipt__3FsRV\",\"caption\":\"receipt_caption__1NGXF\",\"text\":\"receipt_text__1F_NO\",\"golden\":\"receipt_golden__3IJpH\",\"textWithIcon\":\"receipt_textWithIcon__3eCvX\",\"icon\":\"receipt_icon__3KShl\",\"damageLocations\":\"receipt_damageLocations__nKAgn\",\"damageLocationsText\":\"receipt_damageLocationsText__1b-aE\",\"button\":\"receipt_button__2bcRT\",\"costSummary\":\"receipt_costSummary__3oGbL\",\"cost\":\"receipt_cost__3SZuJ\",\"totalCostHeader\":\"receipt_totalCostHeader__33spu\",\"totalCostWrapper\":\"receipt_totalCostWrapper__Kb-gc\",\"totalCost\":\"receipt_totalCost__3KfrB\",\"costCircle\":\"receipt_costCircle__2mfas\"};","import {\n START_CANCEL_ORDER,\n OPEN_CANCEL_ORDER_MODAL,\n CLOSE_CANCEL_ORDER_MODAL,\n TOGGLE_STARTED_ORDER_MODAL,\n GET_ESTIMATED_ARRIVAL_TIME,\n GET_ESTIMATED_ARRIVAL_TIME_SUCCESS,\n CANCEL_ESTIMATED_ARRIVAL_TIME_POLLER,\n CANCEL_FETCH_TOWTRUCK_POSITION,\n FETCH_TOWTRUCK_POSITION,\n SET_ORDER_STATUS,\n TOW_TRUCK_CANCELLED,\n SET_TOWTRUCK_LOCATION,\n GET_MISSION_BY_TOKEN,\n GET_MISSION_BY_TOKEN_SUCCESS,\n GET_MISSION_BY_TOKEN_FAILURE, FIND_CURRENT_VIEW\n} from \"./constants\";\n\nconst findCurrentView = () => ({\n type: FIND_CURRENT_VIEW\n});\n\nconst cancelOrder = () => ({\n type: START_CANCEL_ORDER\n});\n\nconst openCancelModal = () => ({\n type: OPEN_CANCEL_ORDER_MODAL\n});\n\nconst closeCancelModal = () => ({\n type: CLOSE_CANCEL_ORDER_MODAL\n});\n\nconst toggleStartedModal = bool => ({\n type: TOGGLE_STARTED_ORDER_MODAL,\n payload: bool\n});\n\nconst getEstimatedArrivalTime = () => ({\n type: GET_ESTIMATED_ARRIVAL_TIME\n});\n\nconst getEstimatedArrivalTimeSuccess = time => ({\n type: GET_ESTIMATED_ARRIVAL_TIME_SUCCESS,\n payload: time\n});\n\nconst cancelEstimatedArrivalTimePoller = () => ({\n type: CANCEL_ESTIMATED_ARRIVAL_TIME_POLLER\n});\n\nconst cancelFetchTowtruckPosition = () => ({\n type: CANCEL_FETCH_TOWTRUCK_POSITION\n});\n\nconst fetchTowtruckPosition = () => ({\n type: FETCH_TOWTRUCK_POSITION\n});\n\nconst setOrderStatus = order => ({\n type: SET_ORDER_STATUS,\n payload: order\n});\n\nconst towTruckCancelled = () => ({\n type: TOW_TRUCK_CANCELLED\n});\n\nconst setTowTruckLocation = towtruckPosition => ({\n type: SET_TOWTRUCK_LOCATION,\n towtruckPosition\n});\n\nconst getMission = token => ({\n type: GET_MISSION_BY_TOKEN,\n token\n});\n\nconst getMissionSuccess = mission => {\n return {\n type: GET_MISSION_BY_TOKEN_SUCCESS,\n mission\n };\n};\n\nconst getMissionFailure = error => ({\n type: GET_MISSION_BY_TOKEN_FAILURE,\n error\n});\n\nexport default {\n cancelOrder,\n findCurrentView,\n openCancelModal,\n closeCancelModal,\n toggleStartedModal,\n getEstimatedArrivalTime,\n getEstimatedArrivalTimeSuccess,\n cancelEstimatedArrivalTimePoller,\n cancelFetchTowtruckPosition,\n fetchTowtruckPosition,\n setOrderStatus,\n towTruckCancelled,\n setTowTruckLocation,\n getMission,\n getMissionSuccess,\n getMissionFailure\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"receipt_container__2ZPkL\",\"header\":\"receipt_header__14o0y\",\"textBox\":\"receipt_textBox__1raTi\",\"rating\":\"receipt_rating__2jsN2\",\"createdAt\":\"receipt_createdAt__1RLK_\",\"timeStamps\":\"receipt_timeStamps__1gDoj\",\"arrowIcon\":\"receipt_arrowIcon__ZLcVx\",\"textAreaInput\":\"receipt_textAreaInput__mNJJJ\",\"textAreaContainer\":\"receipt_textAreaContainer__2Vn2L\",\"receipt\":\"receipt_receipt__3VScQ\",\"caption\":\"receipt_caption__1DLZF\",\"text\":\"receipt_text__1B2i-\",\"golden\":\"receipt_golden__3_O3R\",\"textWithIcon\":\"receipt_textWithIcon__3dmw8\",\"icon\":\"receipt_icon__1dpzn\",\"damageLocations\":\"receipt_damageLocations__1XjZS\",\"damageLocationsText\":\"receipt_damageLocationsText__1ad7i\",\"button\":\"receipt_button__2gAtV\",\"costSummary\":\"receipt_costSummary__3sdR5\",\"cost\":\"receipt_cost__3LKSs\",\"totalCostHeader\":\"receipt_totalCostHeader__wsLjL\",\"totalCostWrapper\":\"receipt_totalCostWrapper__2fPuc\",\"totalCost\":\"receipt_totalCost__31VNH\",\"costCircle\":\"receipt_costCircle__1vbyB\",\"orderLinesCost\":\"receipt_orderLinesCost__23b-g\",\"orderReviewed\":\"receipt_orderReviewed__3SVbQ\"};","import { BaseUrl, GAT_DEV, GAT_PROD, GAT_STG } from \"../constants/apiConstants\";\n\nfunction headers(gatHeaders) {\n const { gatLocale, gatOrgUnit, appId, accessToken } = gatHeaders || {};\n\n const headersPrompt = {\n \"Content-Type\": \"application/json\"\n };\n\n if (accessToken) {\n headersPrompt.Authorization = `Bearer ${accessToken}`;\n }\n if (gatLocale) {\n headersPrompt[\"gat-locale\"] = gatLocale;\n }\n if (gatOrgUnit) {\n headersPrompt[\"gat-organization-unit\"] = gatOrgUnit;\n }\n if (appId) {\n headersPrompt[\"gat-application-id\"] = appId;\n }\n return headersPrompt;\n}\n\nconst getErrorObj = response => {\n return {\n statusCode: response?.statusCode,\n data: response.data || response.statusText\n };\n};\n\nasync function tryParseResponse(response) {\n try {\n const json = await response.json();\n return {\n statusCode: response.status,\n data: json\n };\n } catch (error) {\n throw getErrorObj(response);\n }\n}\n\nfunction getBaseUrl(base) {\n if (process.env.REACT_APP_ENV === \"PRODUCTION\") {\n if (base === BaseUrl.GatUrl) return GAT_PROD;\n }\n if (process.env.REACT_APP_ENV === \"STAGING\") {\n if (base === BaseUrl.GatUrl) return GAT_STG;\n }\n return GAT_DEV;\n}\n\nasync function get(url, base, gatHeaders) {\n const response = await fetch(`${getBaseUrl(base)}${url}`, {\n method: \"GET\",\n headers: headers(gatHeaders)\n });\n\n return tryParseResponse(response);\n}\n\nasync function post(url, base = BaseUrl.GatUrl, body, gatHeaders) {\n const response = await fetch(`${getBaseUrl(base)}${url}`, {\n method: \"POST\",\n headers: headers(gatHeaders),\n body: JSON.stringify(body)\n });\n return tryParseResponse(response);\n}\n\nasync function put(url, base = BaseUrl.GatUrl, body) {\n const response = await fetch(`${getBaseUrl(base)}${url}`, {\n method: \"PUT\",\n headers: headers(),\n body: JSON.stringify(body)\n });\n return tryParseResponse(response);\n}\n\nconst api = { get, post, put, getBaseUrl };\n\nexport default api;\n","const TERMS = `\nAnvändarvillkor för bärgningstjänster via GAT\nSenast uppdaterad 2021-04-20\nDessa användarvillkor, eventuella andra villkor som från tid till annan görs tillgängliga på vår hemsida och vår Personuppgiftspolicy (gemensamt ”Användarvillkoren”), samt i förekommande fall gällande försäkringsvillkor, utgör gemensamt villkoren för användning av de tjänster som Assistansbolaget Rescue Europe AB, org.nr 559248-8265 (”Assistansbolaget Rescue”) eller Assistansbolaget Försäkring Sverige AB, org.nr 556985-2162 (”Assistansbolaget Försäkring” och tillsammans med Assistansbolaget Rescue, ”Assistansbolaget” eller ”vi”) erbjuder dig genom denna applikation (tjänsterna och applikationen benämns nedan gemensamt ”Tjänsterna” och enbart applikationen benämns nedan ”Appen”). För att kunna beställa en Tjänst måste du godkänna de vid var tid gällande Användarvillkoren. När Användarvillkoren godkänts anses ett avtal ha kommit till stånd mellan dig och Assistansbolaget Rescue eller Assistansbolaget Försäkring avseende den beställda Tjänsten. Läs därför Användarvillkoren ordentligt innan du beställer en Tjänst.\n\nAllmänt\n\nTjänsterna kan beställas såväl av Assistansbolagets försäkringskunder (dvs. kunder som innan Tjänsten beställs tecknat försäkring genom Assistansbolaget Försäkring) (”Försäkringskunder”) som av kunder som inte har tecknat försäkring genom Assistansbolaget Försäkring. När en Tjänst inte omfattas av Assistansbolagets Försäkrings försäkringar blir du eller den registrerade ägaren till fordonet betalningsskyldig för den beställda Tjänsten.\n\nNär Tjänster tillhandahålls till Försäkringskunder är det Assistansbolaget Försäkring, eller dess underleverantör, som utför Tjänsten. När Tjänster tillhandahålls till kund som inte är Försäkringskund är det Assistansbolaget Rescue, eller dess underleverantör, som utför Tjänsten. Om det inte är möjligt att beställa en Tjänst genom Appen går det bra att dygnet runt, året om, ringa till vår Räddningscentral på 020-400 500.\n\nAssistansbolagets ambition är att löpande utveckla Tjänsterna varför den exakta utformningen och Tjänsternas funktioner kan komma att ändras över tid. Den utformning och funktion som gäller för de Tjänster som tillhandahålls från tid till annan framgår av dessa Användarvillkor. Assistansbolaget förbehåller sig följaktligen rätten att förändra innehållet i dessa Användarvillkor genom att publicera uppdaterade villkor på https://assistansbolaget.nu/villkor/.\n\nAnvändning av Tjänsten\n\nFör att använda Tjänsterna ska du ha fyllt 18 år. När du beställer en Tjänst kommer du bli ombedd att lämna vissa personliga uppgifter, uppgift om skadeposition och vilket fordon Tjänsten avser, samt vem som framför fordonet. Vi kommer också att inhämta och behandla andra personuppgifter samt uppgifter om det fordon som Tjänsten avser samt föraren av fordonet.\n\nInformation om vår personuppgiftsbehandling finns i vår Personuppgiftspolicy som finns tillgänglig på https://assistansbolaget.nu/villkor/.\n \nTillhandahållande av Tjänsterna\n\nAssistansbolaget strävar efter att kontinuerligt utveckla och uppdatera Tjänsterna och Appen, men vi tillhandahåller Appen utan några utfästelser eller garantier av något slag. Appen kan helt eller delvis vara otillgänglig på grund av planerat underhåll, oplanerade driftstörningar eller andra omständigheter utanför vår kontroll. Detta kan innebära att data går förlorad, eller att Tjänsterna inte går att använda.\n\nAssistansbolaget förbehåller sig vidare rätten att helt upphöra med Tjänsterna tillfälligt eller permanent. Detta gäller dock inte för enskilda redan beställda Tjänster.\n\nKostnader för Tjänsterna\n\nOm du är Försäkringskund och skadan omfattas av försäkringsvillkoren tillhandahålls Tjänsterna utan kostnad. Kontrollera ditt försäkringsskydd om du är osäker på om skadan omfattas av försäkringen. Under normal kontorstid kan du också ringa vår kundtjänst på telefonnummer 042-324 324 för att få råd.\n\nOm du inte är Försäkringskund, eller om skadan inte omfattas av försäkringsvillkoren, debiteras du kostnaden för utförd Tjänst i enlighet med vår vid var tid gällande prislista. Avgiften framgår när du beställer Tjänsten.\n\nÅngerrätt\n\nOm du beställer en Tjänst, till exempel bärgning eller transport, som ska utföras inom 14 dagar från dagen för beställningen kommer vi endast att påbörja Tjänsten om du vid beställningen uttryckligen begär att Tjänsten utförs under ångerfristen. Att du begär detta innebär att du kan bli ersättningsskyldig för kostnader förknippade med arbete som utförts innan du avbryter Tjänsten.\n\nOm du har beställt en Tjänst och avbryter Tjänsten innan vi har påbörjat uppdraget tar vi inte ut någon avgift. Om du däremot avbryter Tjänsten efter att vi påbörjat utförandet av uppdraget, till exempel påbörjat körning till den position som lämnas vid beställning av bärgning, debiteras du en framkörningsavgift om 995 kr. Samma sak gäller om du har avvikit från platsen innan bärgaren kommit fram. Fakturan skickas till den registrerade ägaren av det fordon som angetts i beställningen av Tjänsten för det fall du inte redan har valt betalningsmetod och godkänt kostnaden via Klarna.\n\nÅngerrätten gäller inte när Tjänsten har fullgjorts. Du godkänner att din ångerrätt har förbrukats vid den tidpunkt då Tjänsten har fullgjorts.\n\nBetalning\n\nBetalning av Tjänsterna kan ske antingen genom faktura med Assistansbolaget som betalningsmottagare eller genom av Assistansbolaget anlitad betallösningsleverantör, för närvarande Klarna. För frågor gällande betalning via Klarna hänvisas till Klarna och Klarnas vid var tid gällande villkor.\n\nAssistansbolaget förbehåller sig rätten att vid var tid ändra betallösningsleverantör.\n\nFör det fall du har valt faktura med Assistansbolaget som betalningsmottagare som betalningsmetod och fakturan inte betalas till oss i tid, tar vi ut en påminnelseavgift om 65 kr och sedan sedvanlig inkassohantering.\n\nDitt ansvar som användare\n\nDu ansvarar för att användningen av Tjänsterna inte ger upphov till skada eller annan olägenhet för Assistansbolaget eller någon annan, kränker Assistansbolagets eller annans upphovsrätt eller annan immaterialrätt, strider mot någon annans villkor som du åtagit dig att följa, eller strider mot lag eller myndighets föreskrift eller beslut.\n\nDu ansvarar gentemot Assistansbolaget och mot annan för skada eller förlust som uppkommit genom otillåten användning (dvs. i strid med dessa villkor ), vid fel eller försummelse från din sida vid användningen av Tjänsterna eller av dina uppgifter, på grund av fel eller brist i de uppgifter du har tillhandahållit inom ramen för Tjänsterna eller som uppkommit på grund av ditt brottsliga förfarande.\n\nAssistansbolagets ansvar\n\nAssistansbolaget tillhandahåller Appen i befintligt skick och ansvarar inte för skada som beror på fel eller avbrott i Appen. Vi är således under inga omständigheter skyldiga att utge ersättning eller skadestånd till dig med anledning av din användning av Appen, att du inte har kunnat beställa Tjänster genom Appen eller vid fel, brister, dataförluster och annan skada som Appen har gett upphov till.\n\nAssistansbolagets ansvar för bärgning och transport av fordon som beställs genom Appen är begränsat till direkt skada och till ett maxbelopp av 100 000 kr. Vi ansvarar inte för följdskador eller andra indirekta skador.\n\nOvanstående begränsningar av vårt ansvar gäller inte om annat följer av tvingande lagstiftning. Assistansbolaget tar inget ansvar för skador eller kostnader som föranleds av felaktiga uppgifter som lämnats av användare av Tjänst.\n\nBehandling av personuppgifter\n\nI samband med att du beställer en Tjänst samlar Assistansbolaget in och behandlar dina personuppgifter. Assistansbolaget hanterar all kundinformation som konfidentiell och i enlighet med gällande dataskyddslagstiftning. Fullständig information om hur och varför Assistansbolaget behandlar personuppgifter samt dina rättigheter avseende vår behandling av dina personuppgifter finns i vår Personuppgiftspolicy som du kan ta del av i Appen eller på https://assistansbolaget.nu/villkor/. Vill du ha vår Personuppgiftspolicy hemskickad till dig ber vi dig att kontakta vår kundtjänst på telefonnummer 042-324 324.\n\nVi inhämtar uppgifter om dig från olika datakällor såsom folkbokföringen, Transportstyrelsen etc. Assistansbolaget kan komma att använda dina personuppgifter för marknadsföring och analys i enlighet med vad som anges i Personuppgiftspolicyn.\n\nImmateriella rättigheter\n\nAlla immateriella rättigheter och tekniska rättigheter hänförliga till Tjänsterna och den programvara, de tjänster och funktioner som ingår i Tjänsterna, tillhör Assistansbolaget eller den som vi fått tillåtelse från att använda dessa. Inget innehåll får kopieras, ändras eller på annat sätt användas utan skriftligt medgivande från Assistansbolaget. Du bekräftar och accepterar att otillåten användning av innehållet, utöver att strida mot Användarvillkoren, kan vara brottsligt.\n\nÄganderätt och upphovsrätt till eventuella bilder och videomaterial som tillhandahålls av dig tillhör dig. Assistansbolaget har dock rätt att använda sådant innehåll inom ramen för tillhandahållandet av Tjänsterna till dig. Assistansbolaget använder inte sådant innehåll i annat syfte än att tillhandahålla Tjänsterna.\n\nTillägg och ändringar\n\nAssistansbolaget har rätt att ensidigt göra tillägg till och ändringar i Användarvillkoren.\nEn ny version av Användarvillkoren gäller från och med den tidpunkt som anges i den nya versionen av Användarvillkoren och blir gällande gentemot dig när du, efter sådan tidpunkt, använder Tjänsten eller på annat sätt godkänner de uppdaterade Användarvillkoren. De vid var tid gällande Användarvillkoren finns tillgängliga i Appen och på https://assistansbolaget.nu/villkor/. Om du inte accepterar de uppdaterade Användarvillkoren ska du upphöra att använda Tjänsten.\n\nOm vi inte kommer överens\n\nOm du inte är nöjd med Tjänsterna vill vi att du kontaktar oss för att få råd om hur du kan få ärendet omprövat. Du kontaktar då vår kundtjänst på telefon 042-324 324. Om du fortfarande inte är nöjd kan du kontakta klagomålsansvarig på Assistansbolaget och begära omprövning. Kontakta klagomålsansvarig via e-post på klagomalsansvarig@assistansbolaget.nu eller skicka ditt klagomål till:\n\nKlagomålsansvarig\nAssistansbolaget Försäkring Sverige AB/Assistansbolaget Rescue Europe AB Redaregatan 50, 252 36 Helsingborg\n\nOm du har fått ditt ärende omprövat och ändå inte är nöjd har du möjlighet att vända dig till nedanstående:\nALLMÄNNA REKLAMATIONSNÄMNDEN (ARN)\nAllmänna reklamationsnämnden (ARN) Adress: Box 174, 101 23 Stockholm Telefon: 08-508 860 00\nhttps://arn.se/\nARN prövar klagomål från privatpersoner, dock inte vållandefrågor i trafikolyckor. Prövningen är kostnadsfri.\n\nALLMÄN DOMSTOL\n\nDu kan även vända dig till allmän domstol för att få ditt ärende prövat. https://www.domstol.se/\n\nKontaktuppgifter\nOm du har några frågor avseende Tjänsterna är du välkommen att kontakta oss enligt följande kontaktuppgifter:\n\nAssistansbolaget Försäkring Sverige AB/Assistansbolaget Rescue Europe AB Adress: Redaregatan 50, 252 36 Helsingborg\nTelefon: 042-324 324\nE-post: kontakt@assistansbolaget.nu\n\nTillämplig lag och tvistelösning\nVid tolkning och tillämpning av dessa Användarvillkor gäller svensk rätt. Tvist med anledning av din användning av Tjänsten och/eller Användarvillkoren ska i första hand lösas genom förhandling mellan parterna. Om ingen överenskommelse kan nås ska tvisten avgöras av svensk domstol.\n\nDessa Användarvillkor begränsar inte till någon del de rättigheter du må ha enligt tillämplig lag,\nsom inte går att avtala bort.\n`;\n\nexport default {\n towing: {\n topBar: {\n phoneAlt: \"Klicka för att ringa oss på telefonnummer +4642324324\"\n },\n orientation: {\n title: \"VÄGHJÄLP DIREKT STÖDJER ENDAST PORTRÄTTLÄGE\",\n message: \"Var god rotera tillbaka telefonen till porträttläge\"\n },\n toggleInsured: {\n yes: \"Ja\",\n no: \"Nej\"\n },\n logoAlt: \"Assistansbolaget\",\n currency: \"kr\",\n minutes: \"min\",\n errors: {\n vehicleNotFound: \"Ogiltigt reg.nr (ABC123, ABC12A)\",\n fetchVehicleFailure: \"Ett fel inträffade ring oss på: +4642324324\",\n fetchUserFailure: \"Ett fel inträffade ring oss på: +4642324324\",\n personNotFound: \"Ogiltigt personnummer (ÅÅMMDDXXXX)\",\n vehicleRequired: \"Du måste ange ett registreringsnummer\",\n socialNumberRequired: \"Ogiltigt personnummer (ÅÅMMDDXXXX)\",\n required: \"Obligatoriskt fält\",\n minimumLength: \"Ogiltigt reg.nr (ABC123, ABC12A)\",\n maximumLength: \"Ogiltigt reg.nr (ABC123, ABC12A)\",\n invalidPhone: \"Ogiltigt telefonnummer (0701234567)\",\n invalidEmail: \"Ogiltig epostadress (namn@namn.com)\",\n terms: \"Du måste godkänna användarvillkoren.\",\n messageMaximumLength: \"Max 4000 tecken\",\n minimumLengthSocialNumber: \"Ogiltigt personnummer (ÅÅMMDDXXXX)\",\n maximumLengthSocialNumber: \"Ogiltigt personnummer (ÅÅMMDDXXXX)\"\n },\n phoneNumber: \"+4620400500\",\n background: {\n alt: \"Bakgrunds bild\",\n gotQuestions: \"Har du frågor?\",\n contactUs: \"Kontakta oss på\"\n },\n createOrder: {\n preliminary: \"Preliminärt\",\n toggleText1: \"Har du en gällande vägassistans-\",\n toggleText2: \"försäkring hos Assistansbolaget?\",\n time: \"kl\",\n readMore: \"Läs mer\",\n tmaCar: \"Inkluderar ej eventuell kostnad för TMA-bil\",\n engineInsuranceType: \"Ange bilförsäkringstyp\",\n fullOrHalfInsurance: \"Hel/Halv\",\n trafficInsurance: \"Trafik\",\n insuranceMissing: \"Vet ej\",\n noConfirmationModal: {\n title: \"BOKNING AVBRÖTS\",\n text:\n \"Tiden för att bekräfta bokningen har gått ut. Du blir automatiskt omdirigerad till föregående steg för att genomföra bokningen på nytt.\",\n button: \"OK\"\n },\n dispatchWillCallModal: {\n text:\n \"Tyvärr finns det inte någon ledig bärgningsbil i ditt område just nu.\",\n text2:\n \"Oroa dig inte, vi kommer att ringa upp dig för vidare hjälp inom några minuter.\",\n button: \"OK\"\n },\n alreadyStartedErrorModal: {\n title: \"DU HAR REDAN ETT PÅGÅENDE ÄRENDE\",\n text:\n \"Det finns redan ett pågående uppdrag med mobilnumret du angav. Klicka på OK för att följa ditt uppdrag.\",\n button: \"OK\"\n },\n cancelledByDispatchErrorModal: {\n title: \"BOKNINGEN AVBRÖTS\",\n text: \"Räddningscentralen avbröt bokningen.\",\n button: \"OK\"\n },\n unexpectedErrorModal: {\n title: \"NÅGONTING GICK FEL\",\n text:\n \"Någonting gick fel och vi kan inte presentera information för dig. Vänligen kontakta oss på Tel: +46 42 324 324 så hjälper vi dig vidare.\",\n button: \"OK\"\n },\n welcomeScreen: {\n title: \"BEGÄR VÄGHJÄLP\",\n subtitle: \"I SVERIGE\",\n roundTheClock: \"Dygnet runt i hela Sverige\",\n quickResponse: \"Snabbt på plats\",\n payWithKlarna: \"Delbetala med Klarna\",\n happyCustomers: \"4,6/5 hos Reco\",\n call: \"RING 020-400 500\",\n book: \"BOKA BÄRGNINGSBIL\",\n description:\n \"Välkommen till en av Sveriges största vägassistansoperatörer. Här begär du tryggt och enkelt väghjälp direkt med våra professionella och erfarna bärgare.\",\n errorTitle: \"INGEN BÄRGARE LEDIG\",\n errorDescription:\n \"Tyvärr finns det inte någon ledig bärgningsbil i ditt område just nu. Var god försök igen senare.\",\n noLocationServiceModal: {\n title: \"POSITION NEKAD\",\n text1:\n \"Eftersom att du nekade oss åtkomst till din position kan vi tyvärr inte erbjuda dig assistans.\",\n text2:\n \"Vänligen klicka på knappen ring räddningscentralen så hjälper vi dig.\",\n button: \"OK\"\n },\n metaData: {\n buttonText: \"visa mer information\",\n seoText1:\n \"Assistansbolaget är snabba på att hjälpa dig med bärgning av bil, lätt lastbil, släpvagn, husbil eller MC i Stockholm. Vid ankomst försöker vi reparera ditt fordon på plats, om inte det är möjligt bärgas fordonet till närmaste verkstad.\",\n seoText2:\n \"Vår bärgning är trygg och prisvärd. Vi är det marknadsledande alternativet med 350 000 nöjda kunder i Norden.\"\n }\n },\n estimatePrice: {\n title: \"PRELIMINÄRT PRIS\",\n titleChange: \"ÄNDRA DESTINATION\",\n text1: \"Om vi kan reparera ditt fordon på plats betalar du endast\",\n text2: \"Om ditt fordon behöver bärgas betalar du totalt\",\n textEngineInsuranceCoverage:\n \"Eftersom du har valt att du har hel- eller halvförsäkring så kommer vi endast att debitera dig din självrisk, överskjutande del debiteras ditt försäkringsbolag.\",\n suggestedAssistancePrice: \"REPARATION PÅ PLATS:\",\n suggestedShopPrice: \"BÄRGNING TILL:\",\n suggestedPrice: \"BERÄKNAT PRIS:\",\n suggestedArrival: \"BÄRGARENS ANKOMSTTID:\",\n destinationButtonOpen: \"ÄNDRA DESTINATION\",\n destinationButtonSave: \"SPARA & BERÄKNA NYTT PRIS\",\n destinationButtonUndo: \"ÅNGRA ÄNDRING\",\n time: \"kl\"\n },\n customerDetails: {\n title: \"MINA UPPGIFTER\",\n text:\n \"Vänligen fyll i dina uppgifter för att beräkna priset för din väghjälp.\",\n carNumber: \"Registreringsnummer\",\n mobileNumber: \"Telefonnummer\",\n carPosition: \"Fordonets position\",\n socialNumber: \"ÅÅÅÅMMDDXXXX\",\n pnrInfo: \"Som försäkringstagare behöver du ange ditt personnummer.\",\n engineInsuranceTypeSelect: \"Ange bilförsäkringstyp\"\n },\n damageReason: {\n title: \"ANGE VAD SOM ÄR FEL\",\n selectDamage: \"Ange vad som är fel\",\n garage: \"Är fordonet i ett P-hus eller annat trångt utrymme?\",\n tierPlacement: \"Välj däck\",\n chooseFuelType: \"Ange drivmedelstyp\",\n warningLamp: \"Välj färg på varningslampan\",\n red: \"Röd\",\n yellow: \"Gul\",\n chooseReason: \"Välj orsak\",\n missing: \"Saknas\",\n defect: \"Defekt\",\n lockedInside: \"Inlåst\",\n petrol: \"Bensin\",\n diesel: \"Diesel\",\n etanol: \"Etanol\",\n electric: \"El\",\n frontTierLeft: \"Vänster fram\",\n frontTierRight: \"Höger fram\",\n rearTierLeft: \"Vänster bak\",\n rearTierRight: \"Höger bak\",\n spareTier: \"Har du reservdäck?\",\n acceptText: \"Genom att boka bärgning godkänner du\",\n terms: \"användarvillkoren\"\n },\n userTerms: {\n title: \"ANVÄNDARVILLKOR\",\n text: TERMS\n },\n tmaCarTerms: {\n title: \"TMA-VILLKOR\",\n text: TERMS\n },\n seekingResponder: {\n towtruck: {\n title: \"VI SÖKER EFTER NÄRMSTA BÄRGNINGSBIL\",\n text:\n \"Vänligen vänta, stäng inte ner denna sida under tiden som vi söker efter en bärgningsbil åt dig.\"\n },\n dispatch: {\n title: \"VI KOMMER ATT HJÄLPA DIG!\",\n text1: \"Som försäkringstagare hos Assistansbolaget får du\",\n text2: \"prioriterad\",\n text3:\n \"väghjälp. Ditt ärende har nu mottagits av vår räddningscentral.\",\n text4:\n \"Vänligen vänta, vi ringer upp dig inom några minuter på det telefonnummer du uppgett.\"\n }\n },\n confirmOrder: {\n title: \"PRIS\",\n text1: \"Om vi kan reparera ditt fordon på plats betalar du endast\",\n text2: \"Om ditt fordon behöver bärgas betalar du totalt\",\n estimateArrival: \"BÄRGARENS ANKOMSTTID:\",\n assistanceTitle: \"REPARATION PÅ PLATS:\",\n towingTitle: \"BÄRGNING TILL:\",\n confirm: \"BEKRÄFTA\",\n time: \"kl\"\n },\n abort: \"AVBRYT\",\n previousStep: \"TILLBAKA\",\n nextStep: \"VIDARE\",\n close: \"STÄNG\",\n yes: \"Ja\",\n no: \"Nej\",\n home: \"TILL STARTSIDAN\"\n },\n activeOrder: {\n unexpectedErrorModal: {\n title: \"NÅGONTING GICK FEL\",\n text:\n \"Någonting gick fel och vi kan inte presentera information för dig. Vänligen kontakta oss på Tel: +46 42 324 324 så hjälper vi dig vidare.\",\n button: \"OK\"\n },\n button: \"OK\",\n orderStartedTitle: \"TACK, VI ÄR NU PÅ VÄG\",\n orderStartedDescription:\n \"Här kan du följa ditt ärende i realtid. En länk har även skickats till dig per SMS där också kan följa ditt ärende.\",\n cancelOrder: \"AVBRYT\",\n callSuport: \"RING RÄDDNINGSCENTRALEN\",\n onWay: {\n title: \"VI ÄR PÅ VÄG\",\n text1: \"Föraren\",\n text2: \"från\",\n text4: \"är på väg för att hjälpa dig.\",\n text3: \"Räddningsfordonets registreringsnummer är:\",\n time: \"Ankomsttid:\",\n etaOutdated:\n \"Ankomsttiden har inte kunnat uppdateras på över fem minuter och kan därför vara missvisande.\"\n },\n arrived: {\n title: \"VI ÄR PLATS\",\n text1: \"Föraren\",\n text2: \"från\",\n text4: \"är nu på plats för att hjälpa dig.\",\n text3: \"Räddningsfordonets registreringsnummer är:\"\n },\n pickedup: {\n title: \"DITT FORDON BÄRGAS\",\n text1: \"Föraren\",\n text2: \"från\",\n text3: \"bärgar ditt fordon till\",\n text4: \"Bärgningsbilens registreringsnummer är:\"\n },\n dropped: {\n title: \"DITT FORDON HAR BÄRGATS\",\n text: \"\",\n text1: \"Föraren\",\n text2: \"från\",\n text3: \"har nu bärgat ditt fordon till\"\n },\n canceled: {\n title: \"DIN VÄGHJÄLP ÄR AVBRUTEN\",\n text1:\n \"Du har valt att avbryta din väghjälp och kommer att debiteras för framkörningsavgiften om\",\n arrivalFee: \"FRAMKÖRNINGSAVGIFT:\",\n towTruckTitle: \"UPPDRAGET ÄR AVBRUTET\",\n ok: \"OK\",\n towTruckText:\n \"Bärgaren har avbrutit uppdraget. Vi kommer att kontakta dig inom kort.\"\n },\n complete: {\n title: \"UPPDRAGET ÄR SLUTFÖRT\",\n text1:\n \"Tack för att du valde Assistansbolaget. Vi hoppas att du är nöjd med vår hjälp.\",\n text2:\n \"Vid frågor är du alltid varmt välkommen att kontakta vår räddningscentral.\"\n },\n cancelOrderModal: {\n abort: \"NEJ, AVBRYT INTE\",\n cancel: \"JA, AVBRYT\",\n title: \"AVBRYT VÄGHJÄLP\",\n text1:\n \"Vi är redan på väg till dig. Om du väljer att avbryta din väghjälp nu kommer du att debiteras för framkörningsavgiften om\",\n text2: \"Är du säker på att du vill avbryta?\"\n }\n },\n summary: {\n receipt: {\n header: \"Tack för att du valde\",\n title: \"Sammanfattning av ditt uppdrag\",\n text1: \"Vi hoppas att du är nöjd med vår hjälp.\",\n text2: \"Betygsätt oss gärna - ditt omdöme är viktigt för oss!\",\n text3: \"Maila mig kvitto & uppdragsbeskrivning:\",\n assistance: \"ASSISTANS:\",\n towing: \"BÄRGNING:\",\n shopChange: \"BYTE AV VERKSTAD:\",\n gradeExperience: \"Betygsätt din upplevelse\",\n summary: \"SKRIV OMDÖME\",\n placeholder: \"Ange din epostadress\",\n sendEmailButton: \"SKICKA\",\n emailSent: \"SKICKAD\",\n repairAtSpotLabel: \"Reparation på plats\",\n downloadReceipt: \"HÄMTA FULLSTÄNDIGT KVITTO\",\n customerLabel: \"BESTÄLLARE:\",\n nameLabel: \"Namn\",\n addressLabel: \"Adress\",\n vehicleLabel: \"FORDON:\",\n brandLabel: \"Bilmärke:\",\n yearLabel: \"Årsmodell:\",\n missionLabel: \"UPPDRAG:\",\n missionTypeLabel: \"Uppdrag:\",\n missionNumber: \"Uppdragsnummer:\",\n missionType: \"Uppdragstyp:\",\n specification: \"SPECIFIKATION\",\n paymentMethod: \"BETALSÄTT\",\n totaltAmount: \"TOTALKOSTNAD\",\n startedAt: \"Påbörjades:\",\n regnoLabel: \"Reg.nr:\",\n damageInformationLabel: \"Skadeinformation\",\n damageReasonHeader: \"Skadeorsak:\",\n locationsForDamage: \"PLATSER:\",\n costs: \"KOSTNAD\",\n damageScene: \"Skadeplats\",\n descriptiveDamageReason: \"Skadebeskrivning:\",\n towingLabel: \"Bärgning\",\n towingTo: \"Bärgad till\",\n dateLabel: \"Datum\",\n towedFromLabel: \"Bärgad från:\",\n towedToLabel: \"Bärgad till:\",\n chargedDistanceLabel: \"Extra debiterad sträcka:\",\n costsLabel: \"Kostnader\",\n costTypeLabel: \"Kostnadstyp\",\n costLabel: \"Kostnader\",\n paymentMethodLabel: \"Betalningssätt\",\n totalLabel: \"Totalt\",\n assistansbolagetCompanyName: \"Rescue Europe AB\",\n assistansbolagetAddressStreet: \"Redaregatan 50\",\n assistansbolagetAddressZip: \"252 36 Helsingborg\",\n receiptHeader: \"KVITTO\",\n assistanstbolaget: \"Assistansbolaget\",\n emailLabel: \"Epost\",\n email: \"kontakt@assistansbolaget.nu\",\n orgNrLabel: \"Org. nr\",\n orgNr: \"559248-8265\",\n phoneNrLabel: \"Telefon\",\n phoneNr: \"042 324 324\",\n vatLabel: \"Varav moms\",\n missionId: \"Uppdragsnummer\",\n recieptGenerated: \"Kvitto genererat\"\n },\n opinion: {\n title: \"HUR VAR DIN UPPLEVELSE?\",\n text1: \"Tack för att du valde Assistansbolaget!\",\n text2:\n \"Vi skulle uppskatta om du lämnade ett omdöme om din upplevelse så att vi kan bli ännu bättre.\",\n placeholder: \"Beskriv din upplevelse...\",\n send: \"SKICKA OMDÖME\"\n },\n summarySuccessModal: {\n title: \"TACK FÖR DIN RECENSION\",\n text: \"Din åsikt är viktig för oss!\",\n primaryButton: \"STÄNG\"\n },\n summaryFailureModal: {\n title: \"NÅGONTING GICK FEL\",\n text: \"Vänligen försök igen.\",\n primaryButton: \"STÄNG\"\n },\n receiptFailureModal: {\n title: \"NÅGONTING GICK FEL\",\n text:\n \"Vi kunde tyvärr inte skicka uppdragsbeskrivningen till dig. Vänligen försök igen eller kontakta oss på Tel: +46 42 324 324.\",\n primaryButton: \"STÄNG\"\n }\n },\n carPositionPicker: {\n placeholder: \"Vart står fordonet?\",\n loading: \"Laddar...\",\n saveButton: \"OK\",\n searchError: \"Du måste välja ett av sökresultaten\"\n },\n estimatePriceView: {\n searchLocationPlaceholder: \"Vart vill du bärgas?\"\n },\n dispatchPosition: {\n locationBlockedModal: {\n title: \"ÅTKOMST BLOCKERAD\",\n text:\n \"Kontrollera webbläsarens inställningar över tillåtna platser för att ge åtkomst till platsinformation.\"\n },\n unexpectedErrorModal: {\n title: \"NÅGONTING GICK FEL\",\n text:\n \"Någonting gick fel, vi kunde inte positionera ditt fordon. Vänligen försök igen.\"\n },\n successModal: {\n title: \"Tack!\",\n text: \"Ditt fordons position har registrerats.\"\n },\n okButtonText: \"OK\"\n },\n loginTriggerComponent: {\n text: \"Vänligen vänta, uppgifter hämtas.\"\n },\n damageDetails: {\n frontLeft: \"Vänster fram\",\n frontRight: \"Höger fram\",\n rearLeft: \"Vänster bak\",\n rearRight: \"Höger bak\",\n missing: \"Saknas\",\n defect: \"Defekt\",\n lockedInsideVehicle: \"Inlåst\",\n petrol: \"Bensin\",\n diesel: \"Diesel\",\n ethanol: \"Etanol\",\n electric: \"El\",\n red: \"Röd\",\n yellow: \"Gul\",\n errorMessage: \"Felmeddelande\",\n camDrive: \"Kamdrivning/drivsystem\",\n turbo: \"Turbo/kompressor\",\n oilLeakage: \"Oljeläckage\",\n fanBelt: \"Fläktrem\",\n coolingSystem: \"Kylsystem\",\n waterPump: \"Vattenpump\",\n powerTransmission: \"Kraftöverföring\",\n clutch: \"Koppling\",\n flywheel: \"Svänghjul\",\n distributionBox: \"Fördelningslåda\",\n generator: \"Generator\",\n controlDevice: \"Styrdon/styrenhet\",\n ignitionLock: \"Tändlås\",\n batteryBank: \"Batteribank(elbil)\",\n fuelInjector: \"Spridare\",\n fuelPump: \"Bränslepump\",\n gasRegulator: \"Gasregulator\",\n steeringGear: \"Styrväxel\",\n servopump: \"Servopump\",\n steeringWheelLock: \"Rattlås\",\n abs: \"ABS/ESP\",\n parkingBrake: \"Parkeringsbroms\",\n brakeServo: \"Bromsservo\",\n brakePads: \"Bromsok/skivor/klossar\",\n rearCarriage: \"Bakvagn\",\n frontCarriage: \"Framvagn\",\n exhaustSystem: \"Avgassystem\",\n hydraulics: \"Hydraulik\",\n glassDamage: \"Glasskada\",\n fire: \"Brand\",\n fuelError: \"Feltankning\"\n },\n damageReasons: {\n flatTire: \"Punktering\",\n startHelp: \"Strömlöst batteri\",\n keyIssues: \"Nyckelproblem\",\n propulsion: \"Drivmedelsbrist\",\n warningLight: \"Varningslampa lyser\",\n engineProblem: \"Motor\",\n gearBox: \"Växellåda & drivning\",\n electronics: \"Elektronik\",\n fuelSystem: \"Bränslesystem\",\n steering: \"Styrning\",\n brakingSystem: \"Bromssystem\",\n otherDamage: \"Övrig skada\",\n collision: \"Kollision\",\n ditch: \"Dikeskörning\",\n transport: \"Transport\",\n drivingBan: \"Körförbud\"\n },\n accidentOptionFunction: {\n chooseWarningColor: \"Välj färg på varningslampan\",\n chooseReason: \"Välj orsak\",\n chooseTire: \"Välj däck\",\n fuelType: \"Ange typ av drivmedel\",\n damageDetail: \"Skadeorsak detalj\",\n chooseEngineProblem: \"Välj motorproblem\",\n chooseGearBox: \"Välj växellådeproblem\",\n chooseElectronics: \"Välj elfel\",\n chooseFuelSystem: \"Välj bränslesystemsfel\",\n chooseSteering: \"Välj styrningsfel\",\n chooseBrakingSystem: \"Välj bromsfel\",\n chooseOtherDamage: \"Välj övrig skada\"\n }\n },\n transport: {\n topBar: {\n phoneAlt: \"Klicka för att ringa oss på telefonnummer +4642324324\"\n },\n orientation: {\n title: \"VÄGHJÄLP DIREKT STÖDJER ENDAST PORTRÄTTLÄGE\",\n message: \"Var god rotera tillbaka telefonen till porträttläge\"\n },\n toggleInsured: {\n yes: \"Ja\",\n no: \"Nej\"\n },\n logoAlt: \"Assistansbolaget\",\n currency: \"kr\",\n minutes: \"min\",\n errors: {\n vehicleNotFound: \"Ogiltigt reg.nr (ABC123, ABC12A)\",\n fetchVehicleFailure: \"Ett fel inträffade ring oss på: +4642324324\",\n fetchUserFailure: \"Ett fel inträffade ring oss på: +4642324324\",\n personNotFound: \"Ogiltigt personnummer (ÅÅMMDDXXXX)\",\n vehicleRequired: \"Du måste ange ett registreringsnummer\",\n socialNumberRequired: \"Ogiltigt personnummer (ÅÅMMDDXXXX)\",\n required: \"Obligatoriskt fält\",\n minimumLength: \"Ogiltigt reg.nr (ABC123, ABC12A)\",\n maximumLength: \"Ogiltigt reg.nr (ABC123, ABC12A)\",\n invalidPhone: \"Ogiltigt telefonnummer (0701234567)\",\n invalidEmail: \"Ogiltig epostadress (namn@namn.com)\",\n terms: \"Du måste godkänna användarvillkoren.\",\n messageMaximumLength: \"Max 4000 tecken\",\n minimumLengthSocialNumber: \"Ogiltigt personnummer (ÅÅMMDDXXXX)\",\n maximumLengthSocialNumber: \"Ogiltigt personnummer (ÅÅMMDDXXXX)\"\n },\n phoneNumber: \"+4620400500\",\n background: {\n alt: \"Bakgrunds bild\",\n gotQuestions: \"Har du frågor?\",\n contactUs: \"Kontakta oss på\"\n },\n createOrder: {\n preliminary: \"Preliminärt\",\n toggleText1: \"Har du en gällande vägassistans-\",\n toggleText2: \"försäkring hos Assistansbolaget?\",\n time: \"kl\",\n readMore: \"Läs mer\",\n tmaCar: \"Inkluderar ej eventuell kostnad för TMA-bil\",\n engineInsuranceType: \"Ange bilförsäkringstyp\",\n fullOrHalfInsurance: \"Hel/Halv\",\n trafficInsurance: \"Trafik\",\n insuranceMissing: \"Vet ej\",\n noConfirmationModal: {\n title: \"BOKNING AVBRÖTS\",\n text:\n \"Tiden för att bekräfta bokningen har gått ut. Du blir automatiskt omdirigerad till föregående steg för att genomföra bokningen på nytt.\",\n button: \"OK\"\n },\n dispatchWillCallModal: {\n text:\n \"Tyvärr finns det inte någon ledig bärgningsbil i ditt område just nu.\",\n text2:\n \"Oroa dig inte, vi kommer att ringa upp dig för vidare hjälp inom några minuter.\",\n button: \"OK\"\n },\n alreadyStartedErrorModal: {\n title: \"DU HAR REDAN ETT PÅGÅENDE ÄRENDE\",\n text:\n \"Det finns redan ett pågående uppdrag med mobilnumret du angav. Klicka på OK för att följa ditt uppdrag.\",\n button: \"OK\"\n },\n cancelledByDispatchErrorModal: {\n title: \"BOKNINGEN AVBRÖTS\",\n text: \"Räddningscentralen avbröt bokningen.\",\n button: \"OK\"\n },\n unexpectedErrorModal: {\n title: \"NÅGONTING GICK FEL\",\n text:\n \"Någonting gick fel och vi kan inte presentera information för dig. Vänligen kontakta oss på Tel: +46 42 324 324 så hjälper vi dig vidare.\",\n button: \"OK\"\n },\n welcomeScreen: {\n title: \"BEGÄR VÄGHJÄLP\",\n subtitle: \"I SVERIGE\",\n roundTheClock: \"Dygnet runt i hela Sverige\",\n quickResponse: \"Snabbt på plats\",\n payWithKlarna: \"Delbetala med Klarna\",\n happyCustomers: \"4,6/5 hos Reco\",\n call: \"RING 020-400 500\",\n book: \"BOKA BÄRGNINGSBIL\",\n description:\n \"Välkommen till en av Sveriges största vägassistansoperatörer. Här begär du tryggt och enkelt väghjälp direkt med våra professionella och erfarna bärgare.\",\n errorTitle: \"INGEN BÄRGARE LEDIG\",\n errorDescription:\n \"Tyvärr finns det inte någon ledig bärgningsbil i ditt område just nu. Var god försök igen senare.\",\n noLocationServiceModal: {\n title: \"POSITION NEKAD\",\n text1:\n \"Eftersom att du nekade oss åtkomst till din position kan vi tyvärr inte erbjuda dig assistans.\",\n text2:\n \"Vänligen klicka på knappen ring räddningscentralen så hjälper vi dig.\",\n button: \"OK\"\n },\n metaData: {\n buttonText: \"visa mer information\",\n seoText1:\n \"Assistansbolaget är snabba på att hjälpa dig med bärgning av bil, lätt lastbil, släpvagn, husbil eller MC i Stockholm. Vid ankomst försöker vi reparera ditt fordon på plats, om inte det är möjligt bärgas fordonet till närmaste verkstad.\",\n seoText2:\n \"Vår bärgning är trygg och prisvärd. Vi är det marknadsledande alternativet med 350 000 nöjda kunder i Norden.\"\n }\n },\n estimatePrice: {\n title: \"PRELIMINÄRT PRIS\",\n titleChange: \"ÄNDRA DESTINATION\",\n text1: \"Om vi kan reparera ditt fordon på plats betalar du endast\",\n text2: \"Om ditt fordon behöver bärgas betalar du totalt\",\n textEngineInsuranceCoverage:\n \"Eftersom du har valt att du har hel- eller halvförsäkring så kommer vi endast att debitera dig din självrisk, överskjutande del debiteras ditt försäkringsbolag.\",\n suggestedAssistancePrice: \"REPARATION PÅ PLATS:\",\n suggestedShopPrice: \"BÄRGNING TILL:\",\n suggestedPrice: \"BERÄKNAT PRIS:\",\n suggestedArrival: \"BÄRGARENS ANKOMSTTID:\",\n destinationButtonOpen: \"ÄNDRA DESTINATION\",\n destinationButtonSave: \"SPARA & BERÄKNA NYTT PRIS\",\n destinationButtonUndo: \"ÅNGRA ÄNDRING\",\n time: \"kl\"\n },\n customerDetails: {\n title: \"MINA UPPGIFTER\",\n text:\n \"Vänligen fyll i dina uppgifter för att beräkna priset för din väghjälp.\",\n carNumber: \"Registreringsnummer\",\n mobileNumber: \"Telefonnummer\",\n carPosition: \"Fordonets position\",\n socialNumber: \"ÅÅÅÅMMDDXXXX\",\n pnrInfo: \"Som försäkringstagare behöver du ange ditt personnummer.\",\n engineInsuranceTypeSelect: \"Ange bilförsäkringstyp\"\n },\n damageReason: {\n title: \"ANGE VAD SOM ÄR FEL\",\n selectDamage: \"Ange vad som är fel\",\n garage: \"Är fordonet i ett P-hus eller annat trångt utrymme?\",\n tierPlacement: \"Välj däck\",\n chooseFuelType: \"Ange drivmedelstyp\",\n warningLamp: \"Välj färg på varningslampan\",\n red: \"Röd\",\n yellow: \"Gul\",\n chooseReason: \"Välj orsak\",\n missing: \"Saknas\",\n defect: \"Defekt\",\n lockedInside: \"Inlåst\",\n petrol: \"Bensin\",\n diesel: \"Diesel\",\n etanol: \"Etanol\",\n electric: \"El\",\n frontTierLeft: \"Vänster fram\",\n frontTierRight: \"Höger fram\",\n rearTierLeft: \"Vänster bak\",\n rearTierRight: \"Höger bak\",\n spareTier: \"Har du reservdäck?\",\n acceptText: \"Genom att boka bärgning godkänner du\",\n terms: \"användarvillkoren\"\n },\n userTerms: {\n title: \"ANVÄNDARVILLKOR\",\n text: TERMS\n },\n tmaCarTerms: {\n title: \"TMA-VILLKOR\",\n text: TERMS\n },\n seekingResponder: {\n towtruck: {\n title: \"VI SÖKER EFTER NÄRMSTA BÄRGNINGSBIL\",\n text:\n \"Vänligen vänta, stäng inte ner denna sida under tiden som vi söker efter en bärgningsbil åt dig.\"\n },\n dispatch: {\n title: \"VI KOMMER ATT HJÄLPA DIG!\",\n text1: \"Som försäkringstagare hos Assistansbolaget får du\",\n text2: \"prioriterad\",\n text3:\n \"väghjälp. Ditt ärende har nu mottagits av vår räddningscentral.\",\n text4:\n \"Vänligen vänta, vi ringer upp dig inom några minuter på det telefonnummer du uppgett.\"\n }\n },\n confirmOrder: {\n title: \"PRIS\",\n text1: \"Om vi kan reparera ditt fordon på plats betalar du endast\",\n text2: \"Om ditt fordon behöver bärgas betalar du totalt\",\n estimateArrival: \"BÄRGARENS ANKOMSTTID:\",\n assistanceTitle: \"REPARATION PÅ PLATS:\",\n towingTitle: \"BÄRGNING TILL:\",\n confirm: \"BEKRÄFTA\",\n time: \"kl\"\n },\n abort: \"AVBRYT\",\n previousStep: \"TILLBAKA\",\n nextStep: \"VIDARE\",\n close: \"STÄNG\",\n yes: \"Ja\",\n no: \"Nej\",\n home: \"TILL STARTSIDAN\"\n },\n activeOrder: {\n unexpectedErrorModal: {\n title: \"NÅGONTING GICK FEL\",\n text:\n \"Någonting gick fel och vi kan inte presentera information för dig. Vänligen kontakta oss på Tel: +46 42 324 324 så hjälper vi dig vidare.\",\n button: \"OK\"\n },\n button: \"OK\",\n orderStartedTitle: \"TACK, VI ÄR NU PÅ VÄG\",\n orderStartedDescription:\n \"Här kan du följa ditt ärende i realtid. En länk har även skickats till dig per SMS där också kan följa ditt ärende.\",\n cancelOrder: \"AVBRYT\",\n callSuport: \"RING RÄDDNINGSCENTRALEN\",\n onWay: {\n title: \"VI ÄR PÅ VÄG\",\n text1: \"Föraren\",\n text2: \"från\",\n text3:\n \"är på väg för att hjälpa dig. Räddningsfordonets registreringsnummer är:\",\n time: \"ANKOMSTTID:\",\n etaOutdated:\n \"Ankomsttiden har inte kunnat uppdateras på över fem minuter och kan därför vara missvisande.\"\n },\n arrived: {\n title: \"VI ÄR PÅ PLATS\",\n text1: \"Föraren\",\n text2: \"från\",\n text3: \"är på plats. Räddningsfordonets registreringsnummer är:\"\n },\n pickedup: {\n title: \"DITT FORDON BÄRGAS\",\n text1: \"Föraren\",\n text2: \"från\",\n text3: \"bärgar ditt fordon till\",\n text4: \"Bärgningsbilens registreringsnummer är:\"\n },\n dropped: {\n title: \"DITT FORDON HAR BÄRGATS\",\n text: \"\",\n text1: \"Föraren\",\n text2: \"från\",\n text3: \"har nu bärgat ditt fordon till\"\n },\n canceled: {\n title: \"DIN VÄGHJÄLP ÄR AVBRUTEN\",\n text1:\n \"Du har valt att avbryta din väghjälp och kommer att debiteras för framkörningsavgiften om\",\n arrivalFee: \"FRAMKÖRNINGSAVGIFT:\",\n towTruckTitle: \"UPPDRAGET ÄR AVBRUTET\",\n ok: \"OK\",\n towTruckText:\n \"Bärgaren har avbrutit uppdraget. Vi kommer att kontakta dig inom kort.\"\n },\n complete: {\n title: \"UPPDRAGET ÄR SLUTFÖRT\",\n text1:\n \"Tack för att du valde Assistansbolaget. Vi hoppas att du är nöjd med vår hjälp.\",\n text2:\n \"Vid frågor är du alltid varmt välkommen att kontakta vår räddningscentral.\"\n },\n cancelOrderModal: {\n abort: \"NEJ, AVBRYT INTE\",\n cancel: \"JA, AVBRYT\",\n title: \"AVBRYT VÄGHJÄLP\",\n text1:\n \"Vi är redan på väg till dig. Om du väljer att avbryta din väghjälp nu kommer du att debiteras för framkörningsavgiften om\",\n text2: \"Är du säker på att du vill avbryta?\"\n }\n },\n summary: {\n receipt: {\n header: \"TACK FÖR ATT DU VALDE ASSISTANSBOLAGET.\",\n title: \"SAMMANFATTNING AV DIN BOKNING\",\n text1: \"Vi hoppas att du är nöjd med vår hjälp.\",\n text2: \"Betygsätt oss gärna - ditt omdöme är viktigt för oss!\",\n text3: \"Maila mig kvitto & uppdragsbeskrivning:\",\n assistance: \"ASSISTANS:\",\n towing: \"BÄRGNING:\",\n shopChange: \"BYTE AV VERKSTAD:\",\n gradeExperience: \"Betygsätt din upplevelse\",\n summary: \"SKRIV OMDÖME\",\n placeholder: \"Ange din epostadress\",\n sendEmailButton: \"SKICKA\",\n emailSent: \"SKICKAD\",\n repairAtSpotLabel: \"Reparerad på plats\",\n downloadReceipt: \"HÄMTA FULLSTÄNDIGT KVITTO\",\n customerLabel: \"Kund\",\n nameLabel: \"Namn\",\n addressLabel: \"Adress\",\n vehicleLabel: \"Fordon\",\n brandLabel: \"Bilmärke\",\n yearLabel: \"År\",\n regnoLabel: \"Registreringsnummer\",\n damageInformationLabel: \"Skadeinformation\",\n damageReasonLabel: \"Skadeorsak\",\n dateLabel: \"Datum\",\n towedFromLabel: \"Bärgad från\",\n towedToLabel: \"Bärgad till\",\n chargedDistanceLabel: \"Debiterad sträcka\",\n costsLabel: \"Kostnader\",\n costTypeLabel: \"Kostnadstyp\",\n costLabel: \"Kostnader\",\n paymentMethodLabel: \"Betalningssätt\",\n totalLabel: \"Totalt\",\n assistansbolagetAddress1: \"Rescue Europe AB\",\n assistansbolagetAddress2: \"Redaregatan 50\",\n assistansbolagetAddress3: \"252 36 Helsingborg\",\n receiptHeader: \"KVITTO FÖR VÄGASSISTANSUPPDRAG\",\n assistanstbolaget: \"Assistansbolaget\",\n emailLabel: \"Epost\",\n email: \"kontakt@assistansbolaget.nu\",\n orgNrLabel: \"Org. nr\",\n orgNr: \"559248-8265\",\n phoneNrLabel: \"Telefon\",\n phoneNr: \"042324 324\",\n vatLabel: \"Varav moms\",\n missionId: \"Uppdragsnummer\"\n },\n opinion: {\n title: \"HUR VAR DIN UPPLEVELSE?\",\n text1: \"Tack för att du valde Assistansbolaget!\",\n text2:\n \"Vi skulle uppskatta om du lämnade ett omdöme om din upplevelse så att vi kan bli ännu bättre.\",\n placeholder: \"Beskriv din upplevelse...\",\n send: \"SKICKA OMDÖME\"\n },\n summarySuccessModal: {\n title: \"TACK FÖR DIN RECENSION\",\n text: \"Din åsikt är viktig för oss!\",\n primaryButton: \"STÄNG\"\n },\n summaryFailureModal: {\n title: \"NÅGONTING GICK FEL\",\n text: \"Vänligen försök igen.\",\n primaryButton: \"STÄNG\"\n },\n receiptFailureModal: {\n title: \"NÅGONTING GICK FEL\",\n text:\n \"Vi kunde tyvärr inte skicka uppdragsbeskrivningen till dig. Vänligen försök igen eller kontakta oss på Tel: +46 42 324 324.\",\n primaryButton: \"STÄNG\"\n }\n },\n carPositionPicker: {\n placeholder: \"Vart står fordonet?\",\n loading: \"Laddar...\",\n saveButton: \"OK\",\n searchError: \"Du måste välja ett av sökresultaten\"\n },\n estimatePriceView: {\n searchLocationPlaceholder: \"Vart vill du bärgas?\"\n },\n dispatchPosition: {\n locationBlockedModal: {\n title: \"ÅTKOMST BLOCKERAD\",\n text:\n \"Kontrollera webbläsarens inställningar över tillåtna platser för att ge åtkomst till platsinformation.\"\n },\n unexpectedErrorModal: {\n title: \"NÅGONTING GICK FEL\",\n text:\n \"Någonting gick fel, vi kunde inte positionera ditt fordon. Vänligen försök igen.\"\n },\n successModal: {\n title: \"Tack!\",\n text: \"Ditt fordons position har registrerats.\"\n },\n okButtonText: \"OK\"\n },\n loginTriggerComponent: {\n text: \"Vänligen vänta, uppgifter hämtas.\"\n },\n damageDetails: {\n frontLeft: \"Vänster fram\",\n frontRight: \"Höger fram\",\n rearLeft: \"Vänster bak\",\n rearRight: \"Höger bak\",\n missing: \"Saknas\",\n defect: \"Defekt\",\n lockedInsideVehicle: \"Inlåst\",\n petrol: \"Bensin\",\n diesel: \"Diesel\",\n ethanol: \"Etanol\",\n electric: \"El\",\n red: \"Röd\",\n yellow: \"Gul\",\n errorMessage: \"Felmeddelande\",\n camDrive: \"Kamdrivning/drivsystem\",\n turbo: \"Turbo/kompressor\",\n oilLeakage: \"Oljeläckage\",\n fanBelt: \"Fläktrem\",\n coolingSystem: \"Kylsystem\",\n waterPump: \"Vattenpump\",\n powerTransmission: \"Kraftöverföring\",\n clutch: \"Koppling\",\n flywheel: \"Svänghjul\",\n distributionBox: \"Fördelningslåda\",\n generator: \"Generator\",\n controlDevice: \"Styrdon/styrenhet\",\n ignitionLock: \"Tändlås\",\n batteryBank: \"Batteribank(elbil)\",\n fuelInjector: \"Spridare\",\n fuelPump: \"Bränslepump\",\n gasRegulator: \"Gasregulator\",\n steeringGear: \"Styrväxel\",\n servopump: \"Servopump\",\n steeringWheelLock: \"Rattlås\",\n abs: \"ABS/ESP\",\n parkingBrake: \"Parkeringsbroms\",\n brakeServo: \"Bromsservo\",\n brakePads: \"Bromsok/skivor/klossar\",\n rearCarriage: \"Bakvagn\",\n frontCarriage: \"Framvagn\",\n exhaustSystem: \"Avgassystem\",\n hydraulics: \"Hydraulik\",\n glassDamage: \"Glasskada\",\n fire: \"Brand\",\n fuelError: \"Feltankning\"\n },\n damageReasons: {\n flatTire: \"Punktering\",\n startHelp: \"Strömlöst batteri\",\n keyIssues: \"Nyckelproblem\",\n propulsion: \"Drivmedelsbrist\",\n warningLight: \"Varningslampa lyser\",\n engineProblem: \"Motor\",\n gearBox: \"Växellåda & drivning\",\n electronics: \"Elektronik\",\n fuelSystem: \"Bränslesystem\",\n steering: \"Styrning\",\n brakingSystem: \"Bromssystem\",\n otherDamage: \"Övrig skada\",\n collision: \"Kollision\",\n ditch: \"Dikeskörning\",\n transport: \"Transport\",\n drivingBan: \"Körförbud\"\n },\n accidentOptionFunction: {\n chooseWarningColor: \"Välj färg på varningslampan\",\n chooseReason: \"Välj orsak\",\n chooseTire: \"Välj däck\",\n fuelType: \"Ange typ av drivmedel\",\n damageDetail: \"Skadeorsak detalj\",\n chooseEngineProblem: \"Välj motorproblem\",\n chooseGearBox: \"Välj växellådeproblem\",\n chooseElectronics: \"Välj elfel\",\n chooseFuelSystem: \"Välj bränslesystemsfel\",\n chooseSteering: \"Välj styrningsfel\",\n chooseBrakingSystem: \"Välj bromsfel\",\n chooseOtherDamage: \"Välj övrig skada\"\n }\n }\n};\n","import strings from \"../assets/language/sweStrings\";\n\nconst checkMissionType = languageFile => {\n if (window.location.search.includes(\"transport\")) {\n return languageFile.transport;\n }\n return languageFile.towing;\n};\n\nconst languageHelper = () => {\n return checkMissionType(strings);\n};\n\nexport default languageHelper;\n","export const FETCHING_REVERSE_GEOCODE = \"FETCHING_REVERSE_GEOCODE\";\nexport const GET_LOCATION_SUCCESS = \"GET_LOCATION_SUCCESS\";\nexport const GET_LOCATION = \"GET_LOCATION\";\nexport const RESET_POSITION = \"RESET_POSITION\";\nexport const RESUME_ORDER = \"RESUME_ORDER\";\nexport const SET_VEHICLE_LOCATION = \"SET_VEHICLE_LOCATION\";\nexport const TOGGLE_NO_LOCATION_SERVICE_MODAL =\n \"TOGGLE_NO_LOCATION_SERVICE_MODAL\";\nexport const TOGGLE_NO_TOW_TRUCKS_MODAL = \"TOGGLE_NO_TOW_TRUCKS_MODAL\";\nexport const SET_UNSAVED_SHOP_LOCATION = \"SET_UNSAVED_SHOP_LOCATION\";\nexport const CLEAR_VEHICLE_POSITION = \"CLEAR_VEHICLE_POSITION\";\n\nexport const SAVE_DESTINATION_PLACE = \"SAVE_DESTINATION_PLACE\";\nexport const SAVE_DESTINATION_CHANGER_WITH_ALL_INFO =\n \"SAVE_DESTINATION_CHANGER_WITH_ALL_INFO\";\nexport const SET_POSITION_TO_SERVE = \"SET_POSITION_TO_SERVE\";\n","module.exports = __webpack_public_path__ + \"static/media/repair.94f0b221.svg\";","module.exports = __webpack_public_path__ + \"static/media/calendar.0f1ce08e.svg\";","module.exports = __webpack_public_path__ + \"static/media/towTruckReciept.97d247ab.svg\";","/* global google */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { compose, withProps, withState } from \"recompose\";\nimport {\n withScriptjs,\n withGoogleMap,\n GoogleMap,\n Marker\n} from \"react-google-maps\";\nimport { DRIVER_DRIVING_TO_DESTINATION } from \"../../constants/orderStatusConstants\";\nimport { SWEDEN_LAT_LNG, DENMARK_LAT_LNG } from \"../../helpers/locations\";\n\nimport { directionsMapOptions } from \"./defaultMapOptions\";\nimport { GOOGLE_MAP_URL } from \"../../constants/apiConstants\";\nimport vehiclePosition from \"../../assets/images/car-position-icon.svg\";\nimport shopPosition from \"../../assets/images/ico_repair_destination.svg\";\nimport truckIcon from \"./towIcon\";\nimport { getSession, SESSION_KEYS } from \"../../helpers/sessionStore\";\n\nconst DELTA_POSITION_THRESHOLD = 0.00001;\n\nconst DirectionsMap = compose(\n withProps({\n googleMapURL: GOOGLE_MAP_URL,\n loadingElement:
,\n containerElement:
,\n mapElement:
\n }),\n withState(\"fitBounds\", \"setFitBounds\", true),\n withState(\"heading\", \"setHeading\", 0),\n withScriptjs,\n withGoogleMap\n)(props => {\n const {\n vehicleCoordinates,\n towtruckCoordinates,\n previousTowtruckCoordinates,\n orderStatus,\n shopCoordinates\n } = props;\n const [markers, setMarkers] = useState();\n const appId = getSession(SESSION_KEYS.appId);\n\n useEffect(() => {\n if (orderStatus === DRIVER_DRIVING_TO_DESTINATION) {\n setMarkers([\n {\n name: \"shop\",\n lat: shopCoordinates.latitude,\n lng: shopCoordinates.longitude,\n icon: shopPosition,\n id: 1\n },\n {\n name: \"towtruck\",\n lat: towtruckCoordinates.latitude,\n lng: towtruckCoordinates.longitude,\n icons: truckIcon,\n id: 2\n }\n ]);\n } else {\n setMarkers([\n {\n name: \"vehicle\",\n lat: vehicleCoordinates.lat,\n lng: vehicleCoordinates.lng,\n icon: vehiclePosition,\n id: 1\n },\n {\n name: \"towtruck\",\n lat: towtruckCoordinates.latitude,\n lng: towtruckCoordinates.longitude,\n icons: truckIcon,\n id: 2\n }\n ]);\n }\n }, [shopCoordinates, towtruckCoordinates, vehicleCoordinates, orderStatus]);\n\n useEffect(() => {\n if (\n google &&\n google.maps &&\n towtruckCoordinates &&\n towtruckCoordinates.latitude\n ) {\n const point1 = new google.maps.LatLng({\n lat: previousTowtruckCoordinates.latitude,\n lng: previousTowtruckCoordinates.longitude\n });\n const point2 = new google.maps.LatLng({\n lat: towtruckCoordinates.latitude,\n lng: towtruckCoordinates.longitude\n });\n\n if (\n Math.abs(\n previousTowtruckCoordinates.latitude - towtruckCoordinates.latitude\n ) > DELTA_POSITION_THRESHOLD &&\n Math.abs(\n previousTowtruckCoordinates.longitude - towtruckCoordinates.longitude\n ) > DELTA_POSITION_THRESHOLD\n ) {\n const heading = previousTowtruckCoordinates.latitude\n ? google.maps.geometry.spherical.computeHeading(point1, point2) + 0\n : 0;\n props.setHeading(heading);\n }\n }\n }, [google.maps, towtruckCoordinates, previousTowtruckCoordinates]);\n\n const deltaLat = Math.abs(\n vehicleCoordinates.lat - towtruckCoordinates.latitude\n );\n const bounds = new window.google.maps.LatLngBounds();\n const headerHeight = 35;\n const contentHeight = 274;\n const contentWidth = 310;\n const towTruckMarkerHeight = 75;\n const vehicleMarkerHeight = 32;\n const visibleHeight = window.innerHeight - headerHeight - contentHeight;\n const paddingLeftRight = (window.innerWidth - contentWidth) / 2;\n const bottomPadding =\n window.innerHeight - visibleHeight - headerHeight + towTruckMarkerHeight;\n const topPadding =\n window.innerHeight - visibleHeight - contentHeight + vehicleMarkerHeight;\n\n return (\n <>\n \n {\n props.setFitBounds(true);\n }}\n />\n
\n\n {markers && (\n {\n if (map) {\n markers.map(marker => {\n if (marker.lat && marker.lng) {\n bounds.extend({ lat: marker.lat, lng: marker.lng });\n }\n return marker.id;\n });\n if (props.fitBounds) {\n map.fitBounds(bounds, {\n top: topPadding,\n bottom: bottomPadding,\n left: paddingLeftRight,\n right: paddingLeftRight\n });\n if (deltaLat < 0.000233) {\n map.panBy(\n 0,\n visibleHeight / 2 +\n (contentHeight -\n (window.innerHeight - headerHeight) / 2) -\n headerHeight\n );\n }\n }\n }\n }}\n defaultCenter={\n appId === \"gat-rescue-frontend\" ? SWEDEN_LAT_LNG : DENMARK_LAT_LNG\n }\n defaultOptions={directionsMapOptions}\n onClick={() => props.setFitBounds(false)}\n onDragStart={() => props.setFitBounds(false)}\n >\n {markers.length > 0 &&\n markers.map(marker => {\n let icon;\n let anchor;\n let size;\n if (marker.icons) {\n const type = \"towtruck\";\n /* -- TODO - Ändra färg på bärgningsbil */\n const iconString = marker.icons(\"#FFD4A3\", props.heading, type);\n const base64IconString = Buffer.from(\n iconString,\n \"utf8\"\n ).toString(\"base64\");\n icon = `data:image/svg+xml;base64,${base64IconString}`;\n const ICON_WIDTH = 55;\n const ICON_HEIGHT = 55;\n size = new window.google.maps.Size(ICON_WIDTH, ICON_HEIGHT);\n anchor = new window.google.maps.Point(\n ICON_WIDTH / 2,\n ICON_HEIGHT / 2\n );\n } else if (marker.name === \"vehicle\") {\n // eslint-disable-next-line\n icon = marker.icon;\n anchor = new google.maps.Point(15, 15);\n } else {\n // eslint-disable-next-line\n icon = marker.icon;\n }\n if (!marker.lat || !marker.lng) return null;\n\n return (\n \n );\n })}\n \n )}\n \n );\n});\n\nDirectionsMap.propTypes = {\n vehicleCoordinates: PropTypes.shape({\n lat: PropTypes.number,\n lng: PropTypes.number\n }).isRequired,\n towtruckCoordinates: PropTypes.shape({\n latitude: PropTypes.number,\n longitude: PropTypes.number\n }).isRequired\n};\n\nexport default DirectionsMap;\n","module.exports = __webpack_public_path__ + \"static/media/ico_repair_destination.31720389.svg\";","module.exports = __webpack_public_path__ + \"static/media/towtruck_welcome.06259fcf.svg\";","module.exports = __webpack_public_path__ + \"static/media/thumbs_up.ef2ee3f7.svg\";","module.exports = __webpack_public_path__ + \"static/media/klarna_logo.afb80552.svg\";","module.exports = __webpack_public_path__ + \"static/media/clock_price.283ff43d.svg\";","import { createIntl, createIntlCache } from \"react-intl\";\nimport React, { useEffect, useState } from \"react\";\nimport { useSessionStorage } from \"usehooks-ts\";\nimport { BaseUrl } from \"../constants/apiConstants\";\nimport api from \"../helpers/apiUtils\";\nimport { getSession, SESSION_KEYS } from \"../helpers/sessionStore\";\nimport * as defaultMessages from \"./strings/translation-base.json\";\n\nconst initialLocale = \"en-US\";\n\nexport const cache = createIntlCache();\n\nconst mappedDefaultMessages = Object.entries(defaultMessages).reduce(\n (acc, [key, value]) => {\n acc[key] = value.defaultMessage;\n return acc;\n },\n {}\n);\n\n// eslint-disable-next-line no-unused-vars\nlet intl = createIntl(\n {\n locale: getSession(SESSION_KEYS.locale) || initialLocale,\n messages: mappedDefaultMessages\n },\n cache\n);\n\nexport const useTranslations = () => {\n const [messages, setMessages] = useState(intl);\n const [companyAttributes] = useSessionStorage(\n SESSION_KEYS.companyAttributes,\n undefined\n );\n const [translations, setTranslations] = React.useState([]);\n const [locale, setLocale] = useSessionStorage(SESSION_KEYS.locale, undefined);\n const appId = getSession(SESSION_KEYS.appId);\n\n React.useEffect(() => {\n const url = new URL(\n `${api.getBaseUrl(BaseUrl.GatUrl)}v1/translations,export-application`\n );\n url.searchParams.append(\"client\", `Application-gat-rescue-frontend`);\n url.searchParams.append(\"locale\", locale);\n fetch(url, {\n method: \"GET\",\n headers: {\n \"gat-organization-unit\": getSession(SESSION_KEYS.gatOrganizationUnit),\n \"gat-locale\": locale,\n \"Content-Type\": \"application/json\",\n \"gat-application-id\": appId\n }\n })\n .then(response => response.json())\n .then(data => {\n setTranslations(data);\n })\n .catch(error => {\n console.log(\"Error when fetching translations\", error);\n });\n }, [locale]);\n\n useEffect(() => {\n if (!locale && companyAttributes) {\n setLocale(companyAttributes?.CompanyLocale?.value);\n }\n }, [companyAttributes]);\n\n useEffect(() => {\n intl = createIntl(\n {\n locale,\n messages: translations\n },\n cache\n );\n setMessages(intl);\n }, [translations]);\n\n return { locale, messages };\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { injectIntl } from \"react-intl\";\nimport history from \"../../history\";\nimport LoadingSpinner from \"../../components/LoadingSpinner/LoadingSpinner\";\nimport {\n selectors as createOrderSelectors,\n actions as createOrderActions\n} from \"../createOrder\";\nimport { CREATE_ORDER_PATH } from \"../../constants/routeConstants\";\nimport Modal from \"../../components/Modal/Modal\";\nimport languageHelper from \"../../helpers/languageHelper\";\nimport \"./style.css\";\n\nconst language = languageHelper();\n\nconst { login, toggleUnexpectedErrorModal } = createOrderActions;\nconst { getUnexpectedErrorModalState } = createOrderSelectors;\n\nclass LoginTriggerComponent extends Component {\n componentDidMount() {\n const { loginWithUrlParameters } = this.props;\n if (\n window.location.search.includes(\"id\") &&\n window.location.search.includes(\"phone\") &&\n (window.location.search.includes(\"regno\") ||\n window.location.search.includes(\"transport\"))\n ) {\n loginWithUrlParameters();\n }\n }\n\n render() {\n const {\n unexpectedErrorModalState,\n closeUnexpectedErrorModal,\n intl\n } = this.props;\n return (\n <>\n {unexpectedErrorModalState && (\n \n )}\n {!unexpectedErrorModalState && (\n <>\n \n
\n
\n {language.loginTriggerComponent.text}\n
\n
\n \n )}\n \n );\n }\n}\n\nLoginTriggerComponent.propTypes = {\n unexpectedErrorModalState: PropTypes.bool.isRequired,\n closeUnexpectedErrorModal: PropTypes.func.isRequired,\n loginWithUrlParameters: PropTypes.func.isRequired,\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired\n};\n\nconst mapStateToProps = state => ({\n unexpectedErrorModalState: getUnexpectedErrorModalState(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n loginWithUrlParameters: () => dispatch(login()),\n closeUnexpectedErrorModal: () => {\n dispatch(toggleUnexpectedErrorModal(false));\n history.push(CREATE_ORDER_PATH);\n }\n});\n\nexport default injectIntl(\n connect(mapStateToProps, mapDispatchToProps)(LoginTriggerComponent)\n);\n","import { useEffect } from \"react\";\nimport { useSessionStorage } from \"usehooks-ts\";\nimport { BaseUrl } from \"../../constants/apiConstants\";\nimport api from \"../apiUtils\";\nimport { getSession, SESSION_KEYS } from \"../sessionStore\";\n\nconst useSetCompanyInformation = () => {\n const [companyAttributes, setCompanyAttributes] = useSessionStorage(\n SESSION_KEYS.companyAttributes,\n undefined\n );\n // eslint-disable-next-line no-unused-vars\n const [_, setOrganizationUnitId] = useSessionStorage(\n SESSION_KEYS.gatOrganizationUnit,\n undefined\n );\n // eslint-disable-next-line no-unused-vars\n const [__, setOrganizationUnitHeadName] = useSessionStorage(\n SESSION_KEYS.organizationHeaderName,\n undefined\n );\n useEffect(() => {\n const appId = getSession(SESSION_KEYS.appId);\n api\n .get(\"v1/applications,me?version=1.0.0\", BaseUrl.GatUrl, {\n gatOrgUnit: \"\",\n appId\n })\n .then(res => {\n const recordCompanyAttributes = res?.data?.companyAttributes?.reduce(\n (acc, { key, ...rest }) => {\n acc[key] = rest;\n return acc;\n },\n {}\n );\n setCompanyAttributes(recordCompanyAttributes);\n setOrganizationUnitId(res?.data?.organizationUnitId);\n setOrganizationUnitHeadName(res?.data?.organizationUnitName);\n });\n }, []);\n return {\n logo: companyAttributes?.CompanyLogo?.value,\n langOptions: companyAttributes?.CompanyLocale?.choices || []\n };\n};\n\nexport default useSetCompanyInformation;\n","import React from \"react\";\nimport \"./style.css\";\nimport { useIntl } from \"react-intl\";\nimport { useSessionStorage } from \"usehooks-ts\";\nimport { Select } from \"@assistansbolaget/gat-components\";\nimport { SESSION_KEYS } from \"../../helpers/sessionStore\";\nimport useSetCompanyInformation from \"../../helpers/hooks/useSetCompanyInformation\";\n\nconst TopBar = () => {\n const { logo, langOptions } = useSetCompanyInformation();\n const [locale, setLocale] = useSessionStorage(SESSION_KEYS.locale);\n\n const intl = useIntl();\n const getFlagIcon = lang => {\n const code = lang?.split(\"-\")?.[1];\n return (\n \n );\n };\n\n const createOptions = langOptions.map(option => ({\n value: option.value,\n label: (\n <>\n {getFlagIcon(option.value)}\n {option.name}\n \n )\n }));\n\n const defaultOption = createOptions.find(option => option.value === locale);\n\n const handleSelectLanguage = option => {\n setLocale(option.value);\n };\n\n return (\n
\n
\n
\n {logo && \"logo\"}\n
\n
\n \n
\n
\n
\n );\n};\n\nexport default TopBar;\n","/* global google */\nimport React, { useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { compose, withProps } from \"recompose\";\nimport {\n withScriptjs,\n withGoogleMap,\n GoogleMap,\n Marker\n} from \"react-google-maps\";\nimport { SWEDEN_LAT_LNG, DENMARK_LAT_LNG } from \"../../helpers/locations\";\nimport { directionsMapOptions } from \"./defaultMapOptions\";\nimport { GOOGLE_MAP_URL } from \"../../constants/apiConstants\";\nimport { selectors as carPositionSelectors } from \"../carPositionPicker\";\nimport { getSession, SESSION_KEYS } from \"../../helpers/sessionStore\";\n\nconst { getCenterCoords } = carPositionSelectors;\n\nconst CreateOrderMap = compose(\n withProps({\n googleMapURL: GOOGLE_MAP_URL,\n loadingElement:
,\n containerElement:
,\n mapElement:
\n }),\n withScriptjs,\n withGoogleMap\n)(props => {\n const { carPositionCoordinates } = props;\n const [zoomLevel, setZoomLevel] = useState(4);\n const appId = getSession(SESSION_KEYS.appId);\n\n return (\n <>\n {\n if (map && carPositionCoordinates && carPositionCoordinates.lat) {\n const carLatLng = new google.maps.LatLng({\n lat: carPositionCoordinates.lat,\n lng: carPositionCoordinates.lng\n });\n const headerHeight = 35;\n const contentHeight = 400;\n const visibleHeight =\n window.innerHeight - headerHeight - contentHeight;\n\n setTimeout(() => {\n setZoomLevel(16);\n map.panTo(carLatLng);\n map.panBy(\n 0,\n visibleHeight / 2 +\n (contentHeight - (window.innerHeight - headerHeight) / 2) -\n headerHeight\n );\n }, 100);\n }\n }}\n zoom={zoomLevel}\n defaultCenter={\n appId === \"gat-rescue-frontend\" ? SWEDEN_LAT_LNG : DENMARK_LAT_LNG\n }\n defaultOptions={directionsMapOptions}\n className=\"google-map-container\"\n >\n {carPositionCoordinates && (\n \n )}\n\n {carPositionCoordinates && (\n \n )}\n \n \n );\n});\n\nCreateOrderMap.propTypes = {\n carPositionCoordinates: PropTypes.shape({\n accuracy: PropTypes.number,\n lat: PropTypes.number,\n lng: PropTypes.number\n })\n};\n\nconst mapStateToProps = state => ({\n carPositionCoordinates: getCenterCoords(state)\n});\n\nexport default connect(mapStateToProps, null)(CreateOrderMap);\n","import React from \"react\";\nimport { compose, withProps } from \"recompose\";\nimport { withScriptjs, withGoogleMap, GoogleMap } from \"react-google-maps\";\nimport { directionsMapOptions } from \"./defaultMapOptions\";\nimport { GOOGLE_MAP_URL } from \"../../constants/apiConstants\";\n\nconst OrderCompleteMap = compose(\n withProps({\n googleMapURL: GOOGLE_MAP_URL,\n loadingElement:
,\n containerElement:
,\n mapElement:
\n }),\n withScriptjs,\n withGoogleMap\n)(props => {\n const { vehicleCoordinates } = props;\n return (\n <>\n {vehicleCoordinates && vehicleCoordinates.latitude && (\n \n )}\n \n );\n});\n\nexport default OrderCompleteMap;\n","import React, { useState, useEffect } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport DirectionsMap from \"./DirectionsMap\";\nimport welcomeScreenSelectors from \"../welcomeScreen/selectors\";\nimport OrderCompleteMap from \"./OrderCompleteMap\";\nimport { CANCELLED, FINISHED } from \"../../constants/orderStatusConstants\";\nimport activeOrderSelectors from \"../activeOrder/selectors\";\n\nconst {\n getVehiclePosition,\n getTowtruckCoordinates,\n getPreviousTowtruckCoordinates,\n getShopCoordinates\n} = welcomeScreenSelectors;\n\nconst { getOrder } = activeOrderSelectors;\n\nconst ActiveOrderMapHandler = ({\n vehicleCoordinates,\n towtruckCoordinates,\n previousTowtruckCoordinates,\n shopCoordinates,\n order\n}) => {\n const [animateTowtruckCoordinates, setAnimateTowtruckCoordinates] = useState(\n null\n );\n\n const coordinatesHasChanged = (newLat, newLng, oldLat, oldLng) =>\n Math.abs(oldLat - newLat) > 0.00001 && Math.abs(oldLng - newLng) > 0.00001;\n\n useEffect(() => {\n if (\n coordinatesHasChanged(\n towtruckCoordinates.latitude,\n towtruckCoordinates.longitude,\n previousTowtruckCoordinates.latitude,\n previousTowtruckCoordinates.longitude\n )\n ) {\n const DELTA_SIZE = 110;\n const deltaLng =\n (towtruckCoordinates.longitude -\n previousTowtruckCoordinates.longitude) /\n DELTA_SIZE;\n const deltaLat =\n (towtruckCoordinates.latitude - previousTowtruckCoordinates.latitude) /\n DELTA_SIZE;\n for (let i = 0; i < DELTA_SIZE; i++) {\n setTimeout(\n () =>\n setAnimateTowtruckCoordinates({\n longitude: previousTowtruckCoordinates.longitude + i * deltaLng,\n latitude: previousTowtruckCoordinates.latitude + i * deltaLat\n }),\n i * 20\n );\n }\n }\n }, [towtruckCoordinates, previousTowtruckCoordinates]);\n\n return (\n <>\n {order.state === FINISHED || order.state === CANCELLED ? (\n \n ) : (\n \n )}\n \n );\n};\n\nActiveOrderMapHandler.propTypes = {\n order: PropTypes.shape({\n state: PropTypes.string\n }).isRequired,\n vehicleCoordinates: PropTypes.shape({\n lat: PropTypes.number,\n lng: PropTypes.number\n }).isRequired,\n towtruckCoordinates: PropTypes.shape({\n latitude: PropTypes.number,\n longitude: PropTypes.number\n }).isRequired,\n shopCoordinates: PropTypes.shape({\n latitude: PropTypes.number,\n longitude: PropTypes.number\n }).isRequired,\n previousTowtruckCoordinates: PropTypes.shape({\n latitude: PropTypes.number,\n longitude: PropTypes.number\n }).isRequired\n};\n\nconst mapStateToProps = state => ({\n vehicleCoordinates: getVehiclePosition(state),\n shopCoordinates: getShopCoordinates(state),\n towtruckCoordinates: getTowtruckCoordinates(state),\n previousTowtruckCoordinates: getPreviousTowtruckCoordinates(state),\n order: getOrder(state)\n});\n\nexport default connect(mapStateToProps, null)(ActiveOrderMapHandler);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { compose, withProps } from \"recompose\";\nimport { withScriptjs, withGoogleMap, GoogleMap } from \"react-google-maps\";\nimport { defaultMapOptions } from \"./defaultMapOptions\";\nimport { GOOGLE_MAP_URL } from \"../../constants/apiConstants\";\nimport welcomeScreenSelectors from \"../welcomeScreen/selectors\";\n\nconst { getVehiclePosition } = welcomeScreenSelectors;\n\nconst CreateOrderMap = compose(\n withProps({\n googleMapURL: GOOGLE_MAP_URL,\n loadingElement:
,\n containerElement:
,\n mapElement:
,\n }),\n withScriptjs,\n withGoogleMap\n)((props) => {\n const { carPositionCoordinates } = props;\n\n return (\n <>\n \n \n );\n});\n\nCreateOrderMap.propTypes = {\n carPositionCoordinates: PropTypes.shape({\n accuracy: PropTypes.number,\n lat: PropTypes.number,\n lng: PropTypes.number,\n }),\n};\n\nconst mapStateToProps = (state) => ({\n carPositionCoordinates: getVehiclePosition(state),\n});\n\nexport default connect(mapStateToProps, null)(CreateOrderMap);\n","import React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport history from \"../../history\";\nimport CreateOrderMap from \"./CreateOrderMap\";\nimport ActiveOrderMapHandler from \"./ActiveOrderMapHandler\";\nimport {\n CREATE_ORDER_PATH,\n ACTIVE_ORDER_PATH,\n SUMMARY_PATH\n} from \"../../constants/routeConstants\";\nimport selectors from \"../createOrder/selectors\";\nimport {\n CAR_POSITION_VIEW,\n SEEKING_RESPONDER_VIEW\n} from \"../createOrder/viewConstants\";\nimport SeekingResponderMap from \"./SeekingResponderMap\";\n\nimport \"./style.css\";\n\nconst { getCurrentView } = selectors;\n\nconst currentRoute = history.location.pathname;\nconst isCurrentRouteDispatchPosition = currentRoute.includes(\n \"dispatchPosition\"\n);\n\nfunction backgroundRenderer(path, current) {\n if (path === CREATE_ORDER_PATH && current === CAR_POSITION_VIEW) return null;\n if (isCurrentRouteDispatchPosition) return null;\n\n if (path === CREATE_ORDER_PATH)\n if (current === SEEKING_RESPONDER_VIEW) {\n return (\n <>\n \n \n );\n } else {\n return (\n <>\n \n \n );\n }\n\n if (path === ACTIVE_ORDER_PATH)\n return (\n <>\n \n \n );\n if (path === SUMMARY_PATH)\n return (\n <>\n \n \n );\n\n return ;\n}\n\nconst Background = ({ current, currentPath }) => {\n const [backgroundComponent, setBackgroundComponent] = useState(null);\n useEffect(() => {\n setBackgroundComponent(backgroundRenderer(currentPath, current));\n }, [currentPath, current]);\n return
{backgroundComponent}
;\n};\n\nBackground.propTypes = {\n current: PropTypes.string.isRequired,\n currentPath: PropTypes.string.isRequired\n};\n\nconst mapStateToProps = state => ({\n current: getCurrentView(state),\n currentPath: history.location.pathname\n});\n\nexport default connect(mapStateToProps, null)(Background);\n","import Background from \"./background\";\n\nexport default Background;\n","import React from \"react\";\nimport { Helmet } from \"react-helmet\";\n\nconst HeaderTag = () => {\n const appId = process.env.REACT_APP_APPLICATION_ID;\n\n const config = {\n \"gat-rescue-frontend\": {\n title: \"Rescue Assistansbolaget\",\n description:\n \"Get a price estimate, estimated time of arrival, and GPS location with GAT.\",\n image: \"https://rescue.assistansbolaget.com/images/rescue.png\",\n url: \"https://rescue.assistansbolaget.nu\",\n type: \"website\",\n canonical: \"https://rescue.assistansbolaget.nu\",\n itemPropDescription: \"Get towing assistance | GAT\",\n itemPropDescriptionTwo:\n \"Get a price estimate, estimated time of arrival, and GPS location with GAT.\"\n },\n \"gat-rescue-dk\": {\n title: \"Rescue Assist24\",\n description:\n \"Get a price estimate, estimated time of arrival, and GPS location with GAT.\",\n canonical: \"https://rescue.assist24.dk\",\n type: \"website\"\n }\n };\n\n const currentConfig = config[appId] || {};\n\n return (\n <>\n \n {currentConfig.title}\n \n \n \n \n \n \n \n \n \n \n\n {appId === \"gat-rescue-frontend\" ? (\n \n ) : null}\n\n{appId === \"gat-rescue-dk\" ? (\n \n ) : null}\n\n {appId === \"gat-rescue-frontend\" ? (\n \n ) : null}\n\n\n\n {appId === \"gat-rescue-dk\" ? (\n \n ) : null}\n\n\n \n \n {appId === \"gat-rescue-frontend\" ? (\n \n ) : null}\n\n {appId === \"gat-rescue-frontend\" ? (\n \n ) : null}\n\n {appId === \"gat-rescue-dk\" ? (\n \n ) : null}\n\n {appId === \"gat-rescue-frontend\" ? (\n \n ) : null}\n\n {appId === \"gat-rescue-dk\" ? (\n \n ) : null}\n\n\n \n \n );\n};\n\nexport default HeaderTag;\n","import React from \"react\";\nimport { compose } from \"redux\";\nimport { Redirect, Route, Switch, withRouter } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport { injectIntl } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport { Loading } from \"./features/loading\";\nimport { CreateOrder } from \"./features/createOrder\";\nimport LoginTriggerComponent from \"./features/login/LoginTriggerComponent\";\nimport { ActiveOrder } from \"./features/activeOrder\";\nimport { Summary } from \"./features/summary\";\nimport {\n CREATE_ORDER_PATH,\n ACTIVE_ORDER_PATH,\n SUMMARY_PATH,\n DISPATCH_POSITION_PATH,\n LOGIN_PATH,\n OLD_CREATE_ORDER_PATH\n} from \"./constants/routeConstants\";\nimport { DispatchPosition } from \"./features/dispatchPosition\";\nimport TopBar from \"./components/TopBar/TopBar\";\nimport Background from \"./features/background\";\nimport HeaderTag from \"./helpers/HeaderTag\";\n\nconst App = () => {\n return (\n
\n \n \n
\n \n (\n \n )}\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n {/* IMPORTANT: This route has to be the last one */}\n } />\n \n \n
\n \n
\n );\n};\n\nApp.propTypes = {\n intl: PropTypes.shape({\n formatMessage: PropTypes.func.isRequired\n }).isRequired,\n location: PropTypes.shape({\n search: PropTypes.string\n }).isRequired\n};\n\nexport default compose(injectIntl, withRouter, connect(null, null))(App);\n","import styled from \"styled-components\";\nimport { Button } from \"@assistansbolaget/gat-components\";\n\nconst CallButton = styled(Button)``;\n\nexport default CallButton;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport languageHelper from \"../../helpers/languageHelper\";\nimport towTruck from \"../../assets/images/towtruck_welcome.svg\";\nimport thumbsUp from \"../../assets/images/thumbs_up.svg\";\nimport klarna from \"../../assets/images/klarna_logo.svg\";\nimport clockPrice from \"../../assets/images/clock_price.svg\";\nimport { CREATE_ORDER_PATH } from \"../../constants/routeConstants\";\nimport history from \"../../history\";\nimport actions from \"./actions\";\nimport { actions as createOrderActions } from \"../createOrder\";\nimport { CUSTOMER_DETAILS_VIEW } from \"../createOrder/viewConstants\";\nimport activeOrderSelectors from \"../activeOrder/selectors\";\nimport \"./style.css\";\nimport arrowButton from \"../../assets/images/arrow-down.svg\";\nimport CallButton from \"./welcomeScreen.style\";\n\nconst language = languageHelper();\n\nconst { setCurrentView, toggleUnexpectedErrorModal } = createOrderActions;\nconst { resumeOrder } = actions;\nconst { getPreventResumeOrderState } = activeOrderSelectors;\nclass WelcomeScreen extends React.Component {\n state = {\n toggleDescription: false\n };\n\n componentDidMount() {\n const {\n currentView,\n resetUnexpectedErrorModal,\n checkAndResumeActiveOrder,\n preventResumeOrder\n } = this.props;\n currentView();\n resetUnexpectedErrorModal();\n if (!preventResumeOrder) {\n checkAndResumeActiveOrder();\n }\n }\n\n toggleDescriptionHandler = () => {\n const { toggleDescription } = this.state;\n if (!toggleDescription) {\n this.scrollToBottom();\n } else {\n this.scrollToTop();\n }\n this.setState(prevState => ({\n toggleDescription: !prevState.toggleDescription\n }));\n };\n\n scrollToBottom = () => {\n this.regionTextRef.scrollIntoView({ behavior: \"smooth\" });\n };\n\n scrollToTop = () => {\n this.DOMRef.scrollIntoView({ behavior: \"smooth\" });\n };\n\n render() {\n const { toggleDescription } = this.state;\n const allowMetadata = true;\n\n const metaData = allowMetadata ? (\n <>\n
\n \n \n \n {language.createOrder.welcomeScreen.metaData.buttonText}\n \n \n
\n
\n {\n this.regionTextRef = el;\n }}\n >\n

{language.createOrder.welcomeScreen.metaData.seoText1}

\n

{language.createOrder.welcomeScreen.metaData.seoText2}

\n
\n
\n \n ) : null;\n\n const content = (\n <>\n
\n
\n
\n

{language.createOrder.welcomeScreen.title}

\n {allowMetadata && (\n

{language.createOrder.welcomeScreen.subtitle}

\n )}\n
\n
\n \n \n

\n {language.createOrder.welcomeScreen.roundTheClock}\n

\n
\n \n \n

\n {language.createOrder.welcomeScreen.quickResponse}\n

\n
\n \n \"klarna_logo\"\n

\n {language.createOrder.welcomeScreen.payWithKlarna}\n

\n
\n \n \"thumbs_up\"\n

\n {language.createOrder.welcomeScreen.happyCustomers}\n

\n
\n
\n
\n
\n \n {language.createOrder.welcomeScreen.call}\n \n history.push(CREATE_ORDER_PATH)}\n >\n {language.createOrder.welcomeScreen.book}\n \n
\n
\n \n );\n\n return (\n <>\n {\n this.DOMRef = el;\n }}\n >\n {content}\n {metaData}\n
\n \n );\n }\n}\n\nWelcomeScreen.propTypes = {\n currentView: PropTypes.func.isRequired,\n resetUnexpectedErrorModal: PropTypes.func.isRequired,\n checkAndResumeActiveOrder: PropTypes.func.isRequired,\n preventResumeOrder: PropTypes.bool.isRequired\n};\n\nconst mapStateToProps = state => ({\n preventResumeOrder: getPreventResumeOrderState(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n currentView: () => dispatch(setCurrentView(CUSTOMER_DETAILS_VIEW)),\n resetUnexpectedErrorModal: () => dispatch(toggleUnexpectedErrorModal(false)),\n checkAndResumeActiveOrder: () => dispatch(resumeOrder())\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(WelcomeScreen);\n","import { fromJS } from \"immutable\";\nimport {\n RESET_POSITION,\n GET_LOCATION_SUCCESS,\n TOGGLE_NO_TOW_TRUCKS_MODAL,\n TOGGLE_NO_LOCATION_SERVICE_MODAL,\n SET_VEHICLE_LOCATION,\n FETCHING_REVERSE_GEOCODE,\n SET_UNSAVED_SHOP_LOCATION,\n CLEAR_VEHICLE_POSITION,\n SAVE_DESTINATION_CHANGER_WITH_ALL_INFO,\n SET_POSITION_TO_SERVE\n} from \"./constants\";\nimport { SET_TOWTRUCK_LOCATION } from \"../activeOrder/constants\";\nimport {\n SET_SHOP_LOCATION,\n GET_POSITION_SUCCESS\n} from \"../createOrder/constants\";\n\nconst initialState = {\n isFetchingVehiclePosition: false,\n destinationChangerPosition: {\n latitude: \"\",\n longitude: \"\",\n city: \"\",\n zipcode: \"\",\n address: \"\"\n },\n customerPosition: {},\n vehiclePosition: {\n latitude: \"\",\n longitude: \"\",\n city: \"\",\n zipcode: \"\",\n address: \"\"\n },\n towtruckPosition: {\n latitude: \"\",\n longitude: \"\"\n },\n previousTowtruckPosition: {\n latitude: \"\",\n longitude: \"\"\n },\n positionToServe: {\n latitude: \"\",\n longitude: \"\",\n city: \"\",\n zipcode: \"\",\n address: \"\"\n },\n shopPosition: {},\n unsavedShopPosition: {},\n noTowTrucksModalState: false,\n noLocationServiceModalState: false\n};\nconst reducer = (state = fromJS(initialState), action) => {\n let newState = state;\n switch (action.type) {\n case RESET_POSITION:\n initialState.noTowTrucksModalState = state.get(\"noTowTrucksModalState\");\n return fromJS(initialState);\n case GET_POSITION_SUCCESS:\n newState = newState.set(\"customerPosition\", action.customerPosition);\n newState = newState.set(\"locationFetched\", true);\n return newState;\n case GET_LOCATION_SUCCESS:\n newState = newState.set(\"customerPosition\", action.customerPosition);\n newState = newState.set(\"locationFetched\", true);\n return newState;\n case SET_SHOP_LOCATION:\n newState = newState.set(\"shopPosition\", action.shopPosition);\n newState = newState.set(\"unsavedShopPosition\", {});\n return newState;\n case SET_UNSAVED_SHOP_LOCATION: {\n const {\n data,\n formattedAddress,\n latitude,\n longitude,\n name\n } = action.payload;\n\n let street = null;\n let streetNumber = null;\n let route = null;\n let postalTown = null;\n let postalCode = null;\n let address = null;\n\n data[0].address_components.forEach(adressComponent => {\n if (adressComponent.types.includes(\"street\")) {\n street = adressComponent.long_name;\n } else if (adressComponent.types.includes(\"street_number\")) {\n streetNumber = adressComponent.long_name;\n } else if (adressComponent.types.includes(\"route\")) {\n route = adressComponent.long_name;\n } else if (adressComponent.types.includes(\"postal_town\")) {\n postalTown = adressComponent.long_name;\n } else if (adressComponent.types.includes(\"postal_code\")) {\n postalCode = adressComponent.long_name;\n }\n });\n\n if (street) {\n address = street;\n if (streetNumber) {\n address = `${street} ${streetNumber}`;\n }\n } else if (route) {\n address = route;\n if (streetNumber) {\n address = `${route} ${streetNumber}`;\n }\n } else {\n address = formattedAddress;\n }\n\n newState = newState.set(\"unsavedShopPosition\", {\n formattedAddress,\n address,\n name,\n street,\n streetNumber,\n route,\n city: postalTown,\n zipcode: postalCode,\n latitude,\n longitude\n });\n return newState;\n }\n\n case SET_TOWTRUCK_LOCATION: {\n if (\n action.towtruckPosition.latitude &&\n action.towtruckPosition.longitude\n ) {\n newState = newState.set(\n \"previousTowtruckPosition\",\n state.get(\"towtruckPosition\")\n );\n newState = newState.set(\"towtruckPosition\", action.towtruckPosition);\n }\n return newState;\n }\n case FETCHING_REVERSE_GEOCODE:\n newState = newState.set(\"isFetchingVehiclePosition\", action.payload);\n return newState;\n case SET_VEHICLE_LOCATION:\n newState = newState.set(\"vehiclePosition\", action.payload);\n return newState;\n case TOGGLE_NO_TOW_TRUCKS_MODAL:\n newState = newState.set(\"noTowTrucksModalState\", action.payload);\n return newState;\n case TOGGLE_NO_LOCATION_SERVICE_MODAL:\n newState = newState.set(\"noLocationServiceModalState\", action.payload);\n return newState;\n case SAVE_DESTINATION_CHANGER_WITH_ALL_INFO:\n newState = newState.set(\"destinationChangerPosition\", action.payload);\n return newState;\n case SET_POSITION_TO_SERVE:\n newState = newState.set(\"positionToServe\", action.payload);\n return newState;\n case CLEAR_VEHICLE_POSITION:\n newState = newState.set(\"vehiclePosition\", {\n latitude: \"\",\n longitude: \"\",\n city: \"\",\n zipcode: \"\",\n address: \"\"\n });\n return newState;\n default:\n return newState;\n }\n};\n\nexport default { reducer };\n","import { all, call, put, takeLatest } from \"redux-saga/effects\";\nimport history from \"../../history\";\nimport { RESUME_ORDER } from \"./constants\";\nimport {\n ACTIVE_ORDER_PATH,\n CREATE_ORDER_PATH,\n SUMMARY_PATH,\n STARTED,\n ARRIVED,\n PREPARE_TRIP_TO_WORKSHOP,\n PICKEDUP,\n DROPPED,\n PENDING,\n COMPLETED\n} from \"../../constants/routeConstants\";\nimport createOrderService from \"../createOrder/service\";\nimport { CONFIRM_ORDER_VIEW } from \"../createOrder/viewConstants\";\nimport createOrderActions from \"../createOrder/actions\";\nimport activeOrderService from \"../activeOrder/service\";\nimport { getCookie } from \"../../helpers/cookieHelper\";\nimport activeOrderActions from \"../activeOrder/actions\";\nimport logErrorHelper from \"../../helpers/logErrorHelper\";\n\nconst { setOrderStatus, getEstimatedArrivalTimeSuccess } = activeOrderActions;\nconst { getEta } = activeOrderService;\nconst { getLatestOrder } = createOrderService;\nconst { setCurrentView } = createOrderActions;\n\nconst ONGOING_STATUSES = [\n STARTED,\n ARRIVED,\n PREPARE_TRIP_TO_WORKSHOP,\n PICKEDUP,\n DROPPED\n];\n\nfunction* resumeOrderWorker() {\n try {\n const token = yield call(getCookie, \"token\");\n if (token) {\n const { data } = yield call(getLatestOrder);\n if (data) {\n if (data.status === PENDING) {\n const eta = yield call(getEta, data.id);\n yield all([\n put(setOrderStatus(data)),\n put(getEstimatedArrivalTimeSuccess(eta)),\n put(setCurrentView(CONFIRM_ORDER_VIEW))\n ]);\n history.push(`${CREATE_ORDER_PATH}?id=${data.id}`);\n } else if (ONGOING_STATUSES.includes(data.status)) {\n yield put(setOrderStatus(data));\n history.push(`${ACTIVE_ORDER_PATH}?id=${data.id}`);\n } else if (data.status === COMPLETED) {\n yield put(setOrderStatus(data));\n history.push(`${SUMMARY_PATH}?id=${data.id}`);\n }\n }\n }\n } catch (error) {\n logErrorHelper(error);\n }\n}\nfunction* resumeOrderWatcher() {\n yield takeLatest(RESUME_ORDER, resumeOrderWorker);\n}\n\nexport default { resumeOrderWatcher };\n\n/* WIP - Use this with new function to resumeOrder depending on mission */\n","import { combineReducers } from \"redux\";\nimport { reducer as form } from \"redux-form\";\nimport { reducer as loadingReducer } from \"./features/loading\";\nimport { reducer as welcomeReducer } from \"./features/welcomeScreen\";\nimport { reducer as createOrderReducer } from \"./features/createOrder\";\nimport { reducer as activeOrderReducer } from \"./features/activeOrder\";\nimport { reducer as summaryReducer } from \"./features/summary\";\nimport { reducer as carPositionPickerReducer } from \"./features/carPositionPicker\";\nimport { reducer as dispatchPositionReducer } from \"./features/dispatchPosition\";\n\nconst rootReducer = combineReducers({\n form,\n loading: loadingReducer.reducer,\n position: welcomeReducer.reducer,\n createOrder: createOrderReducer.reducer,\n activeOrder: activeOrderReducer.reducer,\n summary: summaryReducer.reducer,\n carPositionPicker: carPositionPickerReducer.reducer,\n dispatchPosition: dispatchPositionReducer.reducer\n});\n\nexport default rootReducer;\n","import { call, select, takeLatest } from \"redux-saga/effects\";\nimport { getFormValues } from \"redux-form\";\nimport activeOrderSelector from \"../../activeOrder/selectors\";\nimport selector from \"../selectors\";\nimport service from \"./legacyApi\";\nimport logErrorHelper from \"../../../helpers/logErrorHelper\";\nimport { LEGACY_SUMMARY_SUBMITTED } from \"../constants\";\n\nconst { getOrder } = activeOrderSelector;\nconst { getRating } = selector;\nconst { postOpinion } = service;\n\nfunction* legacySubmitSummaryWorker() {\n try {\n const order = yield select(getOrder);\n const opinionFormValue = yield select(getFormValues(\"receiptForm\"));\n const rating = yield select(getRating);\n let summaryBody;\n if (opinionFormValue.message) {\n summaryBody = {\n request_id: order.id,\n rating,\n comment: opinionFormValue.message\n };\n } else {\n summaryBody = {\n request_id: order.id,\n rating\n };\n }\n yield call(postOpinion, summaryBody);\n } catch (error) {\n logErrorHelper(error);\n }\n}\n\nfunction* legacySummarySagaWatcher() {\n yield takeLatest(LEGACY_SUMMARY_SUBMITTED, legacySubmitSummaryWorker);\n}\n\nexport default { legacySummarySagaWatcher };\n","import { all } from \"redux-saga/effects\";\nimport { sagas as welcomeSaga } from \"./features/welcomeScreen\";\nimport { sagas as createOrderSaga } from \"./features/createOrder\";\nimport { sagas as activeOrderSaga } from \"./features/activeOrder\";\nimport { sagas as summarySaga } from \"./features/summary\";\nimport { sagas as dispatchPositionSaga } from \"./features/dispatchPosition\";\nimport { sagas as legacySummarySaga } from \"./features/summary/LegacyReciept\";\n\nfunction* rootSaga() {\n yield all([\n welcomeSaga.resumeOrderWatcher(),\n createOrderSaga.fetchTokenWatcher(),\n createOrderSaga.getPositionWatcher(),\n createOrderSaga.createOrderWatcher(),\n createOrderSaga.estimatePriceWatcher(),\n createOrderSaga.estimatePriceDestinationWatcher(),\n createOrderSaga.fetchFinalPriceWatcher(),\n createOrderSaga.listenForDriverWatcher(),\n createOrderSaga.loginWatcher(),\n createOrderSaga.denyWatcher(),\n createOrderSaga.valuesChangedWatcher(),\n createOrderSaga.submitCustomerDetailsWatcher(),\n createOrderSaga.submitCreateOrderFormWatcher(),\n createOrderSaga.getVehicleWatcher(),\n createOrderSaga.fetchPersonWatcher(),\n createOrderSaga.saveCenterCoordsWatcher(),\n createOrderSaga.fetchDispatchWatcher(),\n createOrderSaga.hasPreviousVehiclePositionChangedWatcher(),\n createOrderSaga.fetchCurrentDamageReasonsWatcher(),\n createOrderSaga.fetchConfinedSpaceAttributesWatcher(),\n createOrderSaga.fetchPaymentOptionsWatcher(),\n createOrderSaga.fetchVehicleInsuranceLevelsWatcher(),\n activeOrderSaga.findCurrentViewWatcher(),\n activeOrderSaga.cancelOrderWatcher(),\n activeOrderSaga.towTruckPositionWatcher(),\n activeOrderSaga.getEstimatedArrivalTimeWatcher(),\n activeOrderSaga.fetchGatMissionWatcher(),\n summarySaga.summarySagaWatcher(),\n legacySummarySaga.legacySummarySagaWatcher(),\n summarySaga.registerEmailSagaWatcher(),\n dispatchPositionSaga.getPositionWatcher(),\n dispatchPositionSaga.saveCenterCoordsWatcher(),\n dispatchPositionSaga.updateOrderPositionWatcher(),\n dispatchPositionSaga.saveDestinationChangerWatcher()\n ]);\n}\n\nexport default rootSaga;\n","import { Iterable } from \"immutable\";\nimport { applyMiddleware, compose, createStore } from \"redux\";\n// eslint-disable-next-line\nimport { createLogger } from \"redux-logger\";\nimport createSagaMiddleware from \"redux-saga\";\nimport rootReducer from \"./root-reducer\";\nimport rootSaga from \"./root-saga\";\n\nconst sagaMiddleware = createSagaMiddleware();\n\nconst loggerMiddleware = createLogger({\n stateTransformer: state => {\n const newState = {};\n // eslint-disable-next-line\n for (let i of Object.keys(state)) {\n if (Iterable.isIterable(state[i])) {\n newState[i] = state[i].toJS();\n } else {\n newState[i] = state[i];\n }\n }\n return newState;\n }\n});\n\nlet composeEnhancers = compose;\nif (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line\n composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n}\n\n// eslint-disable-next-line\nexport const store = createStore(\n rootReducer,\n composeEnhancers(\n process.env.NODE_ENV === \"development\"\n ? applyMiddleware(loggerMiddleware, sagaMiddleware)\n : applyMiddleware(sagaMiddleware)\n )\n);\n\nsagaMiddleware.run(rootSaga);\n","function parseJSON(value) {\n try {\n return value === \"undefined\" ? undefined : JSON.parse(value ?? \"\");\n } catch {\n return undefined;\n }\n}\n\nexport const getSession = key => {\n return parseJSON(sessionStorage.getItem(key));\n};\n\nexport const deleteSession = key => {\n sessionStorage.removeItem(key);\n};\n\nexport const setSession = (key, value) => {\n sessionStorage.setItem(key, JSON.stringify(value));\n};\n\nexport const SESSION_KEYS = {\n organizationHeaderName: \"gat-organization-header-name\",\n gatOrganizationUnit: \"gat-organization-unit\",\n locale: \"gat-locale\",\n companyAttributes: \"gat-company-attributes\",\n accessToken: \"gat-access-token\",\n missionId: \"gat-mission-id\",\n token: \"gat-token\",\n appId: \"gat-application-id\"\n};\n","import \"react-app-polyfill/ie11\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Provider } from \"react-redux\";\nimport { Router } from \"react-router-dom\";\nimport { ThemeProvider, defaultTheme } from \"@assistansbolaget/gat-components\";\nimport { RawIntlProvider } from \"react-intl\";\nimport App from \"./App\";\nimport { store } from \"./store\";\nimport history from \"./history\";\nimport \"./assets/fonts/DINPro/style.css\";\nimport \"./assets/fonts/OverpassLight/style.css\";\nimport \"./App.css\";\nimport { useTranslations } from \"./language/useTranslations\";\n\n/* eslint-disable */\nif (!global._babelPolyfill) {\n require(\"babel-polyfill\");\n}\n\nfunction AppWrapper() {\n\n const currentMessagesForRescue = useTranslations();\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n\nReactDOM.render(, document.getElementById(\"root\"));\n","import styled from \"styled-components\";\nimport { Card } from \"@assistansbolaget/gat-components\";\n\nconst CardBoxContainerTest = styled(Card)`\n display: flex;\n flex-direction: column;\n width: 310px;\n color: #ffffff;\n padding: 24px;\n &.card-box {\n &.card-box-dark {\n padding: 10px 8px;\n height: 0px;\n width: 310px;\n z-index: 10;\n box-sizing: border-box;\n pointer-events: all;\n box-shadow: 2px 3px 8px 0 rgba(0, 0, 0, 0.5);\n }\n &.card-box-height {\n height: unset;\n }\n }\n`;\n\nexport default CardBoxContainerTest;\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\nimport \"./style.css\";\nimport CardBoxContainerTest from \"./CardBoxContainer.style\";\n\nconst CardBoxContainer = ({ children, setDarkStyle, id }) => {\n // const [isOpen, setIsOpen] = useState(true);\n const isOpen = true;\n\n return (\n <>\n \n {children}\n \n \n );\n};\n\nCardBoxContainer.defaultProps = {\n setDarkStyle: false,\n id: \"\"\n};\n\nCardBoxContainer.propTypes = {\n setDarkStyle: PropTypes.bool,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired,\n id: PropTypes.string\n};\n\nexport default CardBoxContainer;\n","export const GET_POSITION_DISPATCH = \"GET_POSITION_DISPATCH\";\nexport const GET_POSITION_FAILURE = \"GET_POSITION_FAILURE\";\nexport const SAVE_CENTER_COORDS = \"SAVE_CENTER_COORDS\";\nexport const TOGGLE_DISPATCH_POSITION_ERROR_MODAL =\n \"TOGGLE_DISPATCH_POSITION_ERROR_MODAL\";\nexport const SHOW_DISPATCH_MAP = \"SHOW_DISPATCH_MAP\";\nexport const SAVE_DISPATCH_MAP_TO_STATE = \"SAVE_DISPATCH_MAP_TO_STATE\";\nexport const SAVE_DISPATCH_CENTER_COORDS = \"SAVE_DISPATCH_CENTER_COORDS\";\nexport const UPDATE_ORDER_POSITION = \"UPDATE_ORDER_POSITION\";\nexport const TOGGLE_DISPATCH_POSITION_SUCCESS_MODAL =\n \"TOGGLE_DISPATCH_POSITION_SUCCESS_MODAL\";\nexport const SET_SEARCH_PLACES_RESULT = \"SET_SEARCH_PLACES_RESULT\";\nexport const TOGGLE_LOCATION_BLOCKED_MODAL = \"TOGGLE_LOCATION_BLOCKED_MODAL\";\n\nexport const SAVE_DESTINATION_CHANGER = \"SAVE_DESTINATION_CHANGER\";\n","export default function logErrorHelper(error) {\n if (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line no-console\n return console.log(error);\n }\n return null;\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Button } from \"@assistansbolaget/gat-components\";\n\nimport \"./style.css\";\n\nconst Modal = ({\n title,\n bodyText,\n primaryModalButtonAction,\n primaryModalButtonText,\n bodyText2,\n secondaryModalButtonText,\n secondaryModalButtonAction,\n children,\n windowReload,\n windowReloadAction\n}) => (\n
\n
\n
\n
\n {title &&

{title.toUpperCase()}

}\n
\n {bodyText &&

{bodyText}

}\n {bodyText2 &&

{bodyText2}

}\n
\n\n {children}\n\n
\n {secondaryModalButtonText && (\n \n {secondaryModalButtonText}\n \n )}\n {primaryModalButtonText && (\n \n )}\n {windowReload && (\n \n )}\n
\n
\n
\n
\n);\n\nModal.defaultProps = {\n title: null,\n bodyText: null,\n bodyText2: null,\n primaryModalButtonAction: null,\n primaryModalButtonText: null,\n secondaryModalButtonText: null,\n secondaryModalButtonAction: null,\n windowReload: null,\n windowReloadAction: null\n};\n\nModal.propTypes = {\n title: PropTypes.string,\n bodyText: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n bodyText2: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n primaryModalButtonAction: PropTypes.func,\n primaryModalButtonText: PropTypes.string,\n windowReload: PropTypes.string,\n windowReloadAction: PropTypes.func,\n secondaryModalButtonAction: PropTypes.func,\n secondaryModalButtonText: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired\n};\n\nexport default Modal;\n","import {\n POST,\n SET_SOURCE_LOCATION,\n BaseUrl,\n GET_DAMAGE_REASONS,\n IS_CONFINED_SPACE,\n GET_PAYMENT_OPTIONS,\n GET_VEHICLE_INSURANCE_LEVELS\n} from \"../../constants/apiConstants\";\nimport { getSession, SESSION_KEYS } from \"../../helpers/sessionStore\";\nimport api from \"../../helpers/apiUtils\";\n\nconst getLocation = () => {\n const { geolocation } = navigator;\n\n return new Promise((resolve, reject) => {\n if (!geolocation) {\n reject(new Error(\"Not Supported\"));\n }\n geolocation.getCurrentPosition(\n position => {\n resolve(position);\n },\n () => {\n reject(new Error(\"Could not get geolocation\"));\n }\n );\n });\n};\n\nconst reverseGeoCode = async vehiclePos => {\n const { lat, lng } = vehiclePos;\n const url = `https://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&key=AIzaSyCM3Er5wltGE45H78BW1z__41onnf_xl-0`;\n const response = await fetch(url);\n const data = await response.json();\n\n const addressComponents = data.results[0].address_components;\n const values = {};\n let fallbackPostalCode;\n let fallbackPostalTown;\n\n for (let i = 0; i < addressComponents.length; i++) {\n const component = addressComponents[i];\n const type = component.types[0];\n const value = component.long_name;\n\n switch (type) {\n case \"route\" || \"street_address\":\n values.street = value;\n break;\n case \"street_number\" || \"premise\":\n values.streetNumber = value;\n break;\n case \"postal_code\":\n values.postalCode = value;\n fallbackPostalCode = value;\n break;\n case \"locality\" || \"city\":\n values.town = value;\n break;\n case \"postal_town\":\n values.town = value;\n fallbackPostalTown = value;\n break;\n case \"country\":\n values.country = value;\n break;\n default:\n break;\n }\n }\n\n let positionStreet = \"\";\n let formattedAddress = data.results[0].formatted_address;\n if (values.streetNumber) {\n positionStreet = `${values.street} ${values.streetNumber}`;\n } else {\n positionStreet = values.street;\n }\n const zipcode = values.postalCode || fallbackPostalCode || \"\";\n const town = values.town || fallbackPostalTown || \"\";\n\n if (!values.street) {\n formattedAddress = `${lat} ${lng}`;\n }\n\n return {\n address: positionStreet,\n zipcode,\n town,\n formatted_address: formattedAddress\n };\n};\n\nconst updateCustomerPosition = data => {\n const locale = getSession(SESSION_KEYS.locale);\n const appId = getSession(SESSION_KEYS.appId);\n const { positionToServe, token } = data;\n const { address, city, zipCode, lat, lng } = positionToServe;\n return fetch(\n `${api.getBaseUrl(BaseUrl.GatUrl)}${SET_SOURCE_LOCATION}?token=${token}`,\n {\n method: POST,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n \"gat-locale\": locale,\n \"gat-application-id\": appId\n },\n body: JSON.stringify({\n token,\n address,\n city,\n zipCode,\n latitude: lat,\n longitude: lng\n })\n }\n )\n .then(res => {\n if (res.status > 299) {\n return res.status;\n }\n return res;\n })\n .catch(err => {\n throw err;\n });\n};\n\nconst getDamageReasons = () => {\n const gatOrgUnit = getSession(SESSION_KEYS.gatOrganizationUnit);\n const gatLocale = getSession(SESSION_KEYS.locale);\n const accessToken = getSession(SESSION_KEYS.accessToken);\n const appId = getSession(SESSION_KEYS.appId);\n return api\n .get(`${GET_DAMAGE_REASONS}`, BaseUrl.GatUrl, {\n gatOrgUnit,\n gatLocale,\n accessToken,\n appId\n })\n .then(res => {\n if (res.exception) {\n throw res.message;\n }\n return res;\n })\n .catch(err => {\n throw err;\n });\n};\n\nconst getAttributeConfinedSpace = () => {\n const gatOrgUnit = getSession(SESSION_KEYS.gatOrganizationUnit);\n const gatLocale = getSession(SESSION_KEYS.locale);\n const accessToken = getSession(SESSION_KEYS.accessToken);\n const appId = getSession(SESSION_KEYS.appId);\n return api\n .get(`${IS_CONFINED_SPACE}`, BaseUrl.GatUrl, {\n gatOrgUnit,\n gatLocale,\n accessToken,\n appId\n })\n .then(res => {\n if (res.exception) {\n throw res.message;\n }\n return res;\n })\n .catch(err => {\n throw err;\n });\n};\n\nconst getVehicleInsuranceLevels = () => {\n const gatOrgUnit = getSession(SESSION_KEYS.gatOrganizationUnit);\n const gatLocale = getSession(SESSION_KEYS.locale);\n const accessToken = getSession(SESSION_KEYS.accessToken);\n const appId = getSession(SESSION_KEYS.appId);\n return api\n .get(`${GET_VEHICLE_INSURANCE_LEVELS}`, BaseUrl.GatUrl, {\n gatOrgUnit,\n gatLocale,\n accessToken,\n appId\n })\n .then(res => {\n if (res.exception) {\n throw res.message;\n }\n return res;\n })\n .catch(err => {\n throw err;\n });\n};\n\nconst getPaymentOptions = () => {\n const gatOrgUnit = getSession(SESSION_KEYS.gatOrganizationUnit);\n const gatLocale = getSession(SESSION_KEYS.locale);\n const accessToken = getSession(SESSION_KEYS.accessToken);\n const missionId = getSession(SESSION_KEYS.missionId);\n const appId = getSession(SESSION_KEYS.appId);\n return api\n .get(`${GET_PAYMENT_OPTIONS}=${missionId}`, BaseUrl.GatUrl, {\n gatOrgUnit,\n gatLocale,\n accessToken,\n appId\n })\n .then(res => {\n if (res.exception) {\n throw res.message;\n }\n return res;\n })\n .catch(err => {\n throw err;\n });\n};\n\nexport default {\n getLocation,\n updateCustomerPosition,\n getInsuranceLevelsForOrgUnit: getDamageReasons,\n getAttributeConfinedSpace,\n getPaymentOptions,\n reverseGeoCode,\n getVehicleInsuranceLevels\n};\n","export const CREATE_ORDER_FORM_SUBMITTED = \"CREATE_ORDER_FORM_SUBMITTED\";\nexport const CUSTOMER_DETAILS_FORM_SUBMITTED =\n \"CUSTOMER_DETAILS_FORM_SUBMITTED\";\nexport const CREATE_ORDER = \"CREATE_ORDER\";\nexport const DECREMENT_STEP = \"DECREMENT_STEP\";\nexport const DENY_HELP = \"DENY_HELP\";\nexport const ERROR_VEHICLE_NOT_FOUND = \"ERROR_VEHICLE_NOT_FOUND\";\nexport const SET_NO_ESTIMATE_REASON = \"SET_NO_ESTIMATE_REASON\";\nexport const ESTIMATE_PRICE_DESTINATION = \"ESTIMATE_PRICE_DESTINATION\";\nexport const ESTIMATE_PRICE = \"ESTIMATE_PRICE\";\nexport const FETCH_DISPATCH = \"FETCH_DISPATCH\";\nexport const FETCH_ESTIMATE_SUCCESS = \"FETCH_ESTIMATE_SUCCESS\";\nexport const FETCH_ESTIMATE = \"FETCH_ESTIMATE\";\nexport const FETCH_FINAL_PRICE_FAILURE = \"FETCH_FINAL_PRICE_FAILURE\";\nexport const FETCH_FINAL_PRICE_SUCCESS = \"FETCH_FINAL_PRICE_SUCCESS\";\nexport const FETCH_FINAL_PRICE = \"FETCH_FINAL_PRICE\";\nexport const FETCH_PERSON = \"FETCH_PERSON\";\nexport const FETCH_VEHICLE_FAILURE = \"FETCH_VEHICLE_FAILURE\";\nexport const FETCH_VEHICLE_SUCCESS = \"FETCH_VEHICLE_SUCCESS\";\nexport const FETCH_VEHICLE = \"FETCH_VEHICLE\";\nexport const FETCHING_PERSON = \"FETCHING_PERSON\";\nexport const FETCHING_VEHICLE = \"FETCHING_VEHICLE\";\nexport const GET_PERSON_DETAILS_FAILURE = \"GET_PERSON_DETAILS_FAILURE\";\nexport const FETCHING_PERSON_SUCCESS = \"FETCHING_PERSON_SUCCESS\";\nexport const GET_POSITION_FAILURE = \"GET_POSITION_FAILURE\";\nexport const GET_POSITION_SUCCESS = \"GET_POSITION_SUCCESS\";\nexport const GET_POSITION = \"GET_POSITION\";\nexport const GET_VEHICLE_DETAILS_FAILURE = \"GET_VEHICLE_DETAILS_FAILURE\";\nexport const GET_VEHICLE_DETAILS_SUCCESS = \"GET_VEHICLE_DETAILS_SUCCESS\";\nexport const GET_VEHICLE_DETAILS = \"GET_VEHICLE_DETAILS\";\nexport const GO_BACK = \"GO_BACK\";\nexport const GO_FORWARD = \"GO_FORWARD\";\nexport const INCREASE_STEP = \"INCREASE_STEP\";\nexport const LISTEN_FOR_DRIVER_FAILURE = \"LISTEN_FOR_DRIVER_FAILURE\";\nexport const LISTEN_FOR_DRIVER = \"LISTEN_FOR_DRIVER\";\nexport const LOGIN_FAILURE = \"LOGIN_FAILURE\";\nexport const LOGIN = \"LOGIN\";\nexport const PERSON_NOT_FOUND = \"PERSON_NOT_FOUND\";\nexport const SET_CURRENT_VIEW = \"SET_CURRENT_VIEW\";\nexport const SET_NEXT_VIEW = \"SET_NEXT_VIEW\";\nexport const SET_PREVIOUS_PRICE = \"SET_PREVIOUS_PRICE\";\nexport const SET_MODAL_VIEW = \"SET_MODAL_VIEW\";\nexport const MODAL_GO_BACK = \"MODAL_GO_BACK\";\nexport const SET_PREVIOUS_VIEW = \"SET_PREVIOUS_VIEW\";\nexport const SET_SEARCH_PLACES_RESULT = \"SET_SEARCH_PLACES_RESULT\";\nexport const SET_SHOP_LOCATION = \"SET_SHOP_LOCATION\";\nexport const SET_SHOW_PREVIOUS_PRICE = \"SET_SHOW_PREVIOUS_PRICE\";\nexport const SET_STEP = \"SET_STEP\";\nexport const START_FETCH_FINAL_PRICE = \"START_FETCH_FINAL_PRICE\";\nexport const TOGGLE_ALREADY_STARTED_ERROR_MODAL =\n \"TOGGLE_ALREADY_STARTED_ERROR_MODAL\";\nexport const TOGGLE_DISPATCH_WILL_CALL_MODAL =\n \"TOGGLE_DISPATCH_WILL_CALL_MODAL\";\nexport const TOGGLE_ESTIMATE_DESTINATION = \"TOGGLE_ESTIMATE_DESTINATION\";\nexport const TOGGLE_NO_CONFIRMATION_MODAL = \"TOGGLE_NO_CONFIRMATION_MODAL\";\nexport const TOGGLE_ORDER_CANCELLED_BY_DISPATCH_MODAL =\n \"TOGGLE_ORDER_CANCELLED_BY_DISPATCH_MODAL\";\nexport const TOGGLE_UNEXPECTED_ERROR_MODAL = \"TOGGLE_UNEXPECTED_ERROR_MODAL\";\nexport const VALUES_CHANGED = \"VALUES_CHANGED\";\nexport const CHECK_PREVIOUS_VEHICLE_POSITION =\n \"CHECK_PREVIOUS_VEHICLE_POSITION\";\nexport const SET_HAS_PREVIOUS_VEHICLE_POSITION_CHANGED =\n \"SET_HAS_PREVIOUS_VEHICLE_POSITION_CHANGED\";\nexport const FETCH_ESTIMATE_SUCCESS_COORDS = \"FETCH_ESTIMATE_SUCCESS_COORDS\";\nexport const SET_TOGGLE_ESTIMATE_DESTINATION_VALUE =\n \"SET_TOGGLE_ESTIMATE_DESTINATION_VALUE\";\nexport const FETCH_TOKEN = \"FETCH_TOKEN\";\nexport const CANCEL_LISTEN_FOR_DRIVER = \"CANCEL_LISTEN_FOR_DRIVER\";\n\nexport const TOO_HEAVY = \"Vehicle too heavy for assistance\";\n\nexport const FETCH_DAMAGE_REASONS = \"FETCH_DAMAGE_REASONS\";\nexport const FETCH_DAMAGE_REASONS_SUCCESS = \"FETCH_DAMAGE_REASONS_SUCCESS\";\nexport const FETCH_DAMAGE_REASONS_FAILURE = \"FETCH_DAMAGE_REASONS_FAILURE\";\n\nexport const FETCH_CONFINED_SPACE_ATTRIBUTES =\n \"FETCH_CONFINED_SPACE_ATTRIBUTES\";\nexport const FETCH_CONFINED_SPACE_ATTRIBUTES_SUCCESS =\n \"FETCH_CONFINED_SPACE_ATTRIBUTES_SUCCESS\";\nexport const FETCH_CONFINED_SPACE_ATTRIBUTES_FAILURE =\n \"FETCH_CONFINED_SPACE_ATTRIBUTES_FAILURE\";\n\nexport const FETCH_PAYMENT_OPTIONS = \"FETCH_PAYMENT_OPTIONS\";\nexport const FETCH_PAYMENT_OPTIONS_SUCCESS = \"FETCH_PAYMENT_OPTIONS_SUCCESS\";\nexport const FETCH_PAYMENT_OPTIONS_FAILURE = \"FETCH_PAYMENT_OPTIONS_FAILURE\";\n\nexport const SAVE_SELF_SERVE_MISSION_SUCCESS =\n \"SAVE_SELF_SERVE_MISSION_SUCCESS\";\n\nexport const FETCH_VEHICLE_INSURANCE_LEVELS = \"FETCH_VEHICLE_INSURANCE_LEVELS\";\nexport const FETCH_VEHICLE_INSURANCE_LEVELS_SUCCESS =\n \"FETCH_VEHICLE_INSURANCE_LEVELS_SUCCESS\";\nexport const FETCH_VEHICLE_INSURANCE_LEVELS_FAILURE =\n \"FETCH_VEHICLE_INSURANCE_LEVELS_FAILURE\";\n\nexport const ACCEPT_COOKIE_VALUE = \"ACCEPT_COOKIE_VALUE\";\n","import {\n GET_POSITION_DISPATCH,\n SAVE_DISPATCH_MAP_TO_STATE,\n SAVE_DISPATCH_CENTER_COORDS,\n UPDATE_ORDER_POSITION,\n TOGGLE_DISPATCH_POSITION_ERROR_MODAL,\n TOGGLE_DISPATCH_POSITION_SUCCESS_MODAL,\n SHOW_DISPATCH_MAP,\n TOGGLE_LOCATION_BLOCKED_MODAL,\n SAVE_DESTINATION_CHANGER\n} from \"./constants\";\n\nconst getPosition = () => ({\n type: GET_POSITION_DISPATCH\n});\n\nconst toggleCarLocalizationErrorModal = bool => ({\n type: TOGGLE_DISPATCH_POSITION_ERROR_MODAL,\n payload: bool\n});\n\nconst saveMapToState = map => ({\n type: SAVE_DISPATCH_MAP_TO_STATE,\n payload: map\n});\n\nconst saveCenterCoords = centerCoords => ({\n type: SAVE_DISPATCH_CENTER_COORDS,\n payload: centerCoords\n});\n\nconst saveCenterDestinationCoords = centerCoords => ({\n type: SAVE_DESTINATION_CHANGER,\n payload: centerCoords\n});\n\nconst updateOrderPosition = () => ({\n type: UPDATE_ORDER_POSITION\n});\n\nconst toggleDispatchPositionSuccessModal = boolean => ({\n type: TOGGLE_DISPATCH_POSITION_SUCCESS_MODAL,\n payload: boolean\n});\n\nconst showDispatchMap = bool => ({\n type: SHOW_DISPATCH_MAP,\n payload: bool\n});\n\nconst toggleLocationBlockedModal = bool => ({\n type: TOGGLE_LOCATION_BLOCKED_MODAL,\n payload: bool\n});\n\nexport default {\n getPosition,\n toggleCarLocalizationErrorModal,\n saveMapToState,\n saveCenterCoords,\n updateOrderPosition,\n toggleDispatchPositionSuccessModal,\n showDispatchMap,\n toggleLocationBlockedModal,\n saveCenterDestinationCoords\n};\n","import {\n GET_LOCATION,\n RESET_POSITION,\n TOGGLE_NO_TOW_TRUCKS_MODAL,\n TOGGLE_NO_LOCATION_SERVICE_MODAL,\n RESUME_ORDER,\n SET_UNSAVED_SHOP_LOCATION,\n SET_VEHICLE_LOCATION,\n FETCHING_REVERSE_GEOCODE,\n CLEAR_VEHICLE_POSITION,\n SAVE_DESTINATION_PLACE,\n SAVE_DESTINATION_CHANGER_WITH_ALL_INFO,\n SET_POSITION_TO_SERVE\n} from \"./constants\";\n\nconst getLocation = () => ({\n type: GET_LOCATION\n});\n\nconst resumeOrder = () => ({\n type: RESUME_ORDER\n});\n\nconst resetPosition = () => ({\n type: RESET_POSITION\n});\nconst toggleNoTowTrucksModal = bool => ({\n type: TOGGLE_NO_TOW_TRUCKS_MODAL,\n payload: bool\n});\n\nconst toggleNoLocationServiceModal = bool => ({\n type: TOGGLE_NO_LOCATION_SERVICE_MODAL,\n payload: bool\n});\n\nconst handleUnsavedShopPosition = position => ({\n type: SET_UNSAVED_SHOP_LOCATION,\n payload: position\n});\n\nconst setVehicleLocation = vehiclePosition => ({\n type: SET_VEHICLE_LOCATION,\n payload: vehiclePosition\n});\n\nconst setDestinationChangePlace = vehiclePosition => ({\n type: SAVE_DESTINATION_PLACE,\n payload: vehiclePosition\n});\n\nconst fetchingReverseGeocode = boolean => ({\n type: FETCHING_REVERSE_GEOCODE,\n payload: boolean\n});\n\nconst clearVehiclePosition = () => ({\n type: CLEAR_VEHICLE_POSITION\n});\n\nconst setDestinationToState = destination => ({\n type: SAVE_DESTINATION_CHANGER_WITH_ALL_INFO,\n payload: destination\n});\n\nconst setPositionToServe = position => ({\n type: SET_POSITION_TO_SERVE,\n payload: position\n});\n\nexport default {\n getLocation,\n resetPosition,\n toggleNoTowTrucksModal,\n toggleNoLocationServiceModal,\n resumeOrder,\n handleUnsavedShopPosition,\n setVehicleLocation,\n fetchingReverseGeocode,\n clearVehiclePosition,\n setDestinationChangePlace,\n setDestinationToState,\n setPositionToServe\n};\n","const getLoadingState = ({ summary }) => summary.get(\"loading\");\n\nconst getShowOpinion = ({ summary }) => summary.get(\"showOpinion\");\n\nconst getRating = ({ summary }) => summary.get(\"rating\");\n\nconst getSummarySuccessModalState = ({ summary }) => {\n return summary.get(\"summarySuccessModalState\");\n};\n\nconst getSummaryFailureModalState = ({ summary }) => {\n return summary.get(\"summaryFailureModalState\");\n};\n\nconst getReceiptFailureModalState = ({ summary }) => {\n return summary.get(\"receiptFailureModalState\");\n};\n\nconst getReceiptSuccessState = ({ summary }) => {\n return summary.get(\"receiptSuccessState\");\n};\n\nconst getReceiptLoadingState = ({ summary }) => {\n return summary.get(\"receiptLoading\");\n};\n\nexport default {\n getLoadingState,\n getShowOpinion,\n getRating,\n getSummarySuccessModalState,\n getSummaryFailureModalState,\n getReceiptFailureModalState,\n getReceiptSuccessState,\n getReceiptLoadingState,\n};\n"],"sourceRoot":""}