{"version":3,"sources":["api/cart.js","screens/SingpassManualForm/elements/FormInput/FormInput.module.scss","containers/App/components/LoginModal/elements/ForgotForm/ForgotForm.module.scss","containers/App/components/InvoiceModal/InvoiceModal.module.scss","assets/images/general/back-icon.png","api/auth.js","containers/App/components/LoginModal/elements/LoginOTPForm/LoginOTPForm.module.scss","redux/reducers/common.js","screens/SingpassManualForm/elements/FormHeader/FormHeader.module.scss","components/AfterTradeIn/AfterTradeIn.module.scss","assets/images/general/close.svg","assets/images/general/eye.svg","assets/images/general/eye-off.svg","components/StickyBottom/StickyBottom.js","layouts/CartLayout/AdditionalPromo/AdditionalPromo.module.scss","screens/SingpassManualForm/elements/FormMessage/FormMessage.module.scss","containers/App/components/LoginModal/elements/LoginOTPForm/LoginOTPForm.js","screens/Profile/components/SupportingDocuments/SupportingDocuments.js","containers/Checkout/CheckoutStart.js","containers/Checkout/CheckoutContainer.js","assets/images/upload-icon.png","screens/Product/elements/TradeIn/TradeInExplanation.module.scss","containers/App/components/Loading/CustomLinearProgress.js","assets/images/RetrieveMyInfo.svg","assets/images/danger-sign.png","components/SingpassExpired/SingpassExpired.module.scss","containers/App/components/InputPhone/index.js","components/FullscreenLoader/FullscreenLoader.js","webpack:///./src/assets/images/general/close.svg?5d78","components/AfterTradeIn/AfterTradeIn.js","containers/App/components/LoginModal/elements/LoginForm/LoginForm.js","containers/App/components/LoginModal/elements/SignUpForm/SignUpForm.js","containers/App/components/NumberInput/NumberInput.js","containers/App/components/LoginModal/elements/ResetPassword/ResetPassword.js","assets/images/general/singpass-logo.png","screens/SingpassManualForm/elements/FormFooter/FormFooter.module.scss","containers/App/components/LoginModal/LoginModal.module.scss","config/constants.js","containers/App/components/LoginModal/elements/OTPForm/OTPForm.js","containers/App/components/Button/Button.js","assets/images/noImg.png","redux/reducers/payment.js","api/trade_in.js","assets/images/general/ic-warning-outline-black.svg","api/order.js","assets/images/general/first-payment.svg","assets/images/general/fraud-protection.svg","assets/images/general/resale-restriction.svg","assets/images/checkbox-unselected.png","assets/images/checkbox-selected.png","layouts/CartLayout/CheckoutPaymentInfo/CheckoutPaymentInfo.js","assets/images/general/discount-coupon.svg","layouts/CartLayout/AdditionalPromo/AdditionalPromo.js","layouts/CartLayout/ToProceed/ToProceed.js","layouts/CartLayout/CustomStepIcon/CustomStepIcon.js","containers/SingpassResult/SingpassErrorModal.js","layouts/CartLayout/CartLayout.js","assets/images/stickyUpDownIcon.png","api/products.js","assets/images/general/logo.svg","containers/App/components/LoginModal/elements/ForgotForm/ForgotForm.js","containers/App/components/LoginModal/elements/OTPForm/AuthOTPForm.js","assets/images/general/facebook_icon.svg","containers/App/components/InitialLoginForm/InitialLoginForm.js","assets/images/general/google_icon.png","containers/App/components/AuthForm/AuthForm.js","components/ElfsightWidget/ElfsightWidget.js","api/elfsight.js","screens/Product/elements/TradeIn/TradeInExplanationModal.js","assets/images/Info Icon.png","api/user.js","assets/images/general/parallel-arrows.svg","assets/images/general/trash.svg","screens/SingPass/SingPassScreen.js","screens/Profile/components/MyInformation/Form/Form.js","screens/Profile/components/SingPassVerification/SingPassVerification.js","components/SingpassExpired/SingpassExpired.js","api/authorize.js","screens/SingpassManualForm/elements/FormMessage/index.js","containers/App/components/InvoiceModal/InvoiceModal.js","containers/App/components/Header/Autocomplete.js","assets/images/search-normal.png","components/Search/Search.js","containers/App/components/Loading/CustomLinearProgress.module.scss","containers/SingpassResult/SingpassResultContainer.js","redux/reducers/auth.js","screens/SingpassManualForm/elements/title/title.module.scss","screens/SingpassManualForm/elements/forms/Form.module.scss","screens/SingpassManualForm/elements/title/index.js","screens/SingpassManualForm/elements/FormHeader/FormHeader.js","assets/images/general/exclamation.svg","screens/SingpassManualForm/elements/FormInput/index.js","assets/images/general/uploadedFile.svg","assets/images/general/pinkDelete.svg","screens/SingpassManualForm/elements/Uploader/index.js","api/upload.js","screens/SingpassManualForm/elements/FormFooter/index.js","screens/SingpassManualForm/elements/forms/first.js","screens/SingpassManualForm/elements/FormSelection/index.js","screens/SingpassManualForm/options.js","screens/SingpassManualForm/elements/forms/second.js","utils/countries.js","screens/SingpassManualForm/elements/DatePicker/index.js","screens/SingpassManualForm/elements/forms/third.js","screens/SingpassManualForm/elements/forms/fourth.js","screens/SingpassManualForm/elements/forms/fifth.js","screens/SingpassManualForm/SingpassManualFormScreen.js","containers/SingpassManualForm/SingpassManualFormContainer.js","containers/App/components/LoginModal/elements/SignUpForm/SignUpForm.module.scss","redux/reducers/user.js","assets/images/success.png","assets/images/toast_close.png","utils/Notification.js","assets/images/danger.png","assets/images/warning.png","assets/images/info.png","utils/notifSender.js","containers/App/components/LoginModal/elements/OTPForm/OTPForm.module.scss","redux/reducers/i18n.js","redux/reducers/helmet.js","redux/reducers/alerts.js","redux/store.js","containers/App/components/Router/components/RouteWrappers.js","assets/images/Samung-Cinc-Logo-Black.png","assets/images/menu.png","containers/App/components/Header/Header.js","assets/images/shopping-cart.png","containers/App/components/Layout/Layout.js","assets/images/SamsungCinchLogo.png","assets/images/footer_icon-instagram.png","containers/App/components/Footer/Footer.js","assets/images/footer_icon-facebook.png","assets/images/footer_icon-linkedin.png","containers/App/components/Router/config/routes.js","containers/App/components/Router/AppRouter.js","containers/App/components/LoginModal/LoginModal.js","components/ScrollToTop/ScrollToTop.js","components/UtmParamsHandler.js","containers/App/DefaultErrorBoundary.js","containers/App/AppContainer.js","config/executors/apiIntercepor-utils/success.js","config/executors/apiIntercepor-utils/messages-success.js","config/executors/apiInterceptor.js","config/executors/apiIntercepor-utils/error.js","config/executors/apiIntercepor-utils/messages-error.js","config/executors/sentry.js","index.js","api/tracking.js","containers/App/components/LoginModal/elements/ResetPassword/ResetPassword.module.scss","containers/App/components/LoginModal/elements/LoginForm/LoginForm.module.scss","redux/reducers/order.js","utils/helpers.js","layouts/CartLayout/ToProceed/ToProceed.module.scss","containers/App/components/InitialLoginForm/InitialLoginForm.module.scss","redux/reducers/cart.js"],"names":["async","addItemsToCart","products","coupon","data","options","method","headers","Authorization","getAuthToken","url","AUTH_API_URL","axios","err","notify","notifType","DANGER","Error","checkoutRules","response","validateCoupon","getUserCart","updateUserCart","id","module","exports","login","params","msg","errors","message","register","_err$response$data","Object","keys","logout","loginWithOTP","access_token","getOTPForLogin","status","getStudentVerificationCode","verifyStudentVerificationCode","initialState","segment","SET_SEGMENT","FETCH_SEGMENT","TRADE_IN_DISCOUNTED_PRICE","setSegment","type","getSegment","tradeInDiscountedPrice","cart","state","arguments","length","undefined","action","JSON","parse","StickyBottom","_ref","actionBtnLabel","actionBtnDisabled","onSubmit","showBackBtn","onBack","isLoading","_jsx","_Fragment","children","className","_jsxs","Button","title","onClick","disabled","loading","LoginOTPForm","phone","setPhone","submit","changeForm","useEffect","storeUserEvent","event","triggerUserEvent","style","section","e","preventDefault","row","label","value","NumberInput","onChange","name","value__input","buttons","buttons__col","account","account__title","account__button","SupportingDocuments","profile","dispatch","useDispatch","isEmailValid","setIsEmailValid","useState","studentIDCard","setStudentIDCard","studentVisa","setStudentVisa","studentIDExpiryDate","setStudentIDExpiryDate","studentVisaExpiryDate","setStudentVisaExpiryDate","guarantorName","setGuarantorName","guarantorRelation","setGuarantorRelation","guarantorEmail","setGuarantorEmail","guarantorMobile","setGuarantorMobile","supportingDocsUploaded","useSelector","user","fetchedProducts","isOpenOnImagePreview","setIsOpenOnImagePreview","currentPreviewImageModal","setCurrentPreviewImageModal","isMobile","window","matchMedia","matches","getRootProps","getStudentIDCardProps","getInputProps","getInputfileStudentIDCardProps","useDropzone","accept","maxSize","onDrop","acceptedFiles","rejectedFiles","getStudentVisaProps","getInputfileStudentVisaProps","disabledDate","current","moment","endOf","updateSelectedCartItem","updateSupportingDocumentsDatFromStateToStore","formatDatePickerDate","guarantorInformationFromStateToStore","renderStudentIDCardORVisaPreview","file","fileType","preview","startsWith","src","URL","createObjectURL","alt","height","openImagePreviewModalBox","DeleteTwoTone","size","removeTheCurrentStoreObjectOnSupportDocument","closePreviewImage","image","Row","is_student","pass_proof_of_expiry_required","Col","sm","UploadFile","DatePicker","date","placeholder","Input","target","isValid","test","invalid","noValidate","FormFeedback","Modal","isOpen","centered","ModalHeader","CrossIcon","ModalBody","connect","_ref2","auth","product","isAuthenticating","showOTP","signUp","handleLogin","_ref3","email","password","isRemember","gaSessionId","trueIp","onSuccess","handleRegistration","_ref4","confirmPassword","subscriptionAcknowledge","onFailure","handleGetOTPForLogin","handleHideOTP","handleLoginWithOTP","_ref5","otp","clearCart","handleGetStudentVerificationOTP","_ref6","handleVerifyStudentVerificationCode","_ref7","code","_location$state","_otpInput$otp","isReset","resetEmail","toggleModal","query","useQuery","location","useLocation","history","useHistory","form","setForm","loginWithPhone","setLoginWithPhone","timer","setTimer","setLoading","forgotOtp","setForgotOtp","emailAddress","setEmailAddress","setOtp","lastnumber","setLastnumber","ip","setIP","doRegister","setDoRegister","doLogin","setDoLogin","setStudentVerificationOtp","verificationCode","setVerificationCode","signupPayload","setSignupPayload","setIsLoading","setMessageModalMessage","setMessageModalOpen","localStorage","getItem","isStudent","userCart","setUserCart","authData","includeNoa","otpInput","handleChangeForm","doRegistration","Cookies","get","redirectToScreen","getVerificationCode","submitForgotPassword","getOTPForForgotPassword","handleSubmitOtp","checkOTPCode","error","submitResetPassword","passwordReset","otp_code","password_confirmation","onPasswordResetSuccess","onPasswordResetFailure","SUCCESS","forgot","time","setTimeout","clearTimeout","handleUrlChange","pathname","ROUTES","SINGPASS","DOCUMENTSPROOF","push","ORDER_SUMMARY","SINGPASS_RESULT","SINGPASS_MANUALL_FORM","res","getUserIP","getData","unlisten","listen","getRentalPeriodId","_product$rental_perio","_product$rental_perio2","_product$rental_perio3","_rentalPeriod$id","durationTime","rental_period","find","rp","_product$selectedRent","selectedRentalPeriod","duration_time","rentalPeriod","user_type","sendProductsToBE","makeProducts","_product$rental_perio4","_product$rental_perio5","selectedRentalPeriodId","is_purchase","product_attribute_value_id","selectedStorage","attributes","specifications","values","inside_box","quantity","rental_period_id","rental_period_duration","product_id","color_id","selectedColor","deal_id","resp","_resp$data","_resp$data$products","singpass_status","concat","handleRoute","validateCheckout","_resp$data2","_resp$data2$message","CART","checkUserCart","_resp$data3","_resp$data3$products","_resp$data4","singpassExpired","PRODUCTS","ReactGA","category","user_ID","fp","timestamp","Date","FS","user_id","toString","trackKlaviyoEvent","trackFreshChatUser","onAuthorizedSingpass","redirectUrl","href","CartLayout","cartItems","isStyledCard","Redirect","to","SingPassScreen","SingpassResultContainer","SingpassManualFormContainer","FullscreenLoader","LoginForm","showLoginWithOTP","handleShowLoginWithOTP","reload","SignUpForm","isStudentDomain","slice","ResetPassword","OTPForm","resendCode","handleResendCode","showResend","backToTheCart","triggerLoginSubmitEvent","HOME","updateAuthenticationDataFromStateToStore","triggerRegistrationSubmitEvent","triggerOTPInputSubmitEvent","RetrieveMyInfo","onRetrieveInfo","removeItem","handleAuthorizeSingpass","include_noa","onRejectSingpassAuthorization","isAuthed","previousUrl","document","referrer","currentlySelectedCartItem","isEmpty","handleFetchAddress","CheckoutStart","SIGN_UP","CustomLinearProgress","progressWidth","setProgressWidth","showProgress","getElementById","progressBar","createElement","setAttribute","innerHTML","body","appendChild","progressElement","contains","removeChild","styles","progress","width","InputPhone","country","onlyCountries","disableDropdown","countryCodeEditable","rest","PhoneInput","containerClass","Spinner","animation","role","_path","_extends","assign","bind","i","source","key","prototype","hasOwnProperty","call","apply","this","SvgClose","svgRef","titleId","props","viewBox","fill","xmlns","ref","fillRule","clipRule","d","ForwardRef","AfterTradeIn","_orderedCart$","_orderedCart$2","_selectedCartItem$ren","_orderedCart$3","_orderedCart$3$rental","_selectedCartItem$bas","_selectedCartItem$ren2","orderedCart","metaTotal","showCreditOnly","showTableOnly","reducedMonthlyPriceOnly","showTotalCashbackOnly","selectedCartItem","meta","overview","total_","total","discount","subtotal","Number","toFixed","parseFloat","tradeInDevice","setTradeInDevice","tradeInCalculationValues","setTradeInCalculationValues","overtrade","isSeptPromoValid","includes","base_product","totalCashback","estimates","retrieveTradeInDevice","tradeInDeviceLocalStorage","STORAGEKEY_TRADE_IN_DEVICE","tradeInPlacedLocalStorage","STORAGEKEY_TRADE_IN_PLACED","payload","trade_in_quote","some","isNaN","FormData","entries","forEach","append","calculateTradeIn","then","catch","console","getTradeInValue","_tradeInCalculationVa","reducedMonthlyPrice","orderTotal","_tradeInCalculationVa2","afterTradeIn","TradeInExplanationModal","device","Table","borderless","newRate","accentBlue","afterTradeIn_","orderSummaryConfirmation","Badge","color","badge","Trash","removeTradeInIcon","CssTextField","styled","TextField","borderBottomColor","borderColor","initialEmail","backToMainLogin","fromPopup","onFormDataItemChange","setType","formData","setFormData","isLoginDisabled","hasEmailError","setHasEmailError","handleChange","prevState","backIcon","description","autoComplete","variant","required","value__error","withIcon","withIcon__input","eye","eyeOff","withIcon__img","withIcon__imgActive","forgot__title","buttons__submit","buttons__back","w_160","typeConfirm","setTypeConfirm","isInValidData","setSubscriptionAcknowledge","replace","checked","validateEmail","page__row","marketing_block_container","FormGroup","row__fullCol","marketing_block","check","inline","Radio","Label","htmlFor","maxLength","pattern","val","validity","valid","pass","passConf","ELOQUENT","AuthEloquent","AXIOS","_axios","TRADING_AXIOS","_tradingAxios","_withAsyncCallerAxios","_TradingBaseAxios","APP_ENV","process","STRIPE_PUBLIC_KEY","GOOGLE_MAP_KEY","COMPASIA_BASE_URL","COMPASIA_API_KEY","COMPASIA_USERNAME","STORAGEKEY_AUTH_TOKEN","STORAGEKEY_APP_LANGUAGE","STORAGEKEY_REFERRAL","STORAGEKEY_TRADE_IN_FORM_DATA","STORAGEKEY_PAY_NOW_INFO","STORAGEKEY_PASSWORD_SECRET_KEY","APP_LANGUAGE_DEFAULT","APP_ENVS","LOCAL","STAGING","PRODUCTION","SENTRY_CONFIG","environment","INACTIVE_STATUS","PRODUCT","path","generate","slug","rentalTerm","HOW_IT_WORKS","FAQ","PRIVACY_POLICY","TERMS_AND_CONDITIONS","ABOUT_US","MY_ACCOUNT","PROFILE","BILLING_HISTORY","ORDEREDPRODUCTSINGLE","ORDEREDPRODUCT","orderID","MYINFORMATION","SUBSCRIPTIONS","INACTIVE_SUBSCRIPTIONS","ORDERS","PAYMENTINFO","SHIPPINGINFO","ORDER","MYSINGPASS","KNOX_DISCLAIMER","PURCHASE_SALES_RESTRICTIONS","CHECKOUT","SIGNUP","SHIPPING","PAYMENT","PRODUCTORDERSUMMARYSINGLE","PRODUCTORDERSUMMARY","orderId","orderNumber","isBuy","ORDER_SUMMARY_CONFIRMATION","SIGN_IN","OTP_VERIFICATION","FORGOT_PASSWORD","REFER_AND_EARN","LUCKY_DRAW","Q6B6","Q6B6_flip6","Q6B6_fold6","TRADE_IN_CALCULATOR","NAFA","UNPACKED","CONTACT_US","INVOICE","GALAXY_Z_SEM","GALAXY_Z_AFF","GALAXY_Z_EDM","AUTH_CALLBACK_GOOGLE","AUTH_CALLBACK_FACEBOOK","GALAXY_Z_ND_FLASH_SALE","SEARCH","EAW","EAWTNC","REVIEW_ORDER","DEALS_PDP","GALAXY_UNPACKED","ROUTE_REDIRECT_FROM_UNAUTHED_ROUTE","ROUTE_REDIRECT_FROM_AUTHED_ROUTE","AUTO_APPLY_PROMO_CODE","SEPT_PROMO_CODE","APP_CURRENCY_SYMBOL","APP_CURRENCY_NAME","TRADE_IN_DEVICES","series","cashback","CHECKOUT_REQUIREMENTS","Q6B6_SLUGS","PRE_ORDER_PRODUCTS","VALID_RENTAL_PERIODS","MYSTERY_BOX_PRODUCT_SLUG","CHATBOT_HIDDEN_ROUTES","STATIC_G6B6_ROUTES","EXCLUDED_URLS","PDP_FLIP6","PDP_FLIP6_R","REDIRECT_ROUTES_OLD_Q6B6_TO_PDP_FLIP6","q6b6ProductsNames","SEPT_PROMO_START_DATE","SEPT_PROMO_END_DATE","numInput","showActionButton","isOtpFilled","updateOTPDataFromStateToStore","maskedEmail","username","domain","split","substring","repeat","otpBox","OtpInput","numInputs","inputType","inputStyle","input","containerStyle","container","renderInput","again","resend","getClassNames","cardList","selectedPaymentMethodId","FETCH_CARD_LIST_START","FETCH_CARD_LIST_SUCCESS","FETCH_CARD_LIST_FAILURE","REMOVE_CARD_START","REMOVE_CARD_SUCCESS","REMOVE_CARD_FAILURE","SET_SELECTED_PAYMENT_METHOD_ID","setSelectedPaymentMethodId","handleFetchPaymentIntent","token","instance","createAxiosInstance","handleFetchCardList","fetchCardListSuccess","handleCreateNewCard","paymentToken","post","makeDefaultCard","handleRemoveCard","paymentMethodId","delete","filter","item","payment_method_id","getProductList","credentials","apiKey","userName","getStorageList","imeiValidation","productId","imei","logCompAsiaError","reqBody","resBody","endpoint","productAssessmentQuestion","questions","fetchEstimatedPrice","imeiNumber","deviceConditionString","tradeInData","requestData","responseData","api","_rect","_g","_defs","SvgIcWarningOutlineBlack","xmlnsXlink","maskType","maskUnits","x","y","mask","patternContentUnits","xlinkHref","transform","getOrders","page","limit","getInactiveOrders","updateOrder","param","billingOrder","newrentalPeriodId","getPurchasePrice","order_id","purchaseProduct","CheckoutPaymentInfo","onToggle","placeOrder","backToOrderSummary","termsNConditions","setTermsNConditions","propertyOfCinch","setPropertyOfCinch","onChangeTermsNConditions","onChangeSetPropertyOfCinch","toggle","backdrop","FirstPayment","FraudProtection","ResaleRestriction","CheckboxSelected","CheckboxUnselected","Link","AdditionalPromo","isPromoApplied","onApplyPromo","roundedBtn","additionalPromo","DiscountCoupon","additionalPromo__icon","additionalPromo__text","additionalPromo__btn","additionalPromo__btn_promo_added","additionalPromo__btn_add_promo","additionalPromo__btn_rounded","Boolean","join","addPromoCode","ProductInfoTable","productName","productColorStorage","retailPrice","table","DurationAndPriceTable","baseRentalPrice","showUndiscountedPrice","accent","finalPrice","DiscountBreakdownTable","discountAmount","discountedAmount","isExtraMonthPromo","ToProceed","hideBottomCTABtns","cartStickyBottomExpanded","submitCoupon","setCoupon","handleSubmit","order","orderExist","Loading","onSeptPromoApply","setIsOpen","cartLocalStorageJSON","payment","cartLocalStorage","triggerPlaceOrderEvent","setTriggerPlaceOrderEvent","triggeringThePlaceOrderButtonEvent","setTriggeringThePlaceOrderButtonEvent","currentCartItemPricingObjLocalStorage","setCurrentCartItemPricingObjLocalStorage","emptyCart","isVerified","singPassExpired","orderPlaced","_state$auth","orderPlacementPageTermsAndCondition","canProceedToOrderPlacement","currentCartItemPricingObj","cartProducts","couponAmount","setCouponAmount","couponCode","setCouponCode","setIsExtraMonthPromo","setProductName","productColor","setProductColor","productStorage","setProductStorage","selectedMethodId","setRetailPrice","retail_value","canViewApplyAdditionalPromo","setCanViewApplyAdditionalPromo","isSeptPromoApplied","setIsSeptPromoApplied","triggerOrderPlacingEventFromOutside","handleProceedToOrder","emailVerified","getRemovedItemsFromCart","itemsToRemove","getUnwantedCartItems","removedCartItems","_resp$data$message","cartMeta","placeOrderEventThroughPopup","handleThePreviousRouteBeforeTheOrder","previousProductPage","Sentry","getCurrency","getMonthlyFee","fees","currency","newTotalPrice","parseInt","formatAmount","amount","getCouponAmount","updatedSelectedItem","getUpdatedSelectedItem","discount_amount","newDiscount","getTotalPayable","return2DP","getTotalPayableAmount","totalPayableAmount","getDuration","duration","getDurationCount","months","newRentalPeriod","_currentCartItemPrici","getProductName","_selectedCartItem$bas2","getProductColorStorage","_order$variation","_order$variation$prod","_order$variation$prod2","orderColorNameData","variation","colors","_selectedCartItem$col","_selectedCartItem$col2","_selectedCartItem$sel","colorName","text","storageAttribute","getStorageAttribute","removePromises","map","Promise","resolve","handleRemoveCartItem","all","removeItems","getCanViewApplyAdditionalPromoStatus","_item$base_product","_item$rental_period","isValidCartItem","attributeValueId","_selectedCartItem$bas4","isPreOrderProduct","_selectedCartItem$ren3","isAutoApplyCouponValid","_selectedCartItem$bas3","selectedItem","isValidRentalPeriod","updateSeptemberPromo","_order$variation2","_order$variation2$pro","_selectedCartItem$bas5","_selectedCartItem$bas6","_storages$attribute_v","_Number","_storage$meta","storages","storage","attribute_values","retailValue","_order$variation3","_order$variation3$pro","_order$variation3$pro2","getButtonText","triggerOrderPlacingFinalEvent","additional_promo__mob","subscriptionSummary","additional_promo__desktop","expandedStickyBottom","collapsedStickyBottom","oldPrice","rel","CustomStepIcon","completed","active","icon","DuplicateErrorContent","onClose","onSignIn","onContactUs","close","dangerSign","GeneralErrorContent","SingpassErrorModal","errorType","isDuplicateError","buyPrice","currentStep","triggerLoginSubmit","triggerRegistrationSubmit","setOrder","elementRefForShippingSection","useRef","isButtonDisabled","activeStep","setActiveStep","setCartStickyBottomExpanded","common","segmentQuery","setOrderExist","mapSteps","isCartLoading","isPaymentLoading","isShippingLoading","singPassVerified","_state$auth2","_state$auth2$profile","_state$auth3","_state$auth3$profile","_state$auth4","_state$auth4$profile","isLoadingExtend","setIsLoadingExtend","orderPlaceDispatchThroughPopup","stepperData","setStepperData","singpassError","openErrorModal","setOpenErrorModal","pageStack","secondLastPageUrl","indexOf","handleFetchingCart","updateStepperSteps","_products$","_products$$base_produ","_products$2","_products$2$pivot","cart_id","pivot","setItem","childrenWithProps","Children","child","cloneElement","applyCoupon","isAutoApplyCoupon","tmp","preOrderedProducts","_product$base_product","getFormattedObj","is_extend","orderTypeValue","calculateNewPrice","updateOrderData","newRentalId","orderType","newTotal","newCoupon","newDiscountedTotalPrice","newDiscountedTotal","calcNewRentalPeriodAndPrice","updatedSteps","step","showPromoCodeSection","Stepper","alternativeLabel","index","Step","StepLabel","StepIconComponent","isObjectEmpty","paddingInline","backToPreviousPage","placeOrderDesktopTrigger","toggleCartLayoutStickyBottom","handleCloseErrorModal","clearSingpassError","deleteAuthToken","getProducts","cat","getAutocompleteProducts","returnProduct","contactProduct","getSamsungProducts","ForgotForm","setEmail","AuthOTPForm","InitialLoginForm","handleSocialLogin","setEmailId","checkEmailAvailability","emailError","setEmailError","desc","socialButtons","socialButton","facebookIcon","separator","separator__line","separator__text","inputWrapper","onEmailChange","inputWrapper__email","actionButtons","actionButtons__back","actionButtons__submit","actionButtons__modal_button","initialForm","initialLoginFormContainerClass","doSignup","setDoSignup","setValue","watch","useForm","defaultValues","setValueForSignUpForm","watchForSignUpForm","signupFormData","watchForResetPasswordForm","setValueForResetPasswordForm","newPassword","resetPasswordFormData","loginResponse","setLoginResponse","emailId","emailForAutoFill","setEmailForAutoFill","forgotPasswordEmail","setForgotPasswordEmail","submitLogin","redirect","getRedirectUrl","getLastPageUrlWithoutAuth","selectedRentalPeriodIdOnEmptyCases","selectedColorOption","_product$selectedColo","isStudentPriceAvailable","_selectedRentalPeriod4","r","_selectedRentalPeriod3","_selectedRentalPeriod2","_selectedRentalPeriod","getDealId","_products$3","_products$4","_products$5","formattedCartItems","_item$base_product2","_item$base_product3","images","medias","price","invoiceUrl","_rentalPeriod","_product$rental_perio6","_product$rental_perio7","studentObj","URLSearchParams","search","requestOtp","submitSignUp","onSignUpFormDataItemChange","_deals$find","deals","deal","toggleInvoiceModal","provider","storageReferral","getReferralParam","trim","getUserEmailAvailability","exists","showBackButton","onResetPasswordFormDataItemChange","InvoiceModal","ElfsightWidget","setCode","getElfsightWidget","match","getElfsightWidgets","_customButtonWithTogg","cinchCreditsOnly","customButton","modal","setModal","customButtonWithToggle","React","infoButton","modalBody","closeButton","modalHeader","ParallelArrows","tradeInIcon","ModalFooter","block","buttonDismissButton","getAuthedProfile","_res$data","_res$data$data","status_code","_res$data2","_res$data2$data","_res$data3","_res$data3$data","userSimilarProducts","createTicket","updateUserProfile","User","updateOne","exact_id","userIP","user_ip","channel","referral","getLastPageUrl","authToken","ipString","getPendingInvoice","formConfig","aliasName","sex","maritalStatus","marriedName","dateOfBirth","countryOfBirth","race","secondaryRace","residencyStatus","residentialAddress","nric","workPassExpiryDate","mobile","occupation","typeOfHousing","nameOfEmployer","employmentSector","income","assessedYearOfIncome","passType","passStatus","_state$auth$profile","reset","formState","setRemainingVerifications","isSubmitBtnDisabled","userData","singpass","legal_name","alias_name","martial_status","maried_name","dob","birth_country","ethnicity","secondary_race","residency_status","residential_address","nric_fin","workpass_expiry_date","email_address","housing_type","employment_sector","employer_name","income_noa","assessed_year_income","pass_type","pass_status","handleFetchSingpassData","onFormSubmitSuccess","newVerifications","onFormSubmitFailure","SingpassExpired","SingPassLogo","MyInformationForm","isFormDisabled","handleSingpassSubmitData","SingPassVerification","onToggleLoading","_errors$name","_errors$aliasName","_errors$sex","_errors$maritalStatus","_errors$maritalStatus2","_errors$maritalStatus3","_errors$marriedName","_errors$marriedName2","_errors$marriedName3","_errors$dateOfBirth","_errors$countryOfBirt","_errors$race","_errors$secondaryRace","_errors$residencyStat","_errors$residentialAd","_errors$residentialAd2","_errors$residentialAd3","_errors$nric","_errors$pinCode","_errors$email","_errors$email2","_errors$email3","_errors$mobile","_errors$mobile2","_errors$occupation","_errors$typeOfHousing","_errors$nameOfEmploye","_errors$employmentSec","_errors$income","_errors$assessedYearO","_errors$passType","_errors$passStatus","for","floating","pinCode","includeNotice","setIncludeNotice","onToggleIncludeNotice","handleNOA","htmlContent","text__expired","text__strong","WarningIcon","dangerouslySetInnerHTML","__html","singpassForm","singpassResend","FormMessage","handleEnableSingpass","message__logo","logo","message__text","message__lines","message__row","message__col","isInvoiceModalOpen","header","header__title","header__close","header__close__img","handleClose","unpaid_invoice","buttonContainer","button","viewInvoice","open","Autocomplete","productsList","categsList","closeList","rememberTheLastSearchItem","icon_url","SearchHistory","searchHistory","clearSearchHistory","fillSearchInput","SearchInput","searchQuery","containerRef","autoCompleteProducts","setAutoCompleteProducts","searchHistoryVisibile","setSearchHistoryVisibile","isAutocompleteVisibile","setAutocompleteVisibility","setSearchHistory","setSearch","handleClickOutside","resetSearch","addEventListener","removeEventListener","updateTheLocalSearchHistory","populateProductsWithSearchFilling","updatedHistory","stringify","pop","prods","handleSearchOnFocus","navigateToSearchScreen","searchIcon","onFocus","openForDuplicateNRIC","setOpenForDuplicateNRIC","setSingpassError","INITIAL_STATE","isAppReady","isUpdatingProfile","isLoggingOut","openLogin","userDoLoggedin","singpassSubmissionKey","showSubmit","IS_APP_READY","AUTH_START","AUTH_SUCCESS","AUTH_FAILED_LOGIN","AUTH_FAILED_REGISTRATION","AUTH_LOGOUT_START","AUTH_LOGOUT_SUCCESS","UPDATE_PROFILE_START","UPDATE_PROFILE","OPEN_LOGIN","SHOW_OTP","HIDE_OTP","OPEN_SIGNUP","CLOSE_SIGNUP","SHOW_SUBMIT","ENABLESINGPASS","UPDATE_SINGPASS_SUBMISSION_KEY","SHOW_STUDENT_VERIFICATION_CODE","HIDE_STUDENT_VERIFICATION_CODE","SET_SINGPASS_ERROR","CLEAR_SINGPASS_ERROR","appIsReady","authStart","authSuccess","invited","loginError","registrationError","authLogoutStart","authLogoutSuccess","updateProfile","showOTPForm","loginModal","handleShowStudentVerificationCode","TOGGLE_INVOICE_MODAL","mobile_number","login_otp","setAuthToken","surname","secretKey","CryptoJS","enc","Utf8","iv","lib","WordArray","random","encryptedPassword","AES","encrypt","keySize","mode","CBC","padding","pad","Pkcs7","encryptedIv","Base64","ga_session_id","true_ip","navigator","getNavigatorData","set","fingerprint","pendingInvoice","activeSubscriber","needRedirect","encryptedConfirmPassword","subscribed_to_promotion","referral_code","urlParams","utmFields","userEventParams","fromEntries","field","_","deleteReferralParam","hubspotWebsiteFormUrl","hubspotFormFields","objectTypeId","context","hutk","pageUri","pageName","ipAddress","fields","trackPayload","handleAutoLogin","gtag","handleLogout","fcWidget","clear","deleteTradeInInfo","clearLocationHistoryStack","profileResp","handleOpenSignUp","isRefresh","updatedForm","redirect_url","handleVerifySingpassOtp","_err$response","scope","setUser","showStudentVerificationCode","Title","FormHeader","header__flex","header__flexOne","header__label","header__pointer","handleClick","header__text","header__SingPassVerification__text","header__SingPassVerification__button","SvgExclamation","clipPath","FormInput","errorMsg","placeHolder","FormInputDesc","FormInput__label","FormInput__desc","FormInput__input","FormInput__inputError","FormInput__error","Icon","_path2","SvgUploadedFile","stroke","strokeWidth","strokeLinecap","SvgPinkDelete","Uploader","multiple","maxFiles","handleUploadedFile","maxSizeBytes","handleErrorMsg","show","setShow","Accept","uploadFile","UploadedIcon","DeleteIcon","Dropzone","canRemove","inputContent","Spin","classNames","autoUpload","onChangeStatus","handleChangeStatus","remove","mb","FormFooter","prevLabel","prevClick","nextLabel","nextClick","FormFooter__left","FormFooter__right","First","setErrors","firstForm","setFirstForm","handleNextStep","errorMsgs","prev","col","nric_fin_front_image","nric_fin_back_image","FormSelcetion","defaultValue","classNamePrefix","isSearchable","Select","gender","martialStatus","residency","housing","incomeNoa","Second","secondForm","setSecondForm","handlePrevStep","colEmail","countryList","otherProps","classname","Picker","selected","Third","thirdForm","setThirdForm","maxDate","placeholderText","showMonthDropdown","showYearDropdown","scrollableYearDropdown","yearDropdownItemNumber","Fourth","fourthForm","setFourthForm","postal_code","Fifth","fifthForm","setFifthForm","openModal","last_3_slips","SingpassManualFormScreen","myRef","setStep","setErrorMsgs","setOpenModal","manualForm","reFormattedThirdForm","formattedDate","offsetPosition","querySelector","getBoundingClientRect","top","scrollY","scrollTo","behavior","removeTmp","validateForm","checkForm","dobDate","getFullYear","getMonth","getDate","format","formattedThirdForm","Helmet","content","property","address","documents","supportingDocs","guarantor","FETCH_ADDRESS_START","FETCH_ADDRESS_SUCCESS","FETCH_ADDRESS_FAILURE","UPDATE_ADDRESS_START","UPDATE_ADDRESS_SUCCESS","UPDATE_ADDRESS_FAILURE","UPLOAD_SUPPORT_DOCS_START","UPLOAD_SUPPORT_DOCS_SUCCESS","UPLOAD_SUPPORT_DOCS_FAILURE","UPDATE_GUARANTOR_INFORMATION","UPDATE_GUARANTOR_INFORMATION_SUCCESS","UPDATE_GUARANTOR_INFORMATION_FAILURE","UPDATE_USER_LOGIN_STATE_DATA","UPDATE_USER_SUPPORTING_DOCUMENTS_DATA","UPDATE_GUARANTOR_INFORMATION_ON_CHECKOUT","UPDATE_OTP_INPUT_DATA","UPDATE_USER_GURANTOR_INFORMATION_DATA","UPDATED_ON_SUPPORT_UPLOADED_EVENT","keyG","valueG","fetchAddressSuccess","handleCreateAddress","zip_code","_addressRes$data","addressRes","handleUpdateAddress","_addressRes$data2","put","_action$data","_action$data2","userInfo","gurantorInformation","Notification","setProgress","intervalCount","interval","setInterval","remainingTime","clearInterval","closeNotification","success","WARN","notificationConfig","insert","animationIn","animationOut","dismiss","waitForAnimation","Store","addNotification","language","getAppLanguageCache","SET_APP_LANGUAGE","i18n","setAppLanguageCache","changeLanguage","extraTags","HELMET_SET","HELMET_RESET","helmet","ALERTS_PUSH","ALERTS_DISMISS_BY_ID","ALERTS_DISMISS_ALL","alerts","INCREMENT_ID","config","filterAlertById","createBrowserHistory","middleWares","composeWithDevTools","applyMiddleware","routerMiddleware","thunk","store","createStore","combineReducers","router","connectRouter","reducers","compose","devToolsExtension","f","AuthedRoute","Component","shouldComponentUpdate","nextProps","render","Route","from","singpassStatus","_userCart$length","setOpen","setSearchQuery","useQueryParam","StringParam","cartCount","setCartCount","isCheckoutPages","showSignInSignUpCta","showCartIconPaths","goToLogin","handleLogoutMobile","pointoutTheSection","hash","hashSection","offset","topPos","scroll","referralCode","setReferralParam","position","NavLink","SamsungLogoDesktop","isGlobal","showCartIcon","count","goToCart","mobileMenu","SwipeableDrawer","anchor","swipeAreaWidth","PaperProps","sx","Box","Collapse","accordion","ghost","expandIconPosition","UncontrolledAccordion","defaultOpen","AccordionItem","AccordionBody","accordionId","tag","RRNavLink","Layout","isOpenOnceSessionTimeout","setIsOpenOnceSessionTimeout","handleStorageChange","triggerPageRedirect","Header","Footer","currentRoute","footerClass","SamsungCinchLogo","ScrollToID","InstagramIcon","scrollToElement","element","getComputedStyle","documentElement","fontSize","elementPosition","pageYOffset","HomeContainer","lazy","PageNotFoundContainer","ProductContainer","OrderedProductContainer","CartContainer","OrderSummaryContainer","AboutUsContainer","TermsAndConditionsContainer","FAQContainer","PrivacyPolicyContainer","SingPassContainer","MyInformationContainer","OrdersContainer","KnoxDisclaimerContainer","SubscriptionsContainer","OtpVerificationContainer","SignInContainer","SignUpContainer","ResetPasswordContainer","ReferAndEarnContainer","BuyingOrderSummaryContainer","PaymentInfoContainer","ShippingInfoContainer","OrderSummaryScreenConfirmationContainer","ProductsContainer","LuckyDrawContainer","TradeInCalculatorContainer","NafaContainer","WaitListContainer","ContactUsContainer","Q6B6Container","EAWContainer","EAWTNCContainer","InvoiceContainer","SocialAuthHandlerContainer","ReviewOrderContainer","SearchContainer","DealsContainer","UnpackedContainer","AppRouter","sidePanelOpen","layoutProps","useMemo","currentPath","Suspense","fallback","QueryParamProvider","ReactRouterRoute","Switch","exact","component","CheckoutContainer","LoginModal","AuthForm","ScrollToTop","UtmParamsChecker","userActive","setUserActive","updateLastActiveTime","currentTime","now","expires","checkInactivity","lastActiveTime","clearUtmsFromUrl","has","newParams","replaceState","getUtmParamsFromUrl","utmValues","getUtmParamsFromLocalStorage","utmUrlString","intervalId","propTypes","PropTypes","bool","isRequired","DefaultErrorBoundary","getDerivedStateFromError","isError","constructor","super","componentDidCatch","info","fallbackMessage","withRouter","autoLogin","Sha1","setIsError","isIdle","setIsIdle","idleTimer","initialize","TiktokPixel","init","pageView","handleZendeskIntegration","zendeskScript","zendeskElements","display","script","clearSessionStorageValuesWheLoading","hitType","userID","userEmail","displayName","_hsq","send","createWebHistoryStack","handleActivity","onError","setExtras","closeLoginModal","clearWebHistoryStack","uuid","uuidv4","update","result","digest","ire","customerId","customerEmail","customProfileId","ReactNotifications","ErrorBoundary","getMessageByResponseSuccess","_response$data","getMessageByResponseError","statusText","interceptors","use","reject","dsn","ReactPixel","orgId","integrations","tracesSampleRate","replaysSessionSampleRate","replaysOnErrorSampleRate","Provider","ConnectedRouter","AppContainer","_params$product$","_params$product$$bran","_params$items$","_params$items$3","_params$meta","_params$meta2","_params$items$5","_params$meta3","klaviyo","dataLayer","isProduction","identify","$email","$first_name","$last_name","ecommerce","items","_item$brand","_item$rental_period$f","_item$rental_period$f2","item_list_name","brand","item_id","item_name","item_brand","item_category","item_category2","getDefaultColorOptionOnProductItem","item_category3","getDefaultStorageOptionOnProductItem","item_variant","Math","round","ProductName","ProductID","Categories","ImageURL","Brand","Price","CompareAtPrice","_item$brand2","_item$rental_period$f3","_params$rentalPeriod","_item$brand3","_item$rental_period$f4","_params$rentalPeriod2","_item$base_product2$b","_item$base_product3$r","_item$selectedRentalP","$value","AddedItemProductName","AddedItemProductID","AddedItemImageURL","AddedItemURL","AddedItemPrice","AddedItemQuantity","ItemNames","_item$base_product4","CheckoutURL","Items","_item$base_product5","SKU","Quantity","ItemPrice","RowTotal","ProductURL","$event_id","_item$base_product6","_item$base_product7","ProductCategories","_item$base_product8","_item$base_product9","_item$base_product10","_item$base_product10$","_item$base_product11","_item$base_product11$","_params$items$2","selectedStorageOption","_item$base_product12","_item$base_product13","_item$base_product14","_item$base_product14$","_item$base_product15","_item$base_product15$","_item$rental_period2","_params$items$4","ZipCode","order_discount","transaction_id","_params$meta4","_params$meta5","_item$base_product16","_item$base_product17","_item$base_product18","_item$base_product18$","_item$rental_period3","_params$items$6","setProperties","externalId","firstName","lastName","orders","orderPlacementPageKnoxDiscliamer","orderPlaceDispatch","tradeInCalculations","orderPlacedFinalEvent","payloadBeforeProceed","FETCH_ORDERS_SUCCESS","UDPATE_STORE_ON_ORDER_PROCEED_STAT","UDPATE_STORE_ON_ORDER_PROCEED_STAT_FOR_TERMS_CONDITION","UDPATE_STORE_ON_ORDER_PROCEED_STAT_FOR_KNOX_DISCLIAMER","ORDER_PLACED","ORDER_TOTAL_AMOUNT","TRIGGER_PLACING_ORDER_EVENT","TRIGGER_ORDER_PLACING_POPUP_EVENT","TRIGGER_ORDER_PLACING_FINAL_EVENT","STORE_ORDER_PAYLOAD_IN_STORE","updateStoreOnOrderProceedStat","orderPlacedEvent","updateOrderInStore","handleCreateOrder","_e$response","_e$response$data","_e$response$data$data","create","baseURL","sessionStorage","secure","sameSite","cookieToken","getAppLanguage","setAppLanguage","String","toLowerCase","returnImgOfColor","_medias$","findCOlorMediaPrimary","primary","findCOlorMedia","NoImage","hostname","selectedDate","dateObject","year","month","padStart","day","containsStudentWord","currentPageUrl","locationsStack","maxStackSize","splice","protocol","host","getBaseUrl","removeKeywords","keyword","obj","_item$product_attribu","_item$selectedStorage","_item$base_product$at","_item$selectedStorage2","_item$selectedStorage3","_storagePavs$attribut","_storagePavs$attribut2","selectedStorageId","storagePavs","referralParam","navigatorObj","k","handleSlides","slides","slide","img","original","thumbnail","cutOffTime","getTime","_product$medias","_product$medias2","primaryColorMedia","m","_product$colors","_product$colors2","_product$attributes","_attributes$attribute","t","_selectedStorageLabel2","selectedStorageLabel","s","_selectedStorageLabel","_product$attributes3","_product$attributes3$","_product$attributes3$2","_product$attributes2","_product$attributes2$","convertToNumber","str","isDateWithinRange","start","end","startTime","endTime","isClearingFetchedProducts","toggleAddToCartEvent","isCartDataLoading","ADD_TO_CART","REMOVE_FROM_CART","REMOVE_ONE_ITEM_FROM_CART","CLEAR_CART","FETCH_CART_START","FETCH_CART_SUCCESS","FETCH_CART_FAILURE","UPDATE_CART_ITEM_START","UPDATE_CART_ITEM_SUCCESS","UPDATE_CART_ITEM_FAILURE","REMOVE_CART_ITEM_START","REMOVE_CART_ITEM_SUCCESS","REMOVE_CART_ITEM_FAILURE","CLEAR_FETCHED_CART_START","CLEAR_FETCHED_CART_SUCCESS","CLEAR_FETCHED_CART_FAILURE","TRIGGER_ADD_TO_CART_EVENT","TOGGLE_STICKY_BOTTOM_ADD_CART_EVENT","CLEAR_CART_AFTER_ORDERPLACING","UPDATE_SELECTED_CART_ITEM","FETCH_CART_DATA_START","FETCH_CART_DATA_SUCCESS","FETCH_CART_DATA_FAILURE","addProductToCart","removeProductfromCart","removeOneProductfromCart","updateCartItemStart","updateCartItemSuccess","updateCartItemFailure","removeCartItemSuccess","removeCartItemFailure","triggerAddToCartEventFromOutside","toggleAddToCartEventFromStickyBottomBar","clearTheCartLocallyWhenOrderPlaces","fetchCartSuccess","handleUpdateCartItem","colourId","pavId","rentalPeriodId","noStorage","_item$selectedColor","period","findIndex","_item$selectedColor2","handleUpdateCartForCoupon","_item$selectedColor3","checkIfExist","qty","_action$data$data"],"mappings":"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ASA,IAEhD8S,SAAUA,IACdlV,cAACknD,GAAW,CACRtkC,KAAMtU,IAAOwV,OACb8qC,OAAO,EACPC,UAAYv2C,GACRtY,cAACusD,GAAe,IAAKj0C,EAAOlW,QAASA,IAEzC8S,SAAUA,IACdlV,cAACknD,GAAW,CACRtkC,KAAMtU,IAAOsV,cACbgrC,OAAO,EACPC,UAAWpC,GACXv3C,SAAUA,IACdlV,cAACknD,GAAW,CACRtkC,KAAMtU,IAAO0W,iBACb4pC,OAAO,EACPC,UAAWnC,GACXx3C,SAAUA,IACdlV,cAACknD,GAAW,CACRtkC,KAAMtU,IAAO4W,eACb0pC,OAAO,EACPC,UAAW/B,GACX53C,SAAUA,IACdlV,cAACknD,GAAW,CACRtkC,KAAMtU,IAAOyV,YACb6qC,OAAO,EACPC,UAAW7B,GACX93C,SAAUA,IACdlV,cAACknD,GAAW,CACRtkC,KAAMtU,IAAO0V,aACb4qC,OAAO,EACPC,UAAW5B,GACX/3C,SAAUA,IACdlV,cAACknD,GAAW,CACRtkC,KAAMtU,IAAOoW,sBACbkqC,OAAO,EACPC,UAAW9B,GACX73C,SAAUA,IACdlV,cAACknD,GAAW,CACRtkC,KAAMtU,IAAOqX,UACbipC,OAAO,EACPC,UAAWjB,GACX14C,SAAUA,IACdlV,cAACknD,GAAW,CACRtkC,KAAMtU,IAAO+X,aACbuoC,OAAO,EACPC,UAAWf,GACX54C,SAAUA,IACdlV,cAACunD,QAAK,CACF3kC,KAAMtU,IAAOyW,QACb6pC,OAAO,EACPC,UAAWlC,GACXz3C,SAAUA,IACdlV,cAACunD,QAAK,CACF3kC,KAAMtU,IAAOoH,QACbk5C,OAAO,EACPC,UAAWjC,GACX13C,SAAUA,IACdlV,cAACunD,QAAK,CACF3kC,KAAMtU,IAAO2W,gBACb2pC,OAAO,EACPC,UAAWhC,GACX33C,SAAUA,IACdlV,cAACunD,QAAK,CACF3kC,KAAMtU,IAAO4D,SACb08C,OAAO,EACPC,UAAW1B,GACXj4C,SAAUA,IACdlV,cAACunD,QAAK,CACF3kC,KAAMtU,IAAO6W,WACbypC,OAAO,EACPC,UAAWzB,GACX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","file":"static/js/main.e10bb341.chunk.js","sourcesContent":["import axios from 'axios';\r\n\r\nimport { AUTH_API_URL } from 'config/constants';\r\n\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { getAuthToken } from 'utils/helpers';\r\n\r\n/**\r\n * add items to cart\r\n * @param {object} products\r\n * @returns {Promise}\r\n */\r\n\r\nexport async function addItemsToCart(products, coupon) {\r\n const data = { products };\r\n\r\n if (coupon) {\r\n data.coupon = coupon;\r\n }\r\n\r\n const options = {\r\n method: 'POST',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken(),\r\n 'content-type': 'application/json'\r\n },\r\n url: AUTH_API_URL + '/user/cart?channel=samsung',\r\n data\r\n };\r\n\r\n try {\r\n const resp = await axios(options);\r\n\r\n return resp;\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n throw new Error(err);\r\n }\r\n}\r\n\r\n/**\r\n * check items in the cart\r\n * @returns {Promise}\r\n */\r\n\r\nexport async function checkoutRules() {\r\n const options = {\r\n method: 'GET',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken(),\r\n 'content-type': 'application/json'\r\n },\r\n url: AUTH_API_URL + '/checkoutrules/validate?channel=samsung'\r\n };\r\n\r\n try {\r\n const resp = await axios(options);\r\n\r\n return resp;\r\n } catch (err) {\r\n const response = err.response;\r\n\r\n return response;\r\n }\r\n}\r\n\r\n/**\r\n * check Coupon in the cart\r\n * @returns {Promise}\r\n */\r\n\r\nexport async function validateCoupon(coupon, products) {\r\n const options = {\r\n method: 'POST',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken(),\r\n 'content-type': 'application/json'\r\n },\r\n url: AUTH_API_URL + '/coupon/validate?channel=samsung',\r\n data: { coupon, products }\r\n };\r\n\r\n try {\r\n const resp = await axios(options);\r\n\r\n return resp;\r\n } catch (err) {\r\n const response = err.response;\r\n\r\n throw response;\r\n }\r\n}\r\n\r\n/**\r\n * get user cart\r\n * @returns {Promise}\r\n */\r\n\r\nexport async function getUserCart() {\r\n const options = {\r\n method: 'GET',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken(),\r\n 'content-type': 'application/json'\r\n },\r\n url: AUTH_API_URL + '/user/cart?channel=samsung'\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n const response = err.response;\r\n\r\n throw response;\r\n }\r\n}\r\n\r\n/**\r\n * update user cart\r\n * @returns {Promise}\r\n */\r\n\r\nexport async function updateUserCart(id, data) {\r\n const options = {\r\n method: 'PUT',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken(),\r\n 'content-type': 'application/json'\r\n },\r\n url: AUTH_API_URL + '/user/cart/' + id + '?channel=samsung',\r\n data\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n const response = err.response;\r\n\r\n throw response;\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"FormInput\":\"FormInput_FormInput__30klQ\",\"FormInput__label\":\"FormInput_FormInput__label__32RyF\",\"FormInput__desc\":\"FormInput_FormInput__desc__1lG4E\",\"FormInput__input\":\"FormInput_FormInput__input__3sKcJ\",\"FormInput__error\":\"FormInput_FormInput__error__1bJv3\",\"FormInput__inputError\":\"FormInput_FormInput__inputError__1kxhM\",\"FormInputDesc\":\"FormInput_FormInputDesc__eRa5q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"description\":\"ForgotForm_description__29DXW\",\"buttons\":\"ForgotForm_buttons__ZyqIe\",\"buttons__back\":\"ForgotForm_buttons__back__3OJ59\",\"buttons__submit\":\"ForgotForm_buttons__submit__1yZzX\",\"w_160\":\"ForgotForm_w_160__L8et1\",\"section\":\"ForgotForm_section__3cIsP\",\"row\":\"ForgotForm_row__26YuS\",\"label\":\"ForgotForm_label__A46m7\",\"value\":\"ForgotForm_value__3HFZy\",\"value__input\":\"ForgotForm_value__input__25zrQ\",\"value__error\":\"ForgotForm_value__error__2H0_O\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"InvoiceModal_modal__3nopf\",\"section\":\"InvoiceModal_section__1nC5E\",\"header\":\"InvoiceModal_header__1gZdW\",\"header__title\":\"InvoiceModal_header__title__1X1dP\",\"header__close\":\"InvoiceModal_header__close__25TDt\",\"header__close__img\":\"InvoiceModal_header__close__img__2J-kJ\",\"body\":\"InvoiceModal_body__tO3SW\",\"buttonContainer\":\"InvoiceModal_buttonContainer__1Hkst\",\"button\":\"InvoiceModal_button__2xrMu\",\"unpaid_invoice\":\"InvoiceModal_unpaid_invoice__2mg5V\"};","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAA2CAYAAABumXGkAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAFESURBVGhD7dhLisJAFIXh3k4PeuIaBAc6lgY3IILL8IU9U7F7GDUORV1TXMc1R0oo0kmZh5Qncn+4kxQp8lHJJB/yBimCJUWwpAiWFMGSIuw2u71MZj8SRRdzxV9PQSzXf/L51bjNeDo3V/1VGWEDMMF2Z1b8VQmRBCxXv2bFb6URLABUCsEEQIURbABUCMEIQLkRrACUC8EMQA8R7ADkRNQBgDIRSUCz1ZZFjEhOfzCU7ncvde1ZcziezVOll4rATTaAYVyQDMQpdaNXDp4pq8zXCcdob9Jsdf4ds69xAZDzw8YGNmQVfyeMORGoDpCHCMQOyYVAzJDcCMQKKYRAjJDCCMQGKYVATJDSCMQCqYRASUiwDc2KvyojkA2p5c+ze8EmlFEMiC41/Y356hTBkiJYUgRLimBJESwpgiVFsPQGCJErVDhAkkEOA8AAAAAASUVORK5CYII=\"","import { AUTH_API_URL, ELOQUENT } from 'config/constants';\r\nimport axios from 'axios';\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { getAuthToken } from 'utils/helpers';\r\n\r\n/**\r\n * login user\r\n * * 422 - Email or Password is wrong\r\n * @param {Object} params\r\n */\r\n\r\nexport async function login(params) {\r\n const options = {\r\n method: 'POST',\r\n params,\r\n url: AUTH_API_URL + '/auth/login?channel=samsung'\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n const msg = err.response.data.errors.message || err.response.data.message;\r\n\r\n if (msg) {\r\n notify(msg, notifType.DANGER);\r\n }\r\n\r\n throw err;\r\n }\r\n}\r\n\r\n/**\r\n * Register user\r\n * ERRORS:\r\n * * 422 - email already exists\r\n * @param {Object} params\r\n */\r\nexport async function register(params) {\r\n const options = {\r\n method: 'POST',\r\n params,\r\n url: AUTH_API_URL + '/auth/register?channel=samsung'\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n const errors = err.response.data?.errors;\r\n\r\n if (errors) {\r\n const errorObj = Object.keys(errors)[0];\r\n const message = errors[errorObj][0];\r\n\r\n notify(message, notifType.DANGER);\r\n } else {\r\n notify('This email is already registered, please sign in instead.', notifType.DANGER);\r\n }\r\n\r\n throw err;\r\n }\r\n}\r\n\r\n/**\r\n * Logout user\r\n * @returns {Promise}\r\n */\r\nexport async function logout() {\r\n const options = {\r\n method: 'POST',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n url: AUTH_API_URL + '/auth/logout'\r\n };\r\n\r\n try {\r\n const resp = await axios(options);\r\n\r\n return resp;\r\n } catch (err) {\r\n return err;\r\n }\r\n}\r\n\r\n/**\r\n * request a password reset code by the given email\r\n * ERRORS:\r\n * * 404 - email not found\r\n * @param {String} email\r\n * @returns {Promise}\r\n */\r\nexport function requestPasswordReset(email) {\r\n return ELOQUENT.Auth.forgotPassword(email);\r\n}\r\n\r\n/**\r\n * login with OTP\r\n * ERRORS:\r\n * @param {Object} params\r\n */\r\nexport async function loginWithOTP(params) {\r\n const options = {\r\n method: 'POST',\r\n params,\r\n url: AUTH_API_URL + '/auth/login?channel=samsung'\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data.access_token;\r\n } catch (err) {\r\n // console.error(err);\r\n // const status = err.response.status;\r\n\r\n // if (status) {\r\n // notify('This email is already in use.', notifType.DANGER);\r\n // }\r\n\r\n // throw err;\r\n }\r\n}\r\n\r\n/**\r\n * Get OTP for login\r\n * ERRORS:\r\n * * 422 - email already exists\r\n * @param {Object} params\r\n */\r\nexport async function getOTPForLogin(params) {\r\n const options = {\r\n method: 'POST',\r\n params,\r\n url: AUTH_API_URL + '/auth/login'\r\n };\r\n\r\n try {\r\n await axios(options);\r\n } catch (err) {\r\n const status = err.response.status;\r\n\r\n if (status === 422) {\r\n notify('The mobile number is invalid.', notifType.DANGER);\r\n }\r\n\r\n throw err;\r\n }\r\n}\r\n\r\n/**\r\n * reset the user's password\r\n * ERRORS:\r\n * * 404 - code not found\r\n * * 422 - code expired\r\n * @param {String} token\r\n * @param {String} email\r\n * @param {String} password\r\n * @param {String} password_confirmation\r\n * @param {String} pin\r\n * @param {String} pin_confirmation\r\n * @param {String} otp\r\n * @returns {Promise}\r\n */\r\n// eslint-disable-next-line camelcase\r\nexport function resetPassword(token, email, password, password_confirmation, pin, pin_confirmation, otp) {\r\n return ELOQUENT.Auth.resetPassword(token, email, password, password_confirmation, pin, pin_confirmation, otp);\r\n}\r\n\r\nexport async function getStudentVerificationCode(params) {\r\n const options = {\r\n method: 'POST',\r\n params,\r\n url: AUTH_API_URL + '/user/send-verification-code'\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n return err;\r\n }\r\n}\r\n\r\nexport async function verifyStudentVerificationCode(params) {\r\n const options = {\r\n method: 'POST',\r\n params,\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n url: AUTH_API_URL + '/user/verify-verification-code'\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n return err;\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"section\":\"LoginOTPForm_section__3-cKW\",\"row\":\"LoginOTPForm_row__35lLn\",\"label\":\"LoginOTPForm_label__3i1fx\",\"value__input\":\"LoginOTPForm_value__input__Y-EIs\",\"withIcon\":\"LoginOTPForm_withIcon__1L5_e\",\"withIcon__input\":\"LoginOTPForm_withIcon__input__2pQhc\",\"withIcon__img\":\"LoginOTPForm_withIcon__img__2ZMC8\",\"forgot\":\"LoginOTPForm_forgot__2B8Yk\",\"forgot__title\":\"LoginOTPForm_forgot__title__6oRiY\",\"buttons\":\"LoginOTPForm_buttons__3yAqW\",\"buttons__col\":\"LoginOTPForm_buttons__col__1wcPF\",\"account\":\"LoginOTPForm_account__3yXJQ\",\"account__title\":\"LoginOTPForm_account__title__1XMeM\",\"account__button\":\"LoginOTPForm_account__button__3dQcQ\"};","import { createAxiosInstance } from 'utils/helpers';\r\n\r\nconst initialState = {\r\n segment: 'b2s'\r\n};\r\n\r\nconst SUBMIT_CONTACT_FORM_START = 'SUBMIT_CONTACT_FORM_START';\r\nconst SUBMIT_CONTACT_FORM_SUCCESS = 'SUBMIT_CONTACT_FORM_SUCCESS';\r\nconst SUBMIT_CONTACT_FORM_FAILURE = 'SUBMIT_CONTACT_FORM_FAILURE';\r\nconst SET_SEGMENT = 'SET_SEGMENT';\r\nconst FETCH_SEGMENT = 'FETCH_SEGMENT';\r\nconst TRADE_IN_DISCOUNTED_PRICE = 'TRADE_IN_DISCOUNTED_PRICE';\r\n\r\nexport const submitContactFormStart = () => ({\r\n type: SUBMIT_CONTACT_FORM_START\r\n});\r\n\r\nexport const submitContactFormSuccess = (data) => ({\r\n type: SUBMIT_CONTACT_FORM_SUCCESS,\r\n data\r\n});\r\n\r\nexport const submitContactFormFailure = () => ({\r\n type: SUBMIT_CONTACT_FORM_FAILURE\r\n});\r\n\r\nexport const setSegment = (segment) => ({\r\n type: SET_SEGMENT,\r\n segment\r\n});\r\n\r\nexport const getSegment = () => ({\r\n type: FETCH_SEGMENT\r\n});\r\n\r\nexport const tradeInDiscountedPrice = (data) => ({\r\n type: TRADE_IN_DISCOUNTED_PRICE,\r\n data\r\n});\r\n\r\nexport const handleSubmitContactForm = (form, onSuccess = () => {}, onFailure = () => {}) => {\r\n return async (dispatch) => {\r\n dispatch(submitContactFormStart());\r\n\r\n const instance = createAxiosInstance();\r\n\r\n try {\r\n await instance.post('/contact/create', form);\r\n\r\n dispatch(submitContactFormSuccess());\r\n onSuccess();\r\n } catch (e) {\r\n dispatch(submitContactFormFailure());\r\n onFailure();\r\n }\r\n };\r\n};\r\n\r\nexport default function cart(state = initialState, action) {\r\n switch (action.type) {\r\n case FETCH_SEGMENT:\r\n return JSON.parse(state.segment);\r\n case SET_SEGMENT:\r\n return {\r\n ...state,\r\n segment: action.segment\r\n };\r\n case TRADE_IN_DISCOUNTED_PRICE:\r\n return {\r\n ...state,\r\n tradeInDiscountedPrice: action.data\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"FormHeader_header__1YE8H\",\"header__flex\":\"FormHeader_header__flex__cazYF\",\"header__icon\":\"FormHeader_header__icon__25WOp\",\"header__title\":\"FormHeader_header__title__hhddt\",\"header__circle\":\"FormHeader_header__circle__1o5DB\",\"header__text\":\"FormHeader_header__text__1jvWN\",\"header__logo\":\"FormHeader_header__logo__Q3qpK\",\"header__flexOne\":\"FormHeader_header__flexOne__1knah\",\"header__pointer\":\"FormHeader_header__pointer__9mhxr\",\"header__SingPassVerification__button\":\"FormHeader_header__SingPassVerification__button__21fnO\",\"header__SingPassVerification__text\":\"FormHeader_header__SingPassVerification__text__rZuvh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"afterTradeInWrapper\":\"AfterTradeIn_afterTradeInWrapper__3aZus\",\"tradeInIcon\":\"AfterTradeIn_tradeInIcon__P7m96\",\"howItWorksButton\":\"AfterTradeIn_howItWorksButton__pejix\",\"afterTradeIn\":\"AfterTradeIn_afterTradeIn__-_8IC\",\"title\":\"AfterTradeIn_title__2UdNB\",\"infoButton\":\"AfterTradeIn_infoButton__umBUC\",\"newRate\":\"AfterTradeIn_newRate__3mvD0\",\"removeTradeIn\":\"AfterTradeIn_removeTradeIn__Bm6Kn\",\"removeTradeInIcon\":\"AfterTradeIn_removeTradeInIcon__Zz8VX\",\"tradeInApplied\":\"AfterTradeIn_tradeInApplied__2l3oO\",\"deviceInfo\":\"AfterTradeIn_deviceInfo__10rWw\",\"deviceInfo__price\":\"AfterTradeIn_deviceInfo__price__1PlXG\",\"afterTradeIn_\":\"AfterTradeIn_afterTradeIn___1DXOt\",\"badge\":\"AfterTradeIn_badge__1o5gp\",\"orderSummaryConfirmation\":\"AfterTradeIn_orderSummaryConfirmation__jnTHR\",\"accentBlue\":\"AfterTradeIn_accentBlue__UPQRL\",\"mobile\":\"AfterTradeIn_mobile__3uBBF\",\"desktop\":\"AfterTradeIn_desktop__vhpXD\"};","export default __webpack_public_path__ + \"static/media/close.70c58a93.svg\";","export default __webpack_public_path__ + \"static/media/eye.bb6058ee.svg\";","export default __webpack_public_path__ + \"static/media/eye-off.66d5f93d.svg\";","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Button from 'containers/App/components/Button/Button';\r\n\r\nimport './StickyBottom.scss';\r\n\r\nexport default function StickyBottom({\r\n actionBtnLabel = 'Submit',\r\n actionBtnDisabled,\r\n onSubmit,\r\n showBackBtn = true,\r\n onBack,\r\n isLoading\r\n}) {\r\n return (\r\n <>\r\n
\r\n
\r\n {showBackBtn && onBack()} />}\r\n onSubmit()}\r\n loading={isLoading} />\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nStickyBottom.propTypes = {\r\n actionBtnLabel: PropTypes.string,\r\n actionBtnDisabled: PropTypes.bool,\r\n onSubmit: PropTypes.func,\r\n onBack: PropTypes.func,\r\n isLoading: PropTypes.bool,\r\n showBackBtn: PropTypes.bool\r\n};\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"additionalPromo\":\"AdditionalPromo_additionalPromo__3RJwA\",\"additionalPromo__icon\":\"AdditionalPromo_additionalPromo__icon__1q6C9\",\"additionalPromo__text\":\"AdditionalPromo_additionalPromo__text__3DlXD\",\"additionalPromo__btn\":\"AdditionalPromo_additionalPromo__btn__2A8b5\",\"additionalPromo__btn_rounded\":\"AdditionalPromo_additionalPromo__btn_rounded__4jDei\",\"additionalPromo__btn_add_promo\":\"AdditionalPromo_additionalPromo__btn_add_promo__LXULe\",\"additionalPromo__btn_promo_added\":\"AdditionalPromo_additionalPromo__btn_promo_added__3O2jx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"message\":\"FormMessage_message__616vA\",\"message__logo\":\"FormMessage_message__logo__2aPcb\",\"message__text\":\"FormMessage_message__text__2nHzU\",\"message__row\":\"FormMessage_message__row__iPoE-\",\"message__col\":\"FormMessage_message__col__bys6e\",\"message__lines\":\"FormMessage_message__lines__F-K-M\"};","import React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Button from 'containers/App/components/Button/Button';\r\nimport NumberInput from 'containers/App/components/NumberInput/NumberInput';\r\n\r\nimport { storeUserEvent } from 'api/user';\r\n\r\nimport style from './LoginOTPForm.module.scss';\r\n\r\nconst LoginOTPForm = ({\r\n phone,\r\n setPhone,\r\n submit,\r\n changeForm,\r\n loading\r\n}) => {\r\n const handleSubmit = e => {\r\n e.preventDefault();\r\n submit();\r\n };\r\n\r\n useEffect(() => {\r\n const triggerUserEvent = async () => {\r\n const payload = {\r\n event: 'reset_otp'\r\n };\r\n\r\n await storeUserEvent(payload);\r\n };\r\n\r\n triggerUserEvent();\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n Enter your mobile number\r\n
\r\n
\r\n setPhone(e)}\r\n name='number'\r\n className={style.value__input}/>\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n changeForm('signin')}\r\n type='button'\r\n title={'Login with password'}\r\n className='ignore' />\r\n
\r\n
\r\n
\r\n
Need an account?
\r\n
changeForm('signup')}>sign up
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nLoginOTPForm.propTypes = {\r\n submit: PropTypes.func.isRequired,\r\n changeForm: PropTypes.func.isRequired,\r\n phone: PropTypes.string,\r\n setPhone: PropTypes.func,\r\n loading: PropTypes.bool\r\n};\r\n\r\nexport default LoginOTPForm;\r\n","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport moment from 'moment';\r\nimport { Row, Col, Input, FormFeedback, Modal, ModalHeader, ModalBody } from 'reactstrap';\r\nimport { DatePicker } from 'antd';\r\nimport { useDropzone } from 'react-dropzone';\r\nimport { DeleteTwoTone } from '@ant-design/icons';\r\n\r\nimport { formatDatePickerDate } from 'utils/helpers';\r\nimport { notifType, notify } from 'utils/notifSender';\r\n\r\nimport { storeUserEvent } from 'api/user';\r\nimport {\r\n guarantorInformationFromStateToStore,\r\n updateSupportingDocumentsDatFromStateToStore\r\n} from 'redux/reducers/user';\r\nimport { updateSelectedCartItem } from 'redux/reducers/cart';\r\n\r\nimport UploadFile from 'assets/images/upload-icon.png';\r\nimport { ReactComponent as CrossIcon } from 'assets/images/general/close.svg';\r\n\r\nimport 'screens/SupportingDocuments/SupportingDocuments.scss';\r\n\r\nconst SupportingDocuments = ({ profile }) => {\r\n const dispatch = useDispatch();\r\n const [isEmailValid, setIsEmailValid] = useState(true);\r\n const [studentIDCard, setStudentIDCard] = useState(null);\r\n const [studentVisa, setStudentVisa] = useState(null);\r\n const [studentIDExpiryDate, setStudentIDExpiryDate] = useState(null);\r\n const [studentVisaExpiryDate, setStudentVisaExpiryDate] = useState(null);\r\n const [guarantorName, setGuarantorName] = useState('');\r\n const [guarantorRelation, setGuarantorRelation] = useState('');\r\n const [guarantorEmail, setGuarantorEmail] = useState('');\r\n const [guarantorMobile, setGuarantorMobile] = useState('');\r\n const { supportingDocsUploaded } = useSelector(state => ({ supportingDocsUploaded: state.user.supportingDocsUploaded }));\r\n const { cart } = useSelector((state) => ({ cart: state.cart.fetchedProducts }));\r\n const [isOpenOnImagePreview, setIsOpenOnImagePreview] = useState(false);\r\n const [currentPreviewImageModal, setCurrentPreviewImageModal] = useState(null);\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n const { getRootProps: getStudentIDCardProps, getInputProps: getInputfileStudentIDCardProps } = useDropzone({\r\n accept: {\r\n 'image/jpg': [],\r\n 'image/jpeg': [],\r\n 'image/png': [],\r\n 'application/pdf': []\r\n },\r\n maxSize: 4 * 1024 * 1024,\r\n onDrop: (acceptedFiles, rejectedFiles) => {\r\n if (rejectedFiles.length > 0) {\r\n notify('File size exceeds the limit.', notifType.DANGER, 5000);\r\n } else {\r\n setStudentIDCard(acceptedFiles[0]);\r\n }\r\n }\r\n });\r\n const { getRootProps: getStudentVisaProps, getInputProps: getInputfileStudentVisaProps } = useDropzone({\r\n accept: {\r\n 'image/jpg': [],\r\n 'image/jpeg': [],\r\n 'image/png': [],\r\n 'application/pdf': []\r\n },\r\n maxSize: 4 * 1024 * 1024,\r\n onDrop: (acceptedFiles, rejectedFiles) => {\r\n if (rejectedFiles.length > 0) {\r\n notify('File size exceeds the limit.', notifType.DANGER, 5000);\r\n } else {\r\n setStudentVisa(acceptedFiles[0]);\r\n }\r\n }\r\n });\r\n\r\n const disabledDate = (current) => current && current < moment().endOf('day');\r\n\r\n const triggerUserEvent = async () => {\r\n const payload = {\r\n event: 'documents_upload'\r\n };\r\n\r\n await storeUserEvent(payload);\r\n };\r\n\r\n useEffect(() => {\r\n triggerUserEvent();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (cart.length === 1) {\r\n dispatch(updateSelectedCartItem(cart[0]));\r\n }\r\n }, [dispatch, cart]);\r\n\r\n useEffect(() => {\r\n dispatch(updateSupportingDocumentsDatFromStateToStore('studentIDCard', studentIDCard));\r\n dispatch(updateSupportingDocumentsDatFromStateToStore('studentVisa', studentVisa));\r\n\r\n if (studentIDExpiryDate !== null) {\r\n dispatch(updateSupportingDocumentsDatFromStateToStore('studentIDExpiryDate', formatDatePickerDate(studentIDExpiryDate)));\r\n }\r\n\r\n if (studentVisaExpiryDate !== null) {\r\n dispatch(updateSupportingDocumentsDatFromStateToStore('studentVisaExpiryDate', formatDatePickerDate(studentVisaExpiryDate)));\r\n }\r\n }, [dispatch, studentIDCard, studentVisa, studentIDExpiryDate, studentVisaExpiryDate, supportingDocsUploaded]);\r\n\r\n useEffect(() => {\r\n dispatch(guarantorInformationFromStateToStore('guarantorName', guarantorName));\r\n dispatch(guarantorInformationFromStateToStore('guarantorRelation', guarantorRelation));\r\n\r\n if (isEmailValid) {\r\n dispatch(guarantorInformationFromStateToStore('guarantorEmail', guarantorEmail));\r\n } else {\r\n dispatch(guarantorInformationFromStateToStore('guarantorEmail', ''));\r\n }\r\n\r\n dispatch(guarantorInformationFromStateToStore('guarantorMobile', guarantorMobile));\r\n }, [dispatch, guarantorName, guarantorRelation, guarantorEmail, guarantorMobile, isEmailValid]);\r\n\r\n const onStudentIdCardExpiryDate = date => setStudentIDExpiryDate(date);\r\n\r\n const onStudentVisaExpiryDate = date => setStudentVisaExpiryDate(date);\r\n\r\n const removeTheCurrentStoreObjectOnSupportDocument = (file, fileType) => {\r\n // eslint-disable-next-line default-case\r\n switch (fileType) {\r\n case 'studentIDCard':\r\n setStudentIDCard(null);\r\n dispatch(updateSupportingDocumentsDatFromStateToStore('studentIDCard', null));\r\n break;\r\n case 'studentVisa':\r\n setStudentVisa(null);\r\n dispatch(updateSupportingDocumentsDatFromStateToStore('studentVisa', null));\r\n break;\r\n }\r\n };\r\n\r\n const renderStudentIDCardORVisaPreview = (file, fileType) => {\r\n if (file) {\r\n const isImage = file.type.startsWith('image/');\r\n const preview = isImage ? (\r\n
\r\n {file.name} openImagePreviewModalBox(URL.createObjectURL(file))} />\r\n removeTheCurrentStoreObjectOnSupportDocument(file, fileType)} />\r\n
\r\n ) : (\r\n
{file.name}
\r\n );\r\n\r\n return preview;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const closePreviewImage = () => {\r\n setIsOpenOnImagePreview(false);\r\n setCurrentPreviewImageModal(null);\r\n };\r\n\r\n const openImagePreviewModalBox = (image) => {\r\n setIsOpenOnImagePreview(true);\r\n setCurrentPreviewImageModal(image);\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {!supportingDocsUploaded &&\r\n \r\n {(profile?.is_student && !profile?.pass_proof_of_expiry_required) &&\r\n !(isMobile)\r\n ? \r\n
\r\n
\r\n
\r\n Upload a photo of your Student ID card\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n

{studentIDCard ? studentIDCard.name : <>Click to upload or Choose file or drag here}

\r\n
\r\n

\r\n PDF, PNG OR JPG (max. 800x400px - max: 4mb)\r\n

\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Preview of your student ID card\r\n

\r\n {renderStudentIDCardORVisaPreview(studentIDCard, 'studentIDCard')}\r\n
\r\n
\r\n \r\n : <>\r\n {(profile?.is_student && !profile?.pass_proof_of_expiry_required) &&\r\n <>\r\n \r\n
\r\n
\r\n
\r\n Upload a photo of your Student ID card\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n

{studentIDCard ? studentIDCard.name : <>Click to upload or Choose file or drag here}

\r\n
\r\n

\r\n PDF, PNG OR JPG (max. 800x400px - max: 4mb)\r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n {studentIDCard &&\r\n \r\n

\r\n Preview of your student ID Card\r\n

\r\n
\r\n {renderStudentIDCardORVisaPreview(studentIDCard, 'studentIDCard')}\r\n
\r\n }\r\n }\r\n\r\n {(profile?.is_student && !profile?.pass_proof_of_expiry_required) &&\r\n \r\n
\r\n \r\n
\r\n }\r\n\r\n {profile?.pass_proof_of_expiry_required &&\r\n (!isMobile)\r\n ? \r\n
\r\n
\r\n
\r\n Upload a photo of your visa\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n

{studentVisa ? studentVisa.name : <>Click to upload or Choose file or drag here}

\r\n
\r\n

\r\n PDF, PNG OR JPG (max. 800x400px - max: 4mb)\r\n

\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Preview of your visa\r\n

\r\n {renderStudentIDCardORVisaPreview(studentVisa, 'studentVisa')}\r\n
\r\n
\r\n \r\n : <>\r\n {profile?.pass_proof_of_expiry_required &&\r\n <>\r\n \r\n
\r\n
\r\n
\r\n Upload a photo of your visa\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n

{studentVisa ? studentVisa.name : <>Click to upload or Choose file or drag here}

\r\n
\r\n

\r\n PDF, PNG OR JPG (max. 800x400px - max: 4mb)\r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n {studentVisa &&\r\n \r\n

\r\n Preview of your visa\r\n

\r\n
\r\n {renderStudentIDCardORVisaPreview(studentVisa, 'studentVisa')}\r\n
\r\n }\r\n }\r\n\r\n {profile?.pass_proof_of_expiry_required &&\r\n \r\n
\r\n \r\n
\r\n }\r\n
}\r\n\r\n {(supportingDocsUploaded) &&\r\n \r\n \r\n

\r\n Guarantor Information\r\n

\r\n \r\n \r\n

\r\n Guarantor Name\r\n

\r\n
\r\n setGuarantorName(e.target.value)} />\r\n
\r\n \r\n \r\n

\r\n Guarantor Relationship\r\n

\r\n
\r\n setGuarantorRelation(e.target.value)} />\r\n
\r\n \r\n \r\n

\r\n Guarantor Email\r\n

\r\n
\r\n {\r\n setGuarantorEmail(e.target.value);\r\n const isValid = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(e.target.value);\r\n\r\n setIsEmailValid(isValid);\r\n }}\r\n invalid={!isEmailValid}\r\n noValidate={true} />\r\n Invalid email format\r\n
\r\n \r\n \r\n

\r\n Guarantor Mobile\r\n

\r\n
\r\n setGuarantorMobile(e.target.value)} />\r\n
\r\n \r\n
}\r\n
\r\n
\r\n \r\n \r\n Preview\r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nSupportingDocuments.propTypes = {\r\n profile: PropTypes.object\r\n};\r\n\r\nexport default SupportingDocuments;\r\n","import PropTypes from 'prop-types';\r\nimport React, { useState, useEffect } from 'react';\r\nimport { connect, useSelector, useDispatch } from 'react-redux';\r\n// import axios from 'axios';\r\nimport Cookies from 'js-cookie';\r\nimport ReactGA from 'react-ga4';\r\nimport * as FS from '@fullstory/browser';\r\nimport { useHistory, useLocation, Redirect } from 'react-router-dom';\r\n\r\nimport { ROUTES } from 'config/constants';\r\nimport { addItemsToCart, checkoutRules, getUserCart } from 'api/cart';\r\nimport { clearCart } from 'redux/reducers/cart';\r\nimport {\r\n handleGetOTPForLogin,\r\n handleLogin,\r\n handleRegistration,\r\n handleHideOTP,\r\n handleLoginWithOTP,\r\n handleGetStudentVerificationOTP,\r\n handleVerifyStudentVerificationCode,\r\n handleAuthorizeSingpass\r\n} from 'redux/reducers/auth';\r\nimport { updateAuthenticationDataFromStateToStore } from 'redux/reducers/user';\r\nimport { checkOTPCode, getOTPForForgotPassword, passwordReset, storeUserEvent } from 'api/user';\r\nimport { trackFreshChatUser, trackKlaviyoEvent } from 'api/tracking';\r\n\r\nimport { useQuery, isStudentDomain } from 'utils/helpers';\r\nimport { notifType, notify } from 'utils/notifSender';\r\n\r\nimport LoginForm from '../App/components/LoginModal/elements/LoginForm/LoginForm';\r\nimport SignUpForm from '../App/components/LoginModal/elements/SignUpForm/SignUpForm';\r\nimport LoginOTPForm from '../App/components/LoginModal/elements/LoginOTPForm/LoginOTPForm';\r\nimport OTPForm from '../App/components/LoginModal/elements/OTPForm/OTPForm';\r\nimport ResetPassword from '../App/components/LoginModal/elements/ResetPassword/ResetPassword';\r\nimport FullscreenLoader from '../../components/FullscreenLoader/FullscreenLoader';\r\nimport CartLayout from 'layouts/CartLayout/CartLayout';\r\nimport SingPassScreen from '../../screens/SingPass/SingPassScreen';\r\nimport SingpassResultContainer from 'containers/SingpassResult/SingpassResultContainer';\r\nimport SupportingDocuments from 'screens/Profile/components/SupportingDocuments/SupportingDocuments';\r\nimport SingpassManualFormContainer from '../../containers/SingpassManualForm/SingpassManualFormContainer';\r\nimport Button from 'containers/App/components/Button/Button';\r\n\r\nimport RetrieveMyInfo from 'assets/images/RetrieveMyInfo.svg';\r\nimport { getUserIP } from '../../api/user';\r\n\r\nconst CheckoutStart = ({\r\n handleLogin,\r\n isAuthenticating,\r\n handleRegistration,\r\n handleGetOTPForLogin,\r\n showOTP,\r\n handleHideOTP,\r\n handleLoginWithOTP,\r\n signUp,\r\n clearCart,\r\n profile,\r\n isReset,\r\n resetEmail,\r\n toggleModal,\r\n handleGetStudentVerificationOTP,\r\n handleVerifyStudentVerificationCode\r\n}) => {\r\n const query = useQuery();\r\n const dispatch = useDispatch();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const [form, setForm] = useState('');\r\n const [loginWithPhone, setLoginWithPhone] = useState('');\r\n const [timer, setTimer] = useState(90);\r\n const [loading, setLoading] = useState(false);\r\n const [forgotOtp, setForgotOtp] = useState(false);\r\n const [emailAddress, setEmailAddress] = useState(isReset ? resetEmail : '');\r\n const [otp, setOtp] = useState('');\r\n const [lastnumber, setLastnumber] = useState('');\r\n const [ip, setIP] = useState(null);\r\n const [doRegister, setDoRegister] = useState(false);\r\n const [doLogin, setDoLogin] = useState(false);\r\n const [, setStudentVerificationOtp] = useState('');\r\n const [verificationCode, setVerificationCode] = useState('');\r\n const [signupPayload, setSignupPayload] = useState({});\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [, setMessageModalMessage] = useState({ type: '', message: '' });\r\n const [, setMessageModalOpen] = useState(false);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const products = localStorage.getItem('products') ? JSON.parse(localStorage.getItem('products')) : [];\r\n let isStudent = location.state?.isStudent || false;\r\n const [userCart, setUserCart] = useState([]);\r\n const { authData } = useSelector(state => ({ authData: state.user.authData }));\r\n const { includeNoa } = useSelector(state => ({ includeNoa: state.auth.includeNoa }));\r\n const { otpInput } = useSelector(state => ({ otpInput: state.user.otpInput }));\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n\r\n const handleLoginWithPhone = e => {\r\n setLoginWithPhone(e);\r\n\r\n if (e.length > 2) {\r\n setLastnumber(e.slice(-2));\r\n }\r\n };\r\n\r\n const handleChangeForm = e => setForm(e);\r\n\r\n const onForgotPassword = (form, email = null) => {\r\n if (form === 'signup') {\r\n setForm(form);\r\n } else {\r\n submitForgotPassword(email);\r\n }\r\n };\r\n\r\n const submitLogin = async (params) => {\r\n handleLogin({\r\n ...params,\r\n gaSessionId: Cookies.get('_ga') || 'no-session',\r\n trueIp: ip || 'no-ip',\r\n onSuccess: () => {\r\n setDoLogin(true);\r\n\r\n if (window.location.pathname === ROUTES.PRODUCTS) {\r\n window.location.reload();\r\n } else {\r\n redirectToScreen();\r\n }\r\n }\r\n });\r\n };\r\n\r\n const submitSignUp = async (params) => {\r\n setLoading(true);\r\n isStudent = isStudentDomain(params.email);\r\n\r\n if (isStudent) {\r\n setSignupPayload(params);\r\n setEmailAddress(params.email);\r\n getVerificationCode(params.email);\r\n } else {\r\n doRegistration(params);\r\n }\r\n };\r\n\r\n const doRegistration = async (params) => {\r\n handleRegistration({\r\n ...params,\r\n gaSessionId: Cookies.get('_ga') || 'no-session',\r\n trueIp: ip || 'no-ip',\r\n onSuccess: () => {\r\n setDoRegister(true);\r\n redirectToScreen();\r\n },\r\n onFailure: () => {\r\n setLoading(false);\r\n notify('Please try again.', notifType.DANGER);\r\n }\r\n });\r\n };\r\n\r\n const getVerificationCode = async (email) => {\r\n handleGetStudentVerificationOTP({\r\n email: email,\r\n onSuccess: () => {\r\n setForm('studentVerification');\r\n setStudentVerificationOtp(true);\r\n setLoading(false);\r\n },\r\n onFailure: () => {\r\n setLoading(false);\r\n notify('Invalid email used.', notifType.DANGER);\r\n }\r\n });\r\n };\r\n\r\n const handleSubmitVerificationCode = async () => {\r\n setLoading(true);\r\n\r\n if (verificationCode === '') {\r\n notify('Please enter the OTP code.', notifType.DANGER);\r\n }\r\n\r\n handleVerifyStudentVerificationCode({\r\n code: verificationCode,\r\n email: emailAddress,\r\n onSuccess: () => {\r\n doRegistration(signupPayload);\r\n setSignupPayload('');\r\n setVerificationCode('');\r\n },\r\n onFailure: () => {\r\n setLoading(false);\r\n notify('Invalid OTP code used..', notifType.DANGER);\r\n }\r\n });\r\n };\r\n\r\n const submitForgotPassword = async (email) => {\r\n setLoading(true);\r\n setEmailAddress(email);\r\n setOtp('');\r\n setTimer(90);\r\n\r\n getOTPForForgotPassword(email,\r\n () => {\r\n setForgotOtp(true);\r\n setForm('reset');\r\n },\r\n () => {\r\n notify('Invalid email used.', notifType.DANGER);\r\n });\r\n setLoading(false);\r\n };\r\n\r\n const handleSubmitLoginWithPhone = async () => {\r\n if (loginWithPhone === '') {\r\n notify('Please enter your mobile number.', notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n setOtp('');\r\n handleGetOTPForLogin(loginWithPhone);\r\n };\r\n\r\n const handleShowLoginWithOTP = () => {\r\n setForm('loginOtp');\r\n handleHideOTP();\r\n };\r\n\r\n const handleResendCode = () => {\r\n if (timer > 0) {\r\n notify(`Error ! after ${timer} seconds you can resend SMS again`, notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n setOtp('');\r\n\r\n if (form === 'reset') {\r\n getOTPForForgotPassword(emailAddress);\r\n } else {\r\n handleGetOTPForLogin(loginWithPhone);\r\n }\r\n\r\n setTimer(90);\r\n };\r\n\r\n const handleSubmitOtp = async (type) => {\r\n if (type === 'login' && !isReset) {\r\n handleLoginWithOTP({ otp });\r\n setOtp('');\r\n }\r\n\r\n if (isReset || type === 'forgot' || (forgotOtp && form === 'reset')) {\r\n setLoading(true);\r\n\r\n try {\r\n await checkOTPCode(otp,\r\n () => {\r\n setForgotOtp(false);\r\n\r\n if (isReset) {\r\n setForm('reset');\r\n }\r\n },\r\n () => {\r\n notify('The OTP code is incorrect.', notifType.DANGER);\r\n });\r\n } catch (error) {\r\n if (error.response.status) {\r\n notify('The OTP code is incorrect.', notifType.DANGER);\r\n }\r\n }\r\n\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const submitResetPassword = async password => {\r\n setLoading(true);\r\n\r\n try {\r\n await passwordReset(\r\n {\r\n otp_code: otp,\r\n password,\r\n password_confirmation: password\r\n },\r\n () => {\r\n onPasswordResetSuccess();\r\n },\r\n () => {\r\n onPasswordResetFailure();\r\n }\r\n );\r\n } catch (error) {\r\n if (error.response.status) {\r\n onPasswordResetFailure();\r\n }\r\n }\r\n\r\n setLoading(false);\r\n };\r\n\r\n const onPasswordResetSuccess = () => {\r\n notify('Password changed successfully.', notifType.SUCCESS);\r\n setForm('signin');\r\n setForgotOtp(false);\r\n\r\n if (isReset) {\r\n toggleModal();\r\n }\r\n\r\n setOtp('');\r\n };\r\n\r\n const onPasswordResetFailure = () => notify('Please try again.', notifType.DANGER);\r\n\r\n useEffect(() => {\r\n const forgot = query.get('forgot');\r\n\r\n if (forgot && forgot === 'true') {\r\n handleChangeForm('forgot');\r\n }\r\n }, [query]);\r\n\r\n useEffect(() => {\r\n if (isReset) {\r\n setForm('loginOtp');\r\n }\r\n }, [isReset]);\r\n\r\n useEffect(() => {\r\n if (showOTP || forgotOtp) {\r\n const time = setTimeout(() => {\r\n if (timer > 0) {\r\n setTimer(timer - 1);\r\n }\r\n }, 1000);\r\n\r\n return () => clearTimeout(time);\r\n } else {\r\n setTimer(90);\r\n }\r\n }, [forgotOtp, showOTP, timer]);\r\n\r\n useEffect(() => {\r\n if (signUp) {\r\n setForm('signup');\r\n }\r\n }, [signUp]);\r\n\r\n const getData = async () => {\r\n try {\r\n const res = await getUserIP();\r\n\r\n setIP(res);\r\n } catch (error) {\r\n //\r\n }\r\n };\r\n\r\n const handleUrlChange = () => {\r\n switch (location.pathname) {\r\n case ROUTES.SINGPASS:\r\n setForm('singpass');\r\n break;\r\n case ROUTES.DOCUMENTSPROOF:\r\n if (profile?.is_student) {\r\n if (profile?.pass_proof_of_expiry_required) {\r\n setForm('documentproof');\r\n } else {\r\n history.push(ROUTES.ORDER_SUMMARY);\r\n }\r\n } else {\r\n if (profile?.pass_proof_of_expiry_required) {\r\n setForm('documentproof');\r\n } else {\r\n history.push(ROUTES.ORDER_SUMMARY);\r\n }\r\n }\r\n\r\n break;\r\n case ROUTES.SINGPASS_RESULT:\r\n setForm('singpassresult');\r\n break;\r\n case ROUTES.SINGPASS_MANUALL_FORM:\r\n setForm('singpassmanuall');\r\n break;\r\n default:\r\n setForm('signup');\r\n break;\r\n }\r\n };\r\n\r\n useEffect(() => getData(), []);\r\n\r\n useEffect(() => {\r\n handleUrlChange();\r\n const unlisten = history.listen(handleUrlChange);\r\n\r\n return () => unlisten();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [location.pathname]);\r\n\r\n const getRentalPeriodId = (product) => {\r\n const userType = 'b2c';\r\n\r\n const durationTime = product?.rental_period?.find(rp => rp.id === product?.selectedRentalPeriod?.id)?.duration_time;\r\n const rentalPeriod = product?.rental_period?.find(rp => rp.duration_time === durationTime && rp.user_type === userType);\r\n\r\n return rentalPeriod?.id ?? '';\r\n };\r\n\r\n const sendProductsToBE = async () => {\r\n const makeProducts = [];\r\n\r\n for (const product of products) {\r\n const selectedRentalPeriodId = getRentalPeriodId(product);\r\n\r\n makeProducts.push(\r\n {\r\n is_purchase: false,\r\n product_attribute_value_id: product.selectedStorage ? product.selectedStorage.value\r\n : (\r\n product.attributes.specifications.values[0].id ||\r\n product.attributes.inside_box.values[0].id\r\n ),\r\n quantity: 1,\r\n rental_period_id: selectedRentalPeriodId,\r\n rental_period_duration: product?.rental_period?.find(rp => rp.id === selectedRentalPeriodId)?.duration_time,\r\n product_id: product.id,\r\n color_id: product.selectedColor.value,\r\n deal_id: null\r\n }\r\n );\r\n }\r\n\r\n try {\r\n await addItemsToCart(makeProducts);\r\n\r\n const resp = await getUserCart();\r\n\r\n if (profile?.singpass_status === 'verified') {\r\n if (resp?.data?.products?.length === 0) {\r\n notify(`Product${makeProducts.length > 1 ? 's' : ''} added to cart successfuly`, notifType.SUCCESS);\r\n }\r\n }\r\n\r\n handleRoute();\r\n } catch (err) {\r\n //\r\n }\r\n };\r\n\r\n const handleRoute = () => {\r\n if (profile?.singpass_status === 'verified') {\r\n validateCheckout();\r\n } else {\r\n setIsLoading(false);\r\n setForm('singpass');\r\n }\r\n };\r\n\r\n const validateCheckout = async () => {\r\n const resp = await checkoutRules();\r\n\r\n setIsLoading(true);\r\n\r\n if (resp?.status === 204) {\r\n // if (profile?.is_student) {\r\n // if (profile?.pass_proof_of_expiry_required) {\r\n // history.push(ROUTES.DOCUMENTSPROOF);\r\n // } else {\r\n // history.push(ROUTES.ORDER_SUMMARY);\r\n // }\r\n // } else {\r\n // history.push(ROUTES.ORDER_SUMMARY);\r\n // }\r\n history.push(ROUTES.ORDER_SUMMARY);\r\n } else {\r\n notify(resp?.data?.message?.message, notifType.DANGER, 5000);\r\n history.push(ROUTES.CART);\r\n }\r\n };\r\n\r\n const redirectToScreen = () => {\r\n setIsLoading(true);\r\n\r\n if (products.length !== 0) {\r\n sendProductsToBE();\r\n } else {\r\n checkUserCart();\r\n }\r\n };\r\n\r\n const checkUserCart = async () => {\r\n const resp = await getUserCart();\r\n\r\n if (profile.singpass_status === 'verified' && !profile?.singpassExpired) {\r\n if (resp?.data?.products?.length > 0) {\r\n setUserCart(resp?.data?.products);\r\n validateCheckout();\r\n } else {\r\n setIsLoading(false);\r\n history.push(ROUTES.PRODUCTS);\r\n }\r\n } else {\r\n setIsLoading(false);\r\n setForm('singpass');\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (profile.id && doRegister) {\r\n ReactGA.event('user_register', {\r\n category: 'user_auth',\r\n label: 'user_register',\r\n value: profile.id,\r\n user_ID: profile.id,\r\n fp: Cookies.get('_fp'),\r\n timestamp: new Date()\r\n });\r\n\r\n redirectToScreen();\r\n\r\n FS.event('User registered', {\r\n user_id: profile.id.toString()\r\n });\r\n\r\n trackKlaviyoEvent('identify', profile);\r\n\r\n trackFreshChatUser('identify', profile);\r\n }\r\n\r\n if (profile.id && doLogin) {\r\n ReactGA.event('user_login', {\r\n category: 'user_auth',\r\n label: 'user_login',\r\n value: profile.id,\r\n user_ID: profile.id,\r\n fp: Cookies.get('_fp'),\r\n timestamp: new Date()\r\n });\r\n\r\n redirectToScreen();\r\n\r\n FS.event('User login', {\r\n user_id: profile.id.toString()\r\n });\r\n\r\n trackKlaviyoEvent('identify', profile);\r\n\r\n trackFreshChatUser('identify', profile);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [profile, doRegister, doLogin, clearCart, history]);\r\n\r\n const triggerLoginSubmitEvent = () => {\r\n setLoading(true);\r\n handleLogin({\r\n email: authData.email,\r\n password: authData.password,\r\n gaSessionId: Cookies.get('_ga') || 'no-session',\r\n trueIp: ip || 'no-ip',\r\n onSuccess: () => {\r\n setDoLogin(true);\r\n\r\n if (products.length !== 0) {\r\n sendProductsToBE();\r\n }\r\n\r\n if (window.location.pathname === ROUTES.HOME) {\r\n dispatch(updateAuthenticationDataFromStateToStore({}));\r\n window.location.reload();\r\n }\r\n },\r\n onFailure: () => {\r\n setLoading(false);\r\n notify('Please try again.', notifType.DANGER);\r\n }\r\n });\r\n setTimeout(() => setLoading(false), [5000]);\r\n };\r\n\r\n const triggerRegistrationSubmitEvent = () => {\r\n setLoading(true);\r\n\r\n setLoading(true);\r\n isStudent = isStudentDomain(authData.email);\r\n\r\n if (isStudent) {\r\n setSignupPayload(authData.email);\r\n setEmailAddress(authData.email);\r\n getVerificationCode(authData.email);\r\n dispatch(updateAuthenticationDataFromStateToStore({\r\n email: authData.email,\r\n password: authData.password,\r\n confirmPassword: authData.confirmPassword\r\n }));\r\n } else {\r\n handleRegistration({\r\n email: authData.email,\r\n password: authData.password,\r\n confirmPassword: authData.confirmPassword,\r\n gaSessionId: Cookies.get('_ga') || 'no-session',\r\n trueIp: ip || 'no-ip',\r\n onSuccess: () => {\r\n setDoRegister(true);\r\n\r\n if (products.length !== 0) {\r\n sendProductsToBE();\r\n }\r\n\r\n dispatch(updateAuthenticationDataFromStateToStore({}));\r\n },\r\n onFailure: () => {\r\n setLoading(false);\r\n notify('Please try again.', notifType.DANGER);\r\n }\r\n });\r\n setTimeout(() => {\r\n setLoading(false);\r\n }, [5000]);\r\n }\r\n };\r\n\r\n const triggerOTPInputSubmitEvent = () => {\r\n setLoading(true);\r\n\r\n if (otpInput.otp === '') {\r\n notify('Please enter the OTP code.', notifType.DANGER);\r\n }\r\n\r\n handleVerifyStudentVerificationCode({\r\n code: otpInput.otp,\r\n email: otpInput.email,\r\n onSuccess: () => {\r\n if (isMobile) {\r\n doRegistration({\r\n email: authData.email,\r\n password: authData.password,\r\n confirmPassword: authData.confirmPassword\r\n });\r\n } else {\r\n doRegistration(signupPayload);\r\n }\r\n\r\n setSignupPayload('');\r\n setVerificationCode('');\r\n },\r\n onFailure: () => {\r\n setLoading(false);\r\n notify('Invalid OTP code used..', notifType.DANGER);\r\n }\r\n });\r\n setTimeout(() => {\r\n setLoading(false);\r\n }, [5000]);\r\n };\r\n\r\n const onAuthorizedSingpass = redirectUrl => {\r\n window.location.href = redirectUrl;\r\n };\r\n\r\n const onRejectSingpassAuthorization = includeNoa => {\r\n setIsLoading(false);\r\n\r\n if (!includeNoa) {\r\n setMessageModalMessage({ type: 'failed', message: 'Unable to retrieve your information from Singpass.' });\r\n } else {\r\n setMessageModalMessage({\r\n type: 'failed',\r\n message: `\r\n We are sorry, you are not eligible for our services at the moment.\r\n If you feel that this is a mistake or to better understand our policies\r\n please feel free to contact us at support@cinch.sg or +65 8168-8604.\r\n`\r\n });\r\n }\r\n\r\n setMessageModalOpen(true);\r\n };\r\n\r\n const onRetrieveInfo = () => {\r\n localStorage.removeItem('notificationplacedonetime');\r\n setIsLoading(!isLoading);\r\n\r\n const payload = {\r\n event: 'singpass_attempt'\r\n };\r\n\r\n storeUserEvent(payload);\r\n\r\n dispatch(handleAuthorizeSingpass({ include_noa: includeNoa }, onAuthorizedSingpass, () => onRejectSingpassAuthorization(includeNoa)));\r\n };\r\n\r\n const backToTheCart = () => history.push(ROUTES.CART);\r\n\r\n return (\r\n <>\r\n \r\n {(form === 'singpass' || form === 'documentproof' || form === 'singpassresult' || form === 'singpassmanuall')\r\n ?
\r\n {profile?.singpass_status === 'rejected' && }\r\n {(form === 'singpass') &&\r\n }\r\n {(form === 'documentproof' && (profile?.pass_proof_of_expiry_required || profile?.is_student)) &&\r\n }\r\n {form === 'singpassresult' &&\r\n \r\n }\r\n {form === 'singpassmanuall' &&\r\n \r\n }\r\n
\r\n :
\r\n {isLoading && }\r\n {form === 'signin' &&\r\n \r\n }\r\n {form === 'signup' &&\r\n }\r\n\r\n {(form === 'loginOtp' && !showOTP && !isReset) &&\r\n }\r\n {form === 'reset' && !forgotOtp &&\r\n }\r\n {form === 'reset' && forgotOtp &&\r\n }\r\n {form === 'studentVerification' &&\r\n }\r\n
}\r\n \r\n {(\r\n isMobile &&\r\n location.pathname !== ROUTES.DOCUMENTSPROOF &&\r\n location.pathname !== ROUTES.SINGPASS_MANUALL_FORM &&\r\n location.pathname !== ROUTES.SINGPASS_RESULT &&\r\n (profile?.singpass_status !== 'verified' || profile?.singpassExpired)\r\n ) &&\r\n
\r\n
\r\n {(form !== 'singpass') &&\r\n \r\n Back\r\n }\r\n {(form === 'signin') && Sign In}\r\n\r\n {(form === 'signup') && Sign Up}\r\n\r\n {(form === 'studentVerification') && Submit}\r\n\r\n {(form === 'reset' && forgotOtp) && handleSubmitOtp()}>Submit}\r\n\r\n {(form === 'reset' && !forgotOtp) && submitResetPassword(authData.password)}>Submit}\r\n\r\n {(form === 'singpass') &&\r\n
\r\n Retrieve My Info on SingPass\r\n
}\r\n
\r\n
}\r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = ({ cart, auth }) => {\r\n const { products, product } = cart;\r\n const { isAuthenticating, showOTP, signUp, profile } = auth;\r\n\r\n return {\r\n products: JSON.parse(products),\r\n isAuthenticating,\r\n showOTP,\r\n signUp,\r\n product,\r\n profile\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n handleLogin: ({\r\n email,\r\n password,\r\n isRemember,\r\n gaSessionId,\r\n trueIp,\r\n onSuccess\r\n }) => {\r\n dispatch(handleLogin({\r\n email,\r\n password,\r\n isRemember,\r\n gaSessionId,\r\n trueIp,\r\n onSuccess\r\n }));\r\n },\r\n handleRegistration: ({\r\n email,\r\n password,\r\n confirmPassword,\r\n subscriptionAcknowledge,\r\n gaSessionId,\r\n trueIp,\r\n onSuccess,\r\n onFailure\r\n }) => {\r\n dispatch(handleRegistration({\r\n email,\r\n password,\r\n confirmPassword,\r\n subscriptionAcknowledge,\r\n gaSessionId,\r\n trueIp,\r\n onSuccess,\r\n onFailure\r\n }));\r\n },\r\n handleGetOTPForLogin: (phone) => dispatch(handleGetOTPForLogin({ phone })),\r\n handleHideOTP: () => { dispatch(handleHideOTP()); },\r\n handleLoginWithOTP: ({ otp }) => { dispatch(handleLoginWithOTP({ otp })); },\r\n clearCart: () => dispatch(clearCart()),\r\n handleGetStudentVerificationOTP: ({ email, onSuccess, onFailure }) => dispatch(handleGetStudentVerificationOTP({ email, onSuccess, onFailure })),\r\n handleVerifyStudentVerificationCode: ({ code, email, onSuccess, onFailure }) => dispatch(handleVerifyStudentVerificationCode({ code, email, onSuccess, onFailure }))\r\n };\r\n};\r\n\r\nCheckoutStart.propTypes = {\r\n isAuthenticating: PropTypes.bool.isRequired,\r\n handleLogin: PropTypes.func.isRequired,\r\n handleRegistration: PropTypes.func.isRequired,\r\n handleGetOTPForLogin: PropTypes.func,\r\n showOTP: PropTypes.bool,\r\n handleHideOTP: PropTypes.func,\r\n handleLoginWithOTP: PropTypes.func,\r\n signUp: PropTypes.bool,\r\n clearCart: PropTypes.func.isRequired,\r\n product: PropTypes.any,\r\n profile: PropTypes.any,\r\n isReset: PropTypes.bool,\r\n resetEmail: PropTypes.string,\r\n toggleModal: PropTypes.func,\r\n handleGetStudentVerificationOTP: PropTypes.func,\r\n handleVerifyStudentVerificationCode: PropTypes.func\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CheckoutStart);\r\n","import React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useLocation, useHistory } from 'react-router-dom';\r\nimport { connect, useDispatch } from 'react-redux';\r\nimport { isEmpty } from 'underscore';\r\n\r\nimport { ROUTES } from 'config/constants';\r\n\r\nimport { handleFetchAddress } from 'redux/reducers/user';\r\n\r\nimport CheckoutStart from './CheckoutStart';\r\n\r\nimport { getAuthToken } from 'utils/helpers';\r\n\r\nimport './styles.scss';\r\n\r\nconst CheckoutContainer = ({ isAuthed, profile }) => {\r\n const dispatch = useDispatch();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const previousUrl = document.referrer;\r\n const currentlySelectedCartItem = JSON.parse(localStorage.getItem('currentlySelectedCartItem'));\r\n\r\n useEffect(() => {\r\n window.document.title = 'Checkout';\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (getAuthToken() && !isEmpty(currentlySelectedCartItem)) {\r\n if (location.pathname === ROUTES.ORDER_SUMMARY) dispatch(handleFetchAddress());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n if (\r\n (location.pathname === ROUTES.SINGPASS) ||\r\n (location.pathname === ROUTES.SINGPASS_RESULT) ||\r\n (location.pathname === ROUTES.DOCUMENTSPROOF) ||\r\n (location.pathname === ROUTES.SINGPASS_MANUALL_FORM)\r\n ) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n } else if (location.pathname === ROUTES.SIGN_UP) {\r\n if (isAuthed) {\r\n if (profile?.singpass_status === 'verified' && !profile?.singpassExpired) {\r\n previousUrl === ROUTES.CART ? history.push(ROUTES.ORDER_SUMMARY) : history.push(ROUTES.CART);\r\n } else {\r\n history.push(ROUTES.SINGPASS);\r\n }\r\n } else {\r\n return ;\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nCheckoutContainer.propTypes = {\r\n isAuthed: PropTypes.bool,\r\n profile: PropTypes.object\r\n};\r\n\r\nconst mapStateToProps = ({ auth }) => {\r\n const { isAuthed } = auth;\r\n\r\n return { isAuthed };\r\n};\r\n\r\nexport default connect(mapStateToProps)(CheckoutContainer);\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAsCAYAAADxRjE/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAY4SURBVHgBzVlNbBNHFH7743VICI1ITGRqigNVI9WlgINE6QGcAzgHgipoVDWoFUGiPVXi0lulGKmX3jn1AIlQ6cGFQ8uFlir8tGAQadOkSQsSjQkoJDgmIakTe7M703lj77J27cTrJMSfZK1nZ3++/eZ77+3OACwCSqnANtYfGNvcPqOd5xzrPrBeo8B9FkTBAyYnJ2s0AscogfcEUdhOKdTACkMQYAoo9FGg3a7amm5BEGje43J34BOPjU0EJMVxRhIlr8NRAaIosgsuKsCSwe4NhBDQNBU0fT6qq/PH3W7XVeyCQqQ54dizY7Ikn3E6K0GSJFgt6LoGqdQcUJ10uFzZqmd57OHYWEOlY01vRUVVDaq72iBEh2Rydkqfn/PX19cPG6NtMsOhUQSl0+FwlgVhhChKIMtKjSg5z4JFYJPdyMhIgyzLHzscCpQTkI8givvu3Pl7vbGPk0Yvs4DbIUnlobAVaAlJkuG1hg2HIKO2aHQIkrxdEFYv8BaCIIiYP7yhUOgFafRzuYNlQoGR5v+5tExp0d+0u9nhcOzDoSg36LoO8/Op6+uqq64yUK40e4LylzqTMzD+uKxprxBYClKpFDwZfQyqmoK11eugttYFTqcTVgKmF0rNzfF4DG79eh1GGeFcvNH4JjTt2g3V7CGWijS9ELNyCAyl6YlPPwO7uHfvL4jcvMZV3rjRA96GLaAoTq52dPgfuH9viKu/P3gQ6upcsBToOr4Fhpg9Ok3Sgl2hUdlrPT9yKyApJG3FW9t2ctI3b16HS99fgCNt7UtS3Hj3wG3JqeJaz0+gMM+2HjpSkAzaAx8KSX/7zVnuc2/DVvZAO2z7HQMQUx6mZ65vZ2enrewRjT6AmZlp2MZuvph6OAKB5v2cbIrZpvduBC5+d56fbwdppUO8EJoVkdhIHk8yQbfZu7Wo41HxA8xC7Uc7eGAiYRwpe6TTnkaYThbF4llj4CFKCa6mXe/Atrd38JjIl3EKgbmDtrW1vSjjGIikhDRtkM8FpsEL4fMwMRHL249BiogOP4BigZ4Oh8PcxgZpzNNF+7o2ozCSy0cYA8/Y5iNuxIGqqlAsjOxhBmLmRaToj8BG5lHEb3dvQz7Cxghgvs5H3GgrSvHv7kb2MAPRbvbAAmL4cqD/9yzCeCHsA77dyaXIJf7nQPoczCjFgglNjbc8TvrUqVO2PY0BhTaJxyd4G8kjYczbmI8RtbV1vI3EsdAYx91nlRQzSm5BWhgiGIHIiwsqPTo2AXaAah95v91sB5oPcFtg0YhbVMUH+LC9I+tcVHjPu3vBLny+MA2HQTCVtmS/klGoyuF+ow8tgznbbkXEPD04yJWmpqfL5AO8IFggUp/PhxvBqIgl5enFoCzz+3RW9kD6y6k0L9stB8HrLT47FINM8qAWTy8vlpswfqSgp63Fha6EPZYXaYKmPYz5hHIGISJgIOL/kiriasD4RjTtgWAzlA8pLU+P4Jy1mlT7mbaUT5PhTpyscdRUP3LXbficzVK+lAl0O1DVJIyPPf3C7d7wDNvm2okgNEvjTy/+rDjX7MUSXS7AVYHE7Oy59g8OH+/p6dGyPrdCoQCJDo+cYNNPz3EyuxyAdmWvt1OPoiNfBgIB9C4XOWslgHVI3d3nOyrXrv3a6ayA1ZzXw/m7VGoWZv5NfNJ2uLWrt7dXg8zai7UOUja5Rw6zA8afjrfMJRMPcc0DT35Zs6p4H7xfMpmA2bmZkYln8eCWzRu7WltbdbAsFv0v4ljOFkOhHySPR5Gv3gh/VFVVeVRiS3Ls0FdgxUGfU0L/UFOpS1eu3Dh3+vRXcaawQbgwaYP44OCgMDQ0JCUSCXM0NE0THrMPaI8H01C9MDo6zi4kU4/Hza7zCIy+bGwC7MPjRVGh+N/aR4ia/sLO9Mny67SqKkZcLhfBkafpLJE11Hmn/nEOmJGGWCxG2Zw1Yd9ytK+vT/f7/cTrXU/6+9eTlpZbms8X1H2+V0kkcpn4/dMkGvWTYLBR37QpoldU+NlxjXoweJm1g/rt2xqZnv6F4DXS+yN6JLJHb2rSyMCAk7XdrB3RT548xq7pI11dXRh4lL0XQangy8SZpWCOjM+ty8hZ3rf2W/tyl6It1xUs5y2I/wDovhZ9cUQC2gAAAABJRU5ErkJggg==\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modalBody\":\"TradeInExplanation_modalBody__PLVhG\",\"modalHeader\":\"TradeInExplanation_modalHeader__2wKSm\",\"infoButton\":\"TradeInExplanation_infoButton__3MBzu\",\"buttonDismissButton\":\"TradeInExplanation_buttonDismissButton__2GsRW\",\"cinchCreditsOnly\":\"TradeInExplanation_cinchCreditsOnly__2J9NH\",\"mobile\":\"TradeInExplanation_mobile__2ygwh\",\"desktop\":\"TradeInExplanation_desktop__3g2V4\"};","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport styles from './CustomLinearProgress.module.scss';\r\n\r\nconst CustomLinearProgress = ({ loading }) => {\r\n const [progressWidth, setProgressWidth] = useState(0);\r\n\r\n useEffect(() => {\r\n const showProgress = () => {\r\n if (!document.getElementById('progress')) {\r\n const progressBar = document.createElement('div');\r\n\r\n progressBar.setAttribute('id', 'progress');\r\n progressBar.innerHTML = '';\r\n\r\n document.body.appendChild(progressBar);\r\n const progressElement = document.getElementById('progress');\r\n\r\n setProgressWidth(101);\r\n\r\n setTimeout(() => {\r\n setProgressWidth(0);\r\n\r\n setTimeout(() => {\r\n if (document.body.contains(progressElement)) {\r\n document.body.removeChild(progressElement);\r\n }\r\n }, 800);\r\n }, 1500);\r\n }\r\n };\r\n\r\n if (loading) {\r\n showProgress();\r\n }\r\n }, [loading]);\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nCustomLinearProgress.propTypes = {\r\n loading: PropTypes.bool\r\n};\r\n\r\nexport default CustomLinearProgress;\r\n","export default __webpack_public_path__ + \"static/media/RetrieveMyInfo.8e5803ca.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGqSURBVHgB7VfRbYMwFDykDuARGCEjuBtkBEboBmWDZoN0g4yQEdoN6AZkA2rT5+bFwfYzGD6inGQh4bN9HM8HBp64RYUFGIDaXLRpF9O+zWQ/2BJWgGln0wavHUncZiI6tviXJ6rbRAwTYa86INBeFdaCmfw99tQkpidOizXgLdJEeG/E6VdxhQpxdEPAdTXzgZIgN1wx7gV8zfg7lAJz45gxxrlyRglYB9jT1RP9deD+jo3TKCCki7lBRdkH+g5FXLG7g+2AeqL/v3YC45Vkp0mEdLFMSAkhTrtoO3vhpRYIUbNDLiO8kkKI18xyRRpeUiHEzQs5L7waKRfpeXVWyDE3TgKuWAjxZSGXCq/AmNMgzAnPbR0jRsOrBJIhxypb7AaN00NGhCdDbvj75cv9sO1FVt+PayddIZVz3OBCkr8HgfUU73Bbq0cm6JU2yASrx3Erv9D9C2bCnGU+MQ/Ku94VkMbK8F6p8jv5V7LBSiAR7qEP7n7FCFaZrWIXv+MxEuVg569xdcDO/VqFyoKc4Se50q2nNW5eSfAQTrWiUPZsYg/qJV1+YPwC4xy4FfzWzUEAAAAASUVORK5CYII=\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"SingpassExpired_container__2lMpb\",\"icon\":\"SingpassExpired_icon__2eVJs\",\"text\":\"SingpassExpired_text__dD09r\",\"text__strong\":\"SingpassExpired_text__strong__1XdkC\",\"text__expired\":\"SingpassExpired_text__expired__2GV1P\"};","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport './InputPhone.scss';\r\nimport PhoneInput from 'react-phone-input-2';\r\nimport 'react-phone-input-2/lib/style.css';\r\n\r\nInputPhone.propTypes = {\r\n className: PropTypes.string,\r\n phone: PropTypes.string.isRequired,\r\n setPhone: PropTypes.func.isRequired,\r\n country: PropTypes.string,\r\n onlyCountries: PropTypes.array,\r\n disableDropdown: PropTypes.bool,\r\n countryCodeEditable: PropTypes.bool\r\n};\r\n\r\nfunction InputPhone({ className, phone, setPhone, country, onlyCountries, disableDropdown, countryCodeEditable, ...rest }) {\r\n return (\r\n setPhone(phone)}\r\n {...rest}/>\r\n\r\n );\r\n}\r\n\r\nexport default InputPhone;\r\n","import React from 'react';\r\nimport { Spinner } from 'reactstrap';\r\n\r\nimport './FullscreenLoader.scss';\r\n\r\nconst FullscreenLoader = () => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport default FullscreenLoader;\r\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgClose(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 30,\n viewBox: \"0 0 31 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.8015 15.2071L1.31013 29.6985L0.603027 28.9914L15.0944 14.5L1.30151 0.707107L2.00862 0L15.8015 13.7929L29.5944 0L30.3015 0.707107L16.5086 14.5L31 28.9914L30.2929 29.6985L15.8015 15.2071Z\",\n fill: \"black\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgClose);\nexport default __webpack_public_path__ + \"static/media/close.70c58a93.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Table, Badge } from 'reactstrap';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { calculateTradeIn } from 'api/trade_in';\r\nimport { notify, notifType } from 'utils/notifSender';\r\nimport { STORAGEKEY_TRADE_IN_DEVICE, STORAGEKEY_TRADE_IN_PLACED } from 'config/constants';\r\nimport TradeInExplanationModal from 'screens/Product/elements/TradeIn/TradeInExplanationModal';\r\nimport { orderTotal } from 'redux/reducers/order';\r\nimport { tradeInDiscountedPrice } from 'redux/reducers/common';\r\nimport { isSeptPromoValid } from 'utils/helpers';\r\n\r\nimport styles from './AfterTradeIn.module.scss';\r\nimport Trash from 'assets/images/general/trash.svg';\r\n\r\nconst AfterTradeIn = ({ orderedCart, metaTotal, showCreditOnly, showTableOnly, reducedMonthlyPriceOnly, showTotalCashbackOnly }) => {\r\n const dispatch = useDispatch();\r\n const { selectedCartItem, meta } = useSelector(state => ({\r\n selectedCartItem: state.cart.selectedCartItem,\r\n meta: state.cart.overview,\r\n products: state.cart.fetchedProducts\r\n }));\r\n\r\n const total_ = selectedCartItem?.total || (orderedCart && orderedCart[0]?.total);\r\n const discount = meta?.discount;\r\n const subtotal = selectedCartItem?.total || (orderedCart && orderedCart[0]?.total);\r\n const total = metaTotal ? Number(metaTotal).toFixed(2) : parseFloat(total_ - discount).toFixed(2);\r\n const durationTime = selectedCartItem?.rental_period?.duration_time || (orderedCart && orderedCart[0]?.rental_period?.duration_time);\r\n const [tradeInDevice, setTradeInDevice] = useState();\r\n const [tradeInCalculationValues, setTradeInCalculationValues] = useState();\r\n\r\n const q6b6ProductsNames = [\r\n 'Samsung Galaxy Z Flip6',\r\n 'Samsung Galaxy Z Fold6'\r\n ];\r\n const overtrade = isSeptPromoValid() && q6b6ProductsNames.includes(selectedCartItem?.base_product?.name) && selectedCartItem?.rental_period?.duration_time === 12;\r\n const totalCashback = tradeInDevice?.estimates.total + (overtrade ? 100 : 0);\r\n\r\n const retrieveTradeInDevice = () => {\r\n const tradeInDeviceLocalStorage = localStorage.getItem(STORAGEKEY_TRADE_IN_DEVICE);\r\n const tradeInPlacedLocalStorage = localStorage.getItem(STORAGEKEY_TRADE_IN_PLACED);\r\n\r\n if (!tradeInDeviceLocalStorage && !tradeInPlacedLocalStorage) return;\r\n\r\n setTradeInDevice(JSON.parse(orderedCart ? tradeInPlacedLocalStorage : tradeInDeviceLocalStorage));\r\n };\r\n\r\n const removeTradeInDevice = () => {\r\n setTradeInDevice(undefined);\r\n localStorage.removeItem(STORAGEKEY_TRADE_IN_DEVICE);\r\n dispatch(tradeInDiscountedPrice(undefined));\r\n };\r\n\r\n const getTradeInValue = async () => {\r\n const payload = {\r\n subtotal: subtotal,\r\n total: total,\r\n trade_in_quote: tradeInDevice?.estimates.total,\r\n rental_period_duration: durationTime\r\n };\r\n\r\n if (Object.values(payload).some((value) => isNaN(Number(value)))) return;\r\n\r\n const data = new FormData();\r\n\r\n Object.entries(payload).forEach(([key, value]) => {\r\n data.append(key, Number(value));\r\n });\r\n\r\n await calculateTradeIn(data)\r\n .then((res) => setTradeInCalculationValues(res))\r\n .catch((err) => {\r\n console.error('Error calculating trade-in:', err);\r\n notify('Error! Something went wrong, please try again!', notifType.DANGER);\r\n });\r\n };\r\n\r\n // const wrapperStyles = () => {\r\n // // eslint-disable-next-line\r\n // let classes = [styles.afterTradeInWrapper];\r\n\r\n // if (orderedCart) classes.push(styles.orderSummaryConfirmation);\r\n\r\n // return classes.join(' ');\r\n // };\r\n\r\n const updateOrderPrice = (value) => {\r\n dispatch(orderTotal(value));\r\n dispatch(tradeInDiscountedPrice(value));\r\n };\r\n\r\n useEffect(() => {\r\n retrieveTradeInDevice();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!total || !subtotal || !tradeInDevice || !durationTime) return;\r\n getTradeInValue();\r\n }, [total, discount, tradeInDevice, durationTime]);\r\n\r\n useEffect(() => {\r\n updateOrderPrice(tradeInCalculationValues?.reducedMonthlyPrice?.toFixed(2));\r\n }, [tradeInCalculationValues]);\r\n\r\n if (!tradeInDevice) return null;\r\n\r\n if (tradeInCalculationValues) {\r\n if (reducedMonthlyPriceOnly) return tradeInCalculationValues?.reducedMonthlyPrice?.toFixed(2);\r\n\r\n // NOTE: Deprecated Trade-In Flow\r\n // if (showCreditOnly) {\r\n // return (\r\n //
\r\n // \r\n // \r\n // {tradeInCalculationValues?.cinchCashAmount > 0 && (\r\n // \r\n // \r\n // \r\n // \r\n // )}\r\n // \r\n //
\r\n // Cinch Credit\r\n // \r\n // + SGD {tradeInCalculationValues?.cinchCashAmount?.toFixed(2)}
\r\n //
\r\n // );\r\n // }\r\n\r\n if (showTableOnly) {\r\n return (\r\n
\r\n
\r\n
Trade-In*
\r\n \r\n
\r\n {tradeInDevice.device.name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {overtrade && (\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
Estimated Trade-In ValueSGD {tradeInDevice?.estimates.total.toFixed(2)}
Overtrade + SGD 100.00
Total CashbackSGD {totalCashback.toFixed(2)}
\r\n *Final device value is contingent to grading during device pickup.\r\n\r\n {/* NOTE: Deprecated for now */}\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {tradeInCalculationValues?.cinchCashAmount > 0 && (\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
Estimated Trade-In ValueSGD {tradeInDevice?.estimates.total.toFixed(2)}
Final rateSGD {tradeInCalculationValues?.reducedMonthlyPrice?.toFixed(2)}/mo
\r\n Cinch Credit\r\n \r\n + SGD {tradeInCalculationValues?.cinchCashAmount?.toFixed(2)}
\r\n *The first month is billed at the original subscription rate. When trade-in is complete, the new subscription rate will apply, and you will be credited Cinch Credit if applicable. */}\r\n
\r\n );\r\n }\r\n }\r\n\r\n if (showTotalCashbackOnly) {\r\n return (\r\n
\r\n Total Cashback\r\n SGD {totalCashback.toFixed(2)}\r\n
\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n Trade-In Applied\r\n { removeTradeInDevice(); }}\r\n alt='Remove Trade-In' />\r\n
\r\n
\r\n {tradeInDevice.device.name}\r\n SGD {tradeInDevice?.estimates.total.toFixed(2)}\r\n
\r\n {overtrade && (\r\n
\r\n Overtrade\r\n + SGD 100.00\r\n
\r\n )}\r\n
\r\n
\r\n Total Cashback\r\n SGD {totalCashback.toFixed(2)}\r\n
\r\n *Final device value is contingent on grading during pickup.\r\n
\r\n \r\n );\r\n\r\n // return (\r\n //
\r\n // {orderedCart && Trade in}\r\n //
\r\n //
\r\n //

{orderedCart ? 'After Trade-in*' : 'Trade-In Applied'}

\r\n // {orderedCart\r\n // ? \r\n // : { removeTradeInDevice(); }}\r\n // alt='Remove Trade-In' />}\r\n //
\r\n //
\r\n // {tradeInDevice.device.name}\r\n // SGD {tradeInDevice?.estimates.total.toFixed(2)}\r\n //
\r\n // {orderedCart &&\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // {tradeInCalculationValues?.cinchCashAmount > 0 && (\r\n // \r\n // \r\n // \r\n // \r\n // )}\r\n // \r\n //
Estimated Trade-In ValueSGD {tradeInDevice?.estimates.total.toFixed(2)}
Final rateSGD {tradeInCalculationValues?.reducedMonthlyPrice?.toFixed(2)}/mo
\r\n // Cinch Credit\r\n // \r\n // + SGD {tradeInCalculationValues?.cinchCashAmount?.toFixed(2)}
}\r\n // When the trade-in is complete, the new subscription rate will be applied and you will be credited Cinch Credit if applicable.\r\n // {orderedCart &&
\r\n // \r\n //
}\r\n //
\r\n //
\r\n // );\r\n};\r\n\r\nAfterTradeIn.propTypes = {\r\n orderedCart: PropTypes.object,\r\n metaTotal: PropTypes.string,\r\n showCreditOnly: PropTypes.bool,\r\n showTableOnly: PropTypes.bool,\r\n reducedMonthlyPriceOnly: PropTypes.bool,\r\n showTotalCashbackOnly: PropTypes.bool\r\n};\r\n\r\nexport default AfterTradeIn;\r\n","import PropTypes from 'prop-types';\r\nimport React, { useState, useEffect } from 'react';\r\nimport TextField from '@mui/material/TextField';\r\nimport { styled } from '@mui/material/styles';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport Button from 'containers/App/components/Button/Button';\r\nimport { notifType, notify } from 'utils/notifSender';\r\n\r\nimport { updateAuthenticationDataFromStateToStore } from 'redux/reducers/user';\r\nimport { storeUserEvent } from 'api/user';\r\n\r\nimport eye from 'assets/images/general/eye.svg';\r\nimport eyeOff from 'assets/images/general/eye-off.svg';\r\nimport backIcon from 'assets/images/general/back-icon.png';\r\n\r\nimport style from './LoginForm.module.scss';\r\n\r\nconst CssTextField = styled(TextField)({\r\n '& label.Mui-focused': {\r\n color: '#A0AAB4'\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: '#AAA'\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': {\r\n borderColor: '#AAA'\r\n },\r\n '&:hover fieldset': {\r\n borderColor: '#AAA'\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: '#AAA'\r\n }\r\n }\r\n});\r\n\r\nconst LoginForm = ({\r\n submit,\r\n changeForm,\r\n loading,\r\n isStudent,\r\n email: initialEmail,\r\n backToMainLogin,\r\n fromPopup,\r\n onFormDataItemChange\r\n}) => {\r\n const dispatch = useDispatch();\r\n const [type, setType] = useState(true);\r\n const [formData, setFormData] = useState({ email: initialEmail || '', password: '' });\r\n // const { password } = formData;\r\n const isLoginDisabled = formData.email === '' || formData.password === '';\r\n const [hasEmailError, setHasEmailError] = useState(false);\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n\r\n const handleChange = (e) => {\r\n onFormDataItemChange(e.target.name, e);\r\n setFormData({ ...formData, [e.target.name]: e.target.value });\r\n };\r\n\r\n const handleSubmit = e => {\r\n e.preventDefault();\r\n const email = e.target.email.value;\r\n const password = e.target.password.value;\r\n\r\n if (email === '' || password === '') {\r\n notify('Please fill in all required fields.', notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n if (password.length < 5 || password.length > 48) {\r\n notify('The email or password you have entered is incorrect.', notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n submit({ email, password, isRemember: true });\r\n };\r\n\r\n const handleForgotPassword = (e) => {\r\n e.preventDefault();\r\n\r\n if (formData.email === '') {\r\n setHasEmailError(true);\r\n\r\n return true;\r\n }\r\n\r\n setHasEmailError(false);\r\n\r\n changeForm('forgot', formData.email);\r\n };\r\n\r\n useEffect(() => {\r\n const triggerUserEvent = async () => {\r\n const payload = {\r\n event: 'sign_in'\r\n };\r\n\r\n await storeUserEvent(payload);\r\n };\r\n\r\n triggerUserEvent();\r\n }, []);\r\n\r\n useEffect(() => {\r\n dispatch(updateAuthenticationDataFromStateToStore(formData));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [formData]);\r\n\r\n useEffect(() => {\r\n if (initialEmail) {\r\n setFormData((prevState) => ({ ...prevState, email: initialEmail }));\r\n }\r\n }, [initialEmail]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
Welcome back!
\r\n
\r\n
Please sign in to continue.
\r\n
\r\n
\r\n
\r\n \r\n {hasEmailError && *Enter a valid email}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n setType(!type)}\r\n className={type ? style.withIcon__img : style.withIcon__img + ' ' + style.withIcon__imgActive} />\r\n
\r\n
\r\n
\r\n
\r\n \r\n Forgot Password?\r\n \r\n
\r\n {fromPopup && (\r\n
\r\n \r\n
\r\n )}\r\n {(!fromPopup && !isMobile) && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nLoginForm.propTypes = {\r\n submit: PropTypes.func.isRequired,\r\n changeForm: PropTypes.func.isRequired,\r\n loading: PropTypes.bool.isRequired,\r\n isStudent: PropTypes.bool,\r\n email: PropTypes.string,\r\n backToMainLogin: PropTypes.func,\r\n fromPopup: PropTypes.bool,\r\n onFormDataItemChange: PropTypes.func\r\n};\r\n\r\nexport default LoginForm;\r\n","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Radio } from 'antd';\r\nimport { FormGroup, Label } from 'reactstrap';\r\nimport TextField from '@mui/material/TextField';\r\nimport { styled } from '@mui/material/styles';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport Button from 'containers/App/components/Button/Button';\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { validateEmail } from 'utils/helpers';\r\n\r\nimport { updateAuthenticationDataFromStateToStore } from 'redux/reducers/user';\r\nimport { storeUserEvent } from 'api/user';\r\n\r\nimport eye from 'assets/images/general/eye.svg';\r\nimport eyeOff from 'assets/images/general/eye-off.svg';\r\nimport backIcon from 'assets/images/general/back-icon.png';\r\n\r\nimport style from './SignUpForm.module.scss';\r\n\r\nconst CssTextField = styled(TextField)({\r\n '& label.Mui-focused': {\r\n color: '#A0AAB4'\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: '#AAA'\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': {\r\n borderColor: '#AAA'\r\n },\r\n '&:hover fieldset': {\r\n borderColor: '#AAA'\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: '#AAA'\r\n }\r\n }\r\n});\r\n\r\nconst SignUpForm = ({\r\n submit,\r\n loading,\r\n isStudent,\r\n email: initialEmail,\r\n backToMainLogin,\r\n fromPopup,\r\n onFormDataItemChange\r\n}) => {\r\n const dispatch = useDispatch();\r\n const [type, setType] = useState(true);\r\n const [typeConfirm, setTypeConfirm] = useState(true);\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n const [formData, setFormData] = useState({ email: initialEmail || '', password: '', confirmPassword: '', subscriptionAcknowledge: true });\r\n // const { password, confirmPassword } = formData;\r\n const isInValidData = formData.email === '' || formData.password === '' || formData.password !== formData.confirmPassword;\r\n const [subscriptionAcknowledge, setSubscriptionAcknowledge] = useState(true);\r\n\r\n const handleChange = (e) => {\r\n onFormDataItemChange(e.target.name, e.target.value);\r\n setFormData({ ...formData, [e.target.name]: e.target.value });\r\n\r\n if (e.target.name === 'subscriptionAcknowledge') {\r\n setSubscriptionAcknowledge(!subscriptionAcknowledge);\r\n }\r\n };\r\n\r\n const handleSubmit = e => {\r\n e.preventDefault();\r\n const email = (e.target.email.value).replace(/ /g, '');\r\n const password = e.target.password.value;\r\n const confirmPassword = e.target.confirmPassword.value;\r\n const subscriptionAcknowledge = e.target.subscriptionAcknowledge.checked;\r\n\r\n if (!validateEmail(email)) {\r\n notify('Please enter a valid email address. ', notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n if (password === '' || confirmPassword === '') {\r\n notify('Please fill in all required fields.', notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n if (password !== confirmPassword) {\r\n notify('Password and Confirm Password do not match.', notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n if (password.length < 5 || password.length > 48) {\r\n const message = password.length < 5\r\n ? 'Password is too short. Please choose another one.'\r\n : 'Password is too long. Please choose another one.';\r\n\r\n notify(message, notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n submit({\r\n email,\r\n password,\r\n confirmPassword,\r\n subscriptionAcknowledge\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n const triggerUserEvent = async () => {\r\n const payload = {\r\n event: 'sign_up'\r\n };\r\n\r\n await storeUserEvent(payload);\r\n };\r\n\r\n triggerUserEvent();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (initialEmail) {\r\n setFormData((prevState) => ({ ...prevState, email: initialEmail }));\r\n }\r\n }, [initialEmail]);\r\n\r\n useEffect(() => {\r\n dispatch(updateAuthenticationDataFromStateToStore(formData));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [formData]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
Welcome to Cinch!
\r\n
\r\n
Please create an account to continue.
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n setType(!type)}\r\n className={type ? style.withIcon__img : style.withIcon__img + ' ' + style.withIcon__imgActive} />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n setTypeConfirm(!typeConfirm)}\r\n className={type ? style.withIcon__img : style.withIcon__img + ' ' + style.withIcon__imgActive} />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {fromPopup && (\r\n
\r\n \r\n
\r\n )}\r\n {(!fromPopup && !isMobile) && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nSignUpForm.propTypes = {\r\n submit: PropTypes.func.isRequired,\r\n loading: PropTypes.bool.isRequired,\r\n isStudent: PropTypes.bool,\r\n email: PropTypes.string,\r\n backToMainLogin: PropTypes.func,\r\n fromPopup: PropTypes.bool,\r\n onFormDataItemChange: PropTypes.func\r\n};\r\n\r\nexport default SignUpForm;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nNumberInput.propTypes = {\r\n className: PropTypes.string,\r\n name: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\r\n maxLength: PropTypes.number\r\n};\r\n\r\nexport default function NumberInput({\r\n onChange,\r\n className,\r\n name,\r\n placeholder,\r\n value,\r\n maxLength\r\n}) {\r\n const handleChange = (e) => {\r\n const val = e.target.value;\r\n\r\n if (e.target.validity.valid) {\r\n if (onChange) {\r\n if (maxLength) {\r\n if (val.length <= maxLength) {\r\n onChange(val);\r\n }\r\n } else {\r\n onChange(val);\r\n }\r\n } else {\r\n onChange(val);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport TextField from '@mui/material/TextField';\r\nimport { styled } from '@mui/material/styles';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport Button from 'containers/App/components/Button/Button';\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { storeUserEvent } from 'api/user';\r\nimport { updateAuthenticationDataFromStateToStore } from 'redux/reducers/user';\r\n\r\nimport eye from 'assets/images/general/eye.svg';\r\nimport eyeOff from 'assets/images/general/eye-off.svg';\r\nimport backIcon from 'assets/images/general/back-icon.png';\r\n\r\nimport style from './ResetPassword.module.scss';\r\n\r\nconst CssTextField = styled(TextField)({\r\n '& label.Mui-focused': {\r\n color: '#A0AAB4'\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: '#AAA'\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': {\r\n borderColor: '#AAA'\r\n },\r\n '&:hover fieldset': {\r\n borderColor: '#AAA'\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: '#AAA'\r\n }\r\n }\r\n});\r\n\r\nconst ResetPassword = ({ submit, changeForm, onFormDataItemChange, fromPopup, loading }) => {\r\n const dispatch = useDispatch();\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n const [type, setType] = useState(true);\r\n const [typeConfirm, setTypeConfirm] = useState(true);\r\n const [formData, setFormData] = useState({ email: '', password: '' });\r\n const { password, confirmPassword } = formData;\r\n const isInValidData = password === '' || password !== confirmPassword;\r\n\r\n const handleChange = (e) => {\r\n onFormDataItemChange(e.target.name, e.target.value);\r\n setFormData({ ...formData, [e.target.name]: e.target.value });\r\n };\r\n\r\n const handleSubmit = e => {\r\n e.preventDefault();\r\n const pass = e.target.password.value;\r\n const passConf = e.target.confirmPassword.value;\r\n\r\n if (pass === '' || passConf === '') {\r\n notify('Fields should not be empty.', notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n if (pass.length < 5 || pass.length > 48) {\r\n const message = pass.length < 5\r\n ? 'Password is too short. Please choose another one.'\r\n : 'Password is too long. Please choose another one.';\r\n\r\n notify(message, notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n if (pass !== passConf) {\r\n notify('Passwords do not match.', notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n submit(pass);\r\n };\r\n\r\n useEffect(() => {\r\n const triggerUserEvent = async () => {\r\n const payload = {\r\n event: 'reset_password'\r\n };\r\n\r\n await storeUserEvent(payload);\r\n };\r\n\r\n triggerUserEvent();\r\n }, []);\r\n\r\n useEffect(() => {\r\n dispatch(updateAuthenticationDataFromStateToStore(formData));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [formData]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
Create new password
\r\n
\r\n
We’ll ask for this password whenever you Sign-In.
\r\n
\r\n
\r\n
\r\n
\r\n \r\n setType(!type)}\r\n className={type ? style.withIcon__img : style.withIcon__img + ' ' + style.withIcon__imgActive} />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n setTypeConfirm(!typeConfirm)}\r\n className={typeConfirm ? style.withIcon__img : style.withIcon__img + ' ' + style.withIcon__imgActive} />\r\n
\r\n
\r\n
\r\n {fromPopup && (\r\n
\r\n \r\n
\r\n )}\r\n {(!fromPopup && !isMobile) && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nResetPassword.propTypes = {\r\n submit: PropTypes.func.isRequired,\r\n changeForm: PropTypes.func.isRequired,\r\n onFormDataItemChange: PropTypes.func,\r\n fromPopup: PropTypes.bool,\r\n loading: PropTypes.bool\r\n};\r\n\r\nexport default ResetPassword;\r\n","export default \"data:image/png;base64,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\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"FormFooter\":\"FormFooter_FormFooter__2PwHk\",\"FormFooter__left\":\"FormFooter_FormFooter__left__2K76e\",\"FormFooter__right\":\"FormFooter_FormFooter__right__25MUg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"LoginModal_modal__1affo\",\"section\":\"LoginModal_section__1Jm1d\",\"close\":\"LoginModal_close__f8OQ1\"};","/****\r\n *\r\n * window & process.env constants\r\n *\r\n */\r\nexport const ELOQUENT = window.AuthEloquent;\r\n\r\nexport const AXIOS = window._axios;\r\nexport const TRADING_AXIOS = window._tradingAxios;\r\nwindow._withAsyncCallerAxios = window._TradingBaseAxios;\r\n\r\nexport const APP_ENV = process.env.REACT_APP_ENV;\r\nexport const AUTH_API_URL = process.env.REACT_APP_API_URL;\r\nexport const STRIPE_PUBLIC_KEY = process.env.REACT_APP_STRIPE_PUBLIC_KEY;\r\nexport const GOOGLE_MAP_KEY = 'AIzaSyAuvBVQ1BIpyMCBx11_VryAvLMCWGmY2LU';\r\nexport const API_ADDRESS = 'https://aged-oasis-di8qclo59nbp.vapor-farm-f1.com/api';\r\n\r\nexport const STAMPED_PUBLIC_API_KEY = process.env.REACT_APP_STAMPED_PUBLIC_API_KEY;\r\nexport const STAMPED_STORE_HASH = process.env.REACT_APP_STAMPED_STORE_HASH;\r\n\r\nexport const COMPASIA_BASE_URL = process.env.REACT_APP_COMPASIA_BASE_URL;\r\nexport const COMPASIA_API_KEY = process.env.REACT_APP_COMPASIA_API_KEY;\r\nexport const COMPASIA_USERNAME = process.env.REACT_APP_COMPASIA_USERNAME;\r\n\r\n/****\r\n *\r\n * Storage keys\r\n *\r\n */\r\nexport const STORAGEKEY_AUTH_TOKEN = 'sk-authToken';\r\nexport const STORAGEKEY_APP_LANGUAGE = 'sk-appLanguage';\r\nexport const STORAGEKEY_REFERRAL = 'sk-referral';\r\nexport const STORAGEKEY_TRADE_IN_DEVICE = 'trade-in-device';\r\nexport const STORAGEKEY_TRADE_IN_FORM_DATA = 'trade-in-form-data';\r\nexport const STORAGEKEY_TRADE_IN_PLACED = 'trade-in-placed';\r\nexport const STORAGEKEY_PAY_NOW_INFO = 'paynow-number';\r\nexport const STORAGEKEY_PASSWORD_SECRET_KEY = 'ae2269f3e1b876ea0af0f4493326bc82';\r\n\r\n/****\r\n *\r\n * Configs\r\n *\r\n */\r\n// App default language (also used for the lang='' attribute)\r\n// see https://developer.paciellogroup.com/blog/2016/06/using-the-html-lang-attribute/\r\n// NOTE: make sure the language key defined here matches the default helmet key\r\n// // see `executors/i18n/helmet`\r\nexport const APP_LANGUAGE_DEFAULT = 'en'; // TODO_REPLACE(en | de | fr | etc..)\r\n\r\n// App environments\r\n// see .env.production & .env.development\r\n// values must match the values defined in these files\r\nexport const APP_ENVS = {\r\n LOCAL: 'local',\r\n STAGING: 'staging',\r\n PRODUCTION: 'production'\r\n};\r\n\r\n// SENTRY - see https://docs.sentry.io/error-reporting/configuration/?platform=javascript\r\nexport const SENTRY_CONFIG = {\r\n environment: APP_ENV\r\n};\r\n\r\n// WEBFONT config - see https://github.com/typekit/webfontloader\r\nexport const WEBFONT_CONFIG = {\r\n // google: {\r\n // families: [\r\n // 'Poppins:300',\r\n // 'Poppins:400',\r\n // 'Poppins:500',\r\n // 'Poppins:700',\r\n // 'Poppins:900'\r\n // ]\r\n // }\r\n};\r\n\r\n// INACTIVE Subscriptions Status\r\nexport const INACTIVE_STATUS = ['payment_failed', 'completed', 'rejected', 'shortage', 'bought'];\r\n\r\n// Social networks config\r\nexport const SOCIAL_NETWORK_URLS = {\r\n FACEBOOK: 'TODO_REPLACE',\r\n INSTAGRAM: 'TODO_REPLACE',\r\n TWITTER: 'TODO_REPLACE',\r\n LINKEDIN: 'TODO_REPLACE'\r\n // ...\r\n};\r\n\r\nexport const FACEBOOK_APP_ID = 'TODO_REPLACE';\r\n\r\n/****\r\n *\r\n * App routing\r\n *\r\n */\r\nexport const ROUTES = {\r\n HOME: '/',\r\n PRODUCTS: '/products',\r\n PRODUCT: {\r\n path: '/product/:slug',\r\n generate: (slug, rentalTerm = null) => {\r\n if (rentalTerm) {\r\n return `/product/${slug}/?rental_term=${rentalTerm}`;\r\n } else {\r\n return `/product/${slug}`;\r\n }\r\n }\r\n },\r\n HOW_IT_WORKS: '/how-it-works',\r\n FAQ: '/faq',\r\n PRIVACY_POLICY: '/privacy-policy',\r\n TERMS_AND_CONDITIONS: '/terms-and-conditions',\r\n ABOUT_US: '/about-us',\r\n MY_ACCOUNT: '/my-account',\r\n PROFILE: '/profile',\r\n BILLING_HISTORY: '/profile/billing-history',\r\n ORDEREDPRODUCTSINGLE: '/ordered-item',\r\n ORDEREDPRODUCT: (id = ':id', orderID = ':orderID') => `/ordered-item/${id}/${orderID}`,\r\n MYINFORMATION: '/my-account/my-information',\r\n SUBSCRIPTIONS: '/my-account/subscriptions',\r\n INACTIVE_SUBSCRIPTIONS: '/my-account/inactive-subscriptions',\r\n ORDERS: '/my-account/orders',\r\n PAYMENTINFO: '/my-account/payment-info',\r\n SHIPPINGINFO: '/my-account/shipping-info',\r\n ORDER: (id = ':id') => `/my-account/orders/${id}`,\r\n MYSINGPASS: '/my-account/singpass',\r\n KNOX_DISCLAIMER: '/knox-disclaimer',\r\n PURCHASE_SALES_RESTRICTIONS: '/purchase-sales-restrictions',\r\n CHECKOUT: '/checkout',\r\n CART: '/checkout/cart',\r\n SIGNUP: '/checkout/start',\r\n SINGPASS: '/checkout/singpass',\r\n SINGPASS_MANUALL_FORM: '/checkout/manuall',\r\n SINGPASS_RESULT: '/checkout/singpass-result',\r\n DOCUMENTSPROOF: '/checkout/documents-proof',\r\n SHIPPING: '/checkout/shipping',\r\n PAYMENT: '/checkout/payment',\r\n PRODUCTORDERSUMMARYSINGLE: 'product-order-summary',\r\n PRODUCTORDERSUMMARY: (id = ':id', orderId = ':orderId', orderNumber = ':orderNumber', isBuy = ':isBuy') => `/product-order-summary/${id}/${orderId}/${orderNumber}/${isBuy}`,\r\n ORDER_SUMMARY: '/checkout/order-summary',\r\n ORDER_SUMMARY_CONFIRMATION: '/checkout/order-summary-confirmation',\r\n SIGN_IN: '/sign-in',\r\n SIGN_UP: '/sign-up',\r\n OTP_VERIFICATION: '/otp-verification',\r\n FORGOT_PASSWORD: '/forgot-password',\r\n REFER_AND_EARN: '/my-account/refer-and-earn',\r\n LUCKY_DRAW: '/lucky-draw',\r\n Q6B6: '/galaxy-z',\r\n Q6B6_flip6: '/galaxy-z-flip6',\r\n Q6B6_fold6: '/galaxy-z-fold6',\r\n TRADE_IN_CALCULATOR: '/trade-in-calculator',\r\n NAFA: '/nafa',\r\n UNPACKED: '/unpacked',\r\n CONTACT_US: '/contact-us',\r\n INVOICE: (invoiceUrl = ':invoiceUrl') => `/my-account/invoice/${invoiceUrl}`,\r\n GALAXY_Z_SEM: '/galaxy-z-sem',\r\n GALAXY_Z_AFF: '/galaxy-z-aff',\r\n GALAXY_Z_EDM: '/galaxy-z-edm',\r\n AUTH_CALLBACK_GOOGLE: '/auth/callback/google',\r\n AUTH_CALLBACK_FACEBOOK: '/auth/callback/facebook',\r\n GALAXY_Z_ND_FLASH_SALE: '/galaxy-z-nd-flash-sale',\r\n SEARCH: '/search',\r\n EAW: '/galaxy-z-everyone-winner',\r\n EAWTNC: '/terms-and-conditions-e1',\r\n REVIEW_ORDER: '/checkout/review-order',\r\n DEALS_PDP: {\r\n path: '/deals/:dealId/:slug'\r\n },\r\n GALAXY_UNPACKED: '/galaxy-unpacked'\r\n};\r\n\r\nexport const ROUTE_REDIRECT_AFTER_REGISTRATION = ROUTES.HOME;\r\nexport const ROUTE_REDIRECT_AFTER_LOGIN = ROUTES.HOME;\r\nexport const ROUTE_REDIRECT_FROM_UNAUTHED_ROUTE = ROUTES.HOME;\r\nexport const ROUTE_REDIRECT_FROM_AUTHED_ROUTE = ROUTES.HOME;\r\n\r\nexport const MARCH_PROMO_CODE = {\r\n key: '1M_promo_code',\r\n value: '1monthfree'\r\n};\r\nexport const APPLY_MARCH_PROMO_CODE = {\r\n key: 'apply_1M_promo',\r\n value: true\r\n};\r\n\r\nexport const AUTO_APPLY_PROMO_CODE = '1monthfree';\r\nexport const SEPT_PROMO_CODE = 'CINCHIT20';\r\n\r\n/*\r\n *\r\n * Project config\r\n *\r\n */\r\nexport const APP_CURRENCY_SYMBOL = '$';\r\nexport const APP_CURRENCY_NAME = 'SGD';\r\n\r\n// docs url: https://holy-fog-yewkgt0qow8w.vapor-farm-f1.com/docs\r\n// https://mailtrap.io/inboxes\r\n// shahzad.creatella@gmail.com\r\n// cre@tel!@\r\n\r\n// https://docs.google.com/presentation/d/1s_D-QRj8jAp_PKBZsHll6tUv_6J6en5JUKcdSPlq6do/edit#slide=id.g1362d62e662_0_11\r\n// for issues : https://docs.google.com/spreadsheets/d/12KsXFP834zwxPfMRmJghVmNByt2AdlJrkXG-SydYCOY/edit?usp=sharing\r\n// ravio doc https://docs.google.com/spreadsheets/d/14eLgOOX6Tx6YYmdjC3rN843X13L2vmXRMg8llwe7I-g/edit#gid=599515743\r\n// coralis doc https://docs.google.com/spreadsheets/d/1kIwpdTTUnu8RxvswQ-O1Z9BQcvnbH02VDT9-LWfTeaQ/edit#gid=599515743\r\n// roadmap : https://docs.google.com/spreadsheets/d/1uyEVrnzwOii74YirOEKlfiNPi9Kw1N3Vkoc5yq_zTg8/edit#gid=1279238413\r\n\r\n// cinch new staging url\r\n// http://d81ftngso57y6.cloudfront.net/\r\n\r\nexport const STUDENT_DOMAINS = [\r\n 'cinch.sg'\r\n];\r\n\r\nexport const TRADE_IN_DEVICES = [\r\n { key: 'samsung_s21_s23', series: 'Galaxy S21-S23', cashback: `${APP_CURRENCY_NAME} 200.00` },\r\n { key: 'iphone_12_14', series: 'iPhone 12-14', cashback: `${APP_CURRENCY_NAME} 300.00` },\r\n { key: 'none', series: 'No Thanks', cashback: '' }\r\n];\r\n\r\nexport const CHECKOUT_REQUIREMENTS = [\r\n 'SingPass verification',\r\n 'Delivery address',\r\n 'Payment details'\r\n];\r\n\r\nexport const GALAXY_S24_SLUGS = ['samsung-galaxy-s24-ultra'];\r\n\r\nexport const Q6B6_SLUGS = ['samsung-galaxy-z-flip6', 'samsung-galaxy-z-fold6'];\r\n\r\nexport const PRE_ORDER_PRODUCTS = Q6B6_SLUGS;\r\n\r\nexport const VALID_RENTAL_PERIODS = [3, 6, 12];\r\n\r\nexport const MYSTERY_BOX_PRODUCT_SLUG = [...Q6B6_SLUGS, ...GALAXY_S24_SLUGS, 'samsung-galaxy-s24-plus', 'samsung-galaxy-s24'];\r\n\r\nexport const CHATBOT_HIDDEN_ROUTES = [ROUTES.CHECKOUT, ROUTES.CART, ROUTES.SHIPPING, ROUTES.PAYMENT, ROUTES.ORDER_SUMMARY, ROUTES.REVIEW_ORDER, ROUTES.ORDER_SUMMARY_CONFIRMATION];\r\n\r\n// NOTE: DEPRECATED\r\n// export const FAUX_DISCOUNT_VARIANTS = [\r\n// { slug: 'samsung-galaxy-z-fold6', storage: '512GB', discount: '16%' }\r\n// ];\r\nexport const STATIC_G6B6_ROUTES = [ROUTES.GALAXY_Z_SEM, ROUTES.GALAXY_Z_AFF, ROUTES.GALAXY_Z_EDM];\r\n\r\nexport const EXCLUDED_URLS = [\r\n ROUTES.AUTH_CALLBACK_GOOGLE,\r\n ROUTES.AUTH_CALLBACK_FACEBOOK\r\n];\r\n\r\nexport const PDP_FLIP6 = 'https://samsung.cinch.sg/product/samsung-galaxy-z-flip6';\r\n\r\nexport const PDP_FLIP6_R = '/product/samsung-galaxy-z-flip6';\r\n\r\n// Add this new constant for redirects\r\nexport const REDIRECT_ROUTES_OLD_Q6B6_TO_PDP_FLIP6 = {\r\n [ROUTES.GALAXY_Z_EDM]: PDP_FLIP6_R,\r\n [ROUTES.Q6B6_fold6]: PDP_FLIP6_R,\r\n [ROUTES.Q6B6_flip6]: PDP_FLIP6_R,\r\n [ROUTES.GALAXY_Z_SEM]: PDP_FLIP6_R\r\n};\r\n\r\nexport const q6b6ProductsNames = [\r\n 'Samsung Galaxy Z Flip6',\r\n 'Samsung Galaxy Z Fold6'\r\n];\r\nexport const SEPT_PROMO_START_DATE = 'September 01, 2024 00:00:00 GMT+0800';\r\n\r\nexport const SEPT_PROMO_END_DATE = 'October 31, 2024 23:59:00 GMT+0800';\r\n","import React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport OtpInput from 'react-otp-input';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport Button from 'containers/App/components/Button/Button';\r\n\r\nimport { updateOTPDataFromStateToStore } from 'redux/reducers/user';\r\nimport { storeUserEvent } from 'api/user';\r\n\r\nimport backIcon from 'assets/images/general/back-icon.png';\r\nimport style from './OTPForm.module.scss';\r\n\r\nconst OTPForm = ({\r\n submit,\r\n changeForm,\r\n timer,\r\n resendCode,\r\n loading,\r\n type,\r\n otp,\r\n setOtp,\r\n lastnumber,\r\n email = '',\r\n showResend = true,\r\n numInput = 6,\r\n showActionButton = false,\r\n fromPopup\r\n}) => {\r\n const dispatch = useDispatch();\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n\r\n const handleChange = (otp) => setOtp(otp);\r\n\r\n const handleSubmit = e => {\r\n e.preventDefault();\r\n submit(type);\r\n };\r\n\r\n const maskedEmail = () => {\r\n const [username, domain] = email.split('@');\r\n const maskedUsername = username.substring(0, 3) + '*'.repeat(username.length - 3);\r\n\r\n return maskedUsername + '@' + domain;\r\n };\r\n\r\n const isOtpFilled = () => otp.length === numInput;\r\n\r\n useEffect(() => {\r\n dispatch(updateOTPDataFromStateToStore({ otp: otp, email: email }));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [otp]);\r\n\r\n useEffect(() => {\r\n const triggerUserEvent = async () => {\r\n let event = '';\r\n\r\n if (type === 'forgot') {\r\n event = 'forgot_otp';\r\n } else {\r\n event = 'student_otp';\r\n }\r\n\r\n const payload = {\r\n event: event\r\n };\r\n\r\n await storeUserEvent(payload);\r\n };\r\n\r\n triggerUserEvent();\r\n }, [type]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
Verification required
\r\n
\r\n
{email ? `We've sent a One Time Password (OTP) to the email ${maskedEmail()} Please enter it below.` : `SMS sent to phone number ending with ${lastnumber}`}
\r\n
\r\n
\r\n (\r\n \r\n )}/>\r\n
\r\n {fromPopup && (\r\n
\r\n \r\n
\r\n )}\r\n {(!fromPopup && !isMobile) && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n {showResend &&
Resend Code\r\n {timer > 0 ? ` (${timer} S)` : ''}\r\n
}\r\n
\r\n
\r\n );\r\n};\r\n\r\nOTPForm.propTypes = {\r\n submit: PropTypes.func.isRequired,\r\n changeForm: PropTypes.func,\r\n timer: PropTypes.number,\r\n resendCode: PropTypes.func,\r\n loading: PropTypes.bool,\r\n type: PropTypes.string,\r\n otp: PropTypes.string,\r\n setOtp: PropTypes.func,\r\n lastnumber: PropTypes.string,\r\n singpass: PropTypes.bool,\r\n email: PropTypes.string,\r\n showResend: PropTypes.bool,\r\n numInput: PropTypes.number,\r\n isReset: PropTypes.bool,\r\n showActionButton: PropTypes.bool,\r\n fromPopup: PropTypes.bool\r\n};\r\n\r\nexport default OTPForm;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Spinner } from 'reactstrap';\r\n\r\nimport './Button.scss';\r\n\r\nButton.propTypes = {\r\n onClick: PropTypes.func,\r\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\r\n className: PropTypes.string,\r\n type: PropTypes.string,\r\n loading: PropTypes.bool,\r\n disabled: PropTypes.bool\r\n};\r\n\r\n// sample classnames : submit, ignore\r\nexport default function Button({ className, title, onClick, type, loading, disabled }) {\r\n const getClassNames = () => {\r\n let name = 'button';\r\n\r\n if (className) {\r\n name = name + ' ' + className;\r\n }\r\n\r\n if (disabled) {\r\n name = name + ' disabled';\r\n }\r\n\r\n return name;\r\n };\r\n\r\n return (\r\n \r\n\r\n {loading ? : title}\r\n \r\n );\r\n}\r\n","export default \"data:image/png;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAyAAD/4QMsaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAxNCA3OS4xNTE0ODEsIDIwMTMvMDMvMTMtMTI6MDk6MTUgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBRTFFMDE1MDVEQjcxMUU0OEZEOUIxNUM5NzFEQjI3RCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBRTFFMDE1MTVEQjcxMUU0OEZEOUIxNUM5NzFEQjI3RCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc3RTc0MEZGNURCNzExRTQ4RkQ5QjE1Qzk3MURCMjdEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc3RTc0MTAwNURCNzExRTQ4RkQ5QjE1Qzk3MURCMjdEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/+4ADkFkb2JlAGTAAAAAAf/bAIQACAYGBgYGCAYGCAwIBwgMDgoI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\"","import { createAxiosInstance, getAuthToken } from 'utils/helpers';\r\nimport { notifType, notify } from 'utils/notifSender';\r\n\r\nconst initialState = {\r\n cardList: [],\r\n isLoading: false,\r\n selectedPaymentMethodId: ''\r\n};\r\n\r\nconst FETCH_CARD_LIST_START = 'FETCH_CARD_LIST_START';\r\nconst FETCH_CARD_LIST_SUCCESS = 'FETCH_CARD_LIST_SUCCESS';\r\nconst FETCH_CARD_LIST_FAILURE = 'FETCH_CARD_LIST_FAILURE';\r\n\r\nconst REMOVE_CARD_START = 'REMOVE_CARD_START';\r\nconst REMOVE_CARD_SUCCESS = 'REMOVE_CARD_SUCCESS';\r\nconst REMOVE_CARD_FAILURE = 'REMOVE_CARD_FAILURE';\r\n\r\nconst SET_SELECTED_PAYMENT_METHOD_ID = 'SET_SELECTED_PAYMENT_METHOD_ID';\r\n\r\nexport const fetchCardListStart = () => ({\r\n type: FETCH_CARD_LIST_START\r\n});\r\n\r\nexport const fetchCardListSuccess = (data) => ({\r\n type: FETCH_CARD_LIST_SUCCESS,\r\n data\r\n});\r\n\r\nexport const fetchCardListFailure = () => ({\r\n type: FETCH_CARD_LIST_FAILURE\r\n});\r\n\r\nexport const removeCardStart = () => ({\r\n type: REMOVE_CARD_START\r\n});\r\n\r\nexport const removeCardSuccess = (id) => ({\r\n type: REMOVE_CARD_SUCCESS,\r\n id\r\n});\r\n\r\nexport const removeCardFailure = () => ({\r\n type: REMOVE_CARD_FAILURE\r\n});\r\n\r\nexport const setSelectedPaymentMethodId = (id) => ({\r\n type: SET_SELECTED_PAYMENT_METHOD_ID,\r\n payload: id\r\n});\r\n\r\nexport const handleFetchPaymentIntent = (onSuccess) => {\r\n return async () => {\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n const { data } = await instance.get('/payment-method/intent');\r\n\r\n onSuccess(data);\r\n } catch (e) {\r\n // console.error(e);\r\n }\r\n };\r\n};\r\n\r\nexport const handleFetchCardList = (onSuccess = () => { }) => {\r\n return async (dispatch) => {\r\n dispatch(fetchCardListStart());\r\n\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n const { data } = await instance.get('/payment-method');\r\n\r\n dispatch(fetchCardListSuccess(data?.data));\r\n onSuccess();\r\n } catch (e) {\r\n dispatch(fetchCardListFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const handleCreateNewCard = (paymentToken, onSuccess = () => { }, onFailure = () => { }) => {\r\n return async (dispatch) => {\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n const { data } = await instance.post('/payment-method', { token: paymentToken });\r\n\r\n dispatch(setSelectedPaymentMethodId(paymentToken));\r\n dispatch(makeDefaultCard(paymentToken));\r\n onSuccess(data);\r\n } catch (e) {\r\n onFailure();\r\n }\r\n };\r\n};\r\n\r\nexport const handleRemoveCard = (paymentMethodId) => {\r\n return async (dispatch) => {\r\n dispatch(removeCardStart());\r\n\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n await instance.delete(`/payment-method/${paymentMethodId}`);\r\n\r\n dispatch(removeCardSuccess(paymentMethodId));\r\n } catch (e) {\r\n if (e.response.data.error) {\r\n notify(e.response.data.error, notifType.DANGER);\r\n }\r\n\r\n dispatch(removeCardFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const makeDefaultCard = (paymentMethodId) => {\r\n return async (dispatch) => {\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n await instance.post('/payment-method/default', { id: paymentMethodId });\r\n dispatch(handleFetchCardList());\r\n notify('Default payment method updated.', notifType.SUCCESS);\r\n } catch (e) {\r\n if (e.response.data.error) {\r\n notify(e.response.data.error, notifType.DANGER);\r\n }\r\n }\r\n };\r\n};\r\n\r\nexport default function cart(state = initialState, action) {\r\n switch (action.type) {\r\n case FETCH_CARD_LIST_START:\r\n case REMOVE_CARD_START:\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n\r\n case FETCH_CARD_LIST_SUCCESS:\r\n return {\r\n ...state,\r\n cardList: action.data,\r\n isLoading: false\r\n };\r\n\r\n case REMOVE_CARD_SUCCESS:\r\n return {\r\n ...state,\r\n cardList: state.cardList.filter((item) => item.payment_method_id !== action.id),\r\n isLoading: false,\r\n selectedPaymentMethodId: action.id === state.selectedPaymentMethodId ? '' : state.selectedPaymentMethodId\r\n };\r\n\r\n case FETCH_CARD_LIST_FAILURE:\r\n case REMOVE_CARD_FAILURE:\r\n return {\r\n ...state,\r\n isLoading: false\r\n };\r\n\r\n case SET_SELECTED_PAYMENT_METHOD_ID:\r\n return {\r\n ...state,\r\n selectedPaymentMethodId: action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import axios from 'axios';\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { AUTH_API_URL, COMPASIA_BASE_URL, COMPASIA_API_KEY, COMPASIA_USERNAME } from 'config/constants';\r\nimport { getAuthToken } from 'utils/helpers';\r\n\r\nconst getProductList = async () => {\r\n const url = `${AUTH_API_URL}/trade-ins/products`;\r\n const credentials = {\r\n apiKey: COMPASIA_API_KEY,\r\n userName: COMPASIA_USERNAME\r\n };\r\n\r\n try {\r\n const response = await axios.get(url, credentials, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n });\r\n\r\n return response.data;\r\n } catch (error) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n throw new Error(error);\r\n }\r\n};\r\n\r\nconst getStorageList = async (name) => {\r\n const url = `${AUTH_API_URL}/trade-ins/products/by-name?name=${name}`;\r\n\r\n try {\r\n const response = await axios.get(url);\r\n\r\n return response.data;\r\n } catch (error) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n throw new Error(error);\r\n }\r\n};\r\n\r\nconst imeiValidation = async (productId, imei) => {\r\n const url = `${COMPASIA_BASE_URL}/api/v1/partner-integration/imei-validation`;\r\n const data = new FormData();\r\n\r\n data.append('apiKey', COMPASIA_API_KEY);\r\n data.append('userName', COMPASIA_USERNAME);\r\n data.append('productId', productId);\r\n data.append('IMEINumber', imei);\r\n\r\n try {\r\n const response = await axios.post(url, data, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n });\r\n\r\n return response.data;\r\n } catch (error) {\r\n logCompAsiaError({\r\n reqBody: { productId, imei },\r\n resBody: error.response.data,\r\n endpoint: 'IMEI Validation',\r\n status: error.response.status\r\n });\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n throw new Error(error);\r\n }\r\n};\r\n\r\nconst productAssessmentQuestion = async (productId) => {\r\n const url = `${COMPASIA_BASE_URL}/api/v1/partner-integration/product-assessment`;\r\n const data = new FormData();\r\n\r\n data.append('apiKey', COMPASIA_API_KEY);\r\n data.append('userName', COMPASIA_USERNAME);\r\n data.append('productId', productId);\r\n\r\n try {\r\n const response = await axios.post(url, data, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n });\r\n\r\n return response.data.msg.questions;\r\n } catch (error) {\r\n logCompAsiaError({\r\n reqBody: { productId },\r\n resBody: error.response.data,\r\n endpoint: 'Product Assessment Questions',\r\n status: error.response.status\r\n });\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n throw new Error(error);\r\n }\r\n};\r\n\r\nconst fetchEstimatedPrice = async (productId, imeiNumber, deviceConditionString) => {\r\n const url = `${COMPASIA_BASE_URL}/api/v1/partner-integration/result/quoted-price`;\r\n const data = new FormData();\r\n\r\n data.append('apiKey', COMPASIA_API_KEY);\r\n data.append('userName', COMPASIA_USERNAME);\r\n data.append('productId', productId);\r\n data.append('IMEINumber', imeiNumber);\r\n data.append('deviceConditionString', deviceConditionString);\r\n\r\n try {\r\n const response = await axios.post(url, data, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n });\r\n\r\n return response.data;\r\n } catch (error) {\r\n logCompAsiaError({\r\n reqBody: { productId, imeiNumber, deviceConditionString },\r\n resBody: error.response.data,\r\n endpoint: 'Quote Price',\r\n status: error.response.status\r\n });\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n throw new Error(error);\r\n }\r\n};\r\n\r\nconst calculateTradeIn = async (tradeInData) => {\r\n const options = {\r\n method: 'POST',\r\n headers: {\r\n 'content-type': 'multipart/form-data'\r\n },\r\n url: AUTH_API_URL + '/trade-ins/calculate',\r\n data: tradeInData\r\n };\r\n\r\n try {\r\n const resp = await axios(options);\r\n\r\n return resp.data;\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n throw new Error(err);\r\n }\r\n};\r\n\r\nconst logCompAsiaError = async ({ reqBody, resBody, endpoint, status }) => {\r\n const payload = {\r\n requestData: reqBody,\r\n responseData: resBody,\r\n api: endpoint,\r\n status: status\r\n };\r\n\r\n const options = {\r\n method: 'POST',\r\n headers: {\r\n 'content-type': 'application/json',\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n url: `${AUTH_API_URL}/trade-ins/log-error`,\r\n data: payload\r\n };\r\n\r\n try {\r\n const resp = await axios(options);\r\n\r\n return resp;\r\n } catch (err) {\r\n // console.log('Error logging CompAsia error', err);\r\n throw new Error(err);\r\n }\r\n};\r\n\r\nexport { getProductList, getStorageList, imeiValidation, productAssessmentQuestion, fetchEstimatedPrice, calculateTradeIn, logCompAsiaError };\r\n","var _rect, _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgIcWarningOutlineBlack(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 38,\n height: 38,\n viewBox: \"0 0 38 38\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_6125_5659\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 0,\n y: 0,\n width: 38,\n height: 38\n }, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 38,\n height: 38,\n fill: \"url(#pattern0_6125_5659)\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_6125_5659)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: -0.392578,\n y: -0.391602,\n width: 38.3918,\n height: 38.3918,\n fill: \"black\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0_6125_5659\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_6125_5659\",\n transform: \"scale(0.00195312)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_6125_5659\",\n width: 512,\n height: 512,\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcWarningOutlineBlack);\nexport default __webpack_public_path__ + \"static/media/ic-warning-outline-black.20522130.svg\";\nexport { ForwardRef as ReactComponent };","import axios from 'axios';\r\n\r\nimport { AUTH_API_URL, INACTIVE_STATUS } from 'config/constants';\r\n\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { getAuthToken } from 'utils/helpers';\r\n\r\nexport async function getOrders(page = 1, limit = 10, status) {\r\n const options = {\r\n method: 'GET',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n url: AUTH_API_URL + `/order?paginate=true&channel=samsung&page=${page}&limit=${limit}${status ? '&status=' + status : ''}`\r\n };\r\n\r\n try {\r\n const { data: { data, meta } } = await axios(options);\r\n\r\n return status !== 'subscribed' ? { data: data.filter(d => d?.status !== 'subscribed'), meta } : { data, meta };\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n\r\n return false;\r\n }\r\n}\r\n\r\nexport async function getInactiveOrders() {\r\n const options = {\r\n method: 'GET',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n url: AUTH_API_URL + '/order?limit=999&channel=samsung'\r\n };\r\n\r\n try {\r\n const { data: { data, meta } } = await axios(options);\r\n\r\n return { data: data.filter(d => INACTIVE_STATUS.includes(d.status)), meta };\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * update order\r\n * @param {String} id\r\n * @param {Object} param\r\n */\r\n\r\nexport async function updateOrder(id, param) {\r\n const options = {\r\n method: 'PATCH',\r\n url: AUTH_API_URL + '/order/' + id + '?channel=samsung',\r\n data: param,\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n }\r\n };\r\n\r\n try {\r\n const resp = await axios(options);\r\n\r\n return resp;\r\n } catch (err) {\r\n if (err.response && err.response.status === 500) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n }\r\n\r\n throw err;\r\n }\r\n}\r\n\r\n/**\r\n * get billing\r\n */\r\n\r\nexport async function billingOrder(id, newrentalPeriodId = null, coupon = null) {\r\n const options = {\r\n method: 'GET',\r\n url: AUTH_API_URL + '/order/' + id + '?channel=samsung&newRentalPeriodId=' + newrentalPeriodId + '&coupon=' + coupon,\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n }\r\n };\r\n\r\n try {\r\n const resp = await axios(options);\r\n\r\n return resp;\r\n } catch (err) {\r\n if (err.response && err.response.status === 500) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n }\r\n\r\n throw err;\r\n }\r\n}\r\n\r\n/**\r\n * get Price\r\n */\r\n\r\nexport async function getPurchasePrice(id) {\r\n const options = {\r\n method: 'POST',\r\n url: AUTH_API_URL + '/order/purchase?channel=samsung&get_price',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n data: { order_id: id }\r\n };\r\n\r\n try {\r\n const resp = await axios(options);\r\n\r\n return resp;\r\n } catch (err) {\r\n throw err.response;\r\n }\r\n}\r\n\r\n/**\r\n * get billing\r\n */\r\n\r\nexport async function purchaseProduct(id) {\r\n const options = {\r\n method: 'POST',\r\n url: AUTH_API_URL + '/order/purchase?channel=samsung',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n data: { order_id: id }\r\n };\r\n\r\n try {\r\n const resp = await axios(options);\r\n\r\n return resp;\r\n } catch (err) {\r\n throw err.response;\r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/media/first-payment.56778ace.svg\";","export default __webpack_public_path__ + \"static/media/fraud-protection.0e937107.svg\";","export default __webpack_public_path__ + \"static/media/resale-restriction.4871dddf.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACESURBVHgB7ZTBDYAgDEXb4gCO4GbO4IWznkg4uYKbMQILgEKiCfZiwJh46EsKafPDpz0UQHgAy0RrPaZrTdFDG04pNRtjtqtATDC/eDwzhBDWstBxQT6stQgNpAnswD5I8DFiIAZiIAZ/MODb1Kfoz63YBCK6Mr91QEQTF1TiY4wLCDUc5LoYmEURVokAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEoSURBVHgB7ZQ7TgMxEIZnvEGi9BFyhK14dOQIOQHiCCkglKFBQMUNOALcIDQIUoUbsEeISBElkXcyk4fkOInXXrnMJ+1qx1p/vzy2DHCkArSL7G5wTUiv/KmhBkjYNi/nH/aYsguW92rLkW5cudBw6qa8yucLhBro3lCPJ9N3lanO/PHsV8YUJELk/5NZnwCujCnfNuNJAjZybnLOZVEitZMF7JG34OmySBJQJfcGyJFV3cEQWBIjP7n9yoMCVkeWciUSJ8QnNyrrBwUsJ/FkN8TXlrVcBwXIJDfk9P67WdHznXb6N9kJmRH++TZ0H9WnaCtkSbA8LMAKQYTPGLnQCP1RpAagBZEku4sO4a5gxI9W3R+C+hR2sbUCvtM77g+RjNjxAEdiWACzN76DtqMPKwAAAABJRU5ErkJggg==\"","import React, { useState } from 'react';\r\nimport { Modal, FormGroup, Label } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { ROUTES } from 'config/constants';\r\n\r\nimport FirstPayment from 'assets/images/general/first-payment.svg';\r\nimport FraudProtection from 'assets/images/general/fraud-protection.svg';\r\nimport ResaleRestriction from 'assets/images/general/resale-restriction.svg';\r\nimport CheckboxUnselected from 'assets/images/checkbox-unselected.png';\r\nimport CheckboxSelected from 'assets/images/checkbox-selected.png';\r\n\r\nimport './CheckoutPaymentInfo.scss';\r\n\r\nexport default function CheckoutPaymentInfo({\r\n isOpen,\r\n onToggle,\r\n placeOrder,\r\n backToOrderSummary\r\n}) {\r\n const [termsNConditions, setTermsNConditions] = useState(false);\r\n const [propertyOfCinch, setPropertyOfCinch] = useState(false);\r\n\r\n const onChangeTermsNConditions = () => setTermsNConditions(!termsNConditions);\r\n\r\n const onChangeSetPropertyOfCinch = () => setPropertyOfCinch(!propertyOfCinch);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n

Congratulations!

\r\n

You're almost there!

\r\n
\r\n
\r\n
\r\n

A few things to remember

\r\n
\r\n
\r\n
\r\n Sufficient funds\r\n
\r\n Your first payment is immediate\r\n
\r\n
\r\n
\r\n Fraud protection\r\n
\r\n Protected against fraud\r\n
\r\n
\r\n
\r\n Resale not allowed\r\n
\r\n Resale is not allowed\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n knox Disclaimer indicator\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n knox Disclaimer indicator\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

*Almost there! Check all the boxes to proceed.

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nCheckoutPaymentInfo.propTypes = {\r\n isOpen: PropTypes.bool.isRequired,\r\n onToggle: PropTypes.func,\r\n placeOrder: PropTypes.func,\r\n backToOrderSummary: PropTypes.func,\r\n onChangeTermsNConditions: PropTypes.func,\r\n termsNConditions: PropTypes.bool\r\n};\r\n","export default __webpack_public_path__ + \"static/media/discount-coupon.5fbdc1e6.svg\";","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport DiscountCoupon from 'assets/images/general/discount-coupon.svg';\r\nimport style from './AdditionalPromo.module.scss';\r\n\r\nconst AdditionalPromo = ({ isPromoApplied = false, onApplyPromo = () => { }, roundedBtn = false }) => {\r\n const addPromoCode = () => {\r\n if (!isPromoApplied) {\r\n onApplyPromo();\r\n }\r\n };\r\n\r\n const getBtnStyles = () => {\r\n return [\r\n style.additionalPromo__btn,\r\n isPromoApplied ? style.additionalPromo__btn_promo_added : style.additionalPromo__btn_add_promo,\r\n roundedBtn ? style.additionalPromo__btn_rounded : ''\r\n ].filter(Boolean).join(' ');\r\n };\r\n\r\n const getBtnText = () => {\r\n if (!isPromoApplied) {\r\n return 'Add Promotion';\r\n }\r\n\r\n return 'Promotion Added';\r\n };\r\n\r\n return (\r\n
\r\n
\r\n Discount coupon\r\n 20% OFF: Galaxy Z Series\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nAdditionalPromo.propTypes = {\r\n isPromoApplied: PropTypes.bool,\r\n onApplyPromo: PropTypes.func,\r\n roundedBtn: PropTypes.bool\r\n};\r\n\r\nexport default AdditionalPromo;\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport { isEmpty } from 'underscore';\r\nimport { Spinner, Table } from 'reactstrap';\r\nimport * as Sentry from '@sentry/react';\r\n\r\nimport { ROUTES, APP_CURRENCY_NAME, STORAGEKEY_TRADE_IN_DEVICE, AUTO_APPLY_PROMO_CODE, PRE_ORDER_PRODUCTS, SEPT_PROMO_CODE, VALID_RENTAL_PERIODS } from 'config/constants';\r\n\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport CheckoutPaymentInfo from 'layouts/CartLayout/CheckoutPaymentInfo/CheckoutPaymentInfo';\r\nimport { getStorageAttribute, isAutoApplyCouponValid, isSeptPromoValid } from 'utils/helpers';\r\nimport AfterTradeIn from 'components/AfterTradeIn/AfterTradeIn';\r\nimport AdditionalPromo from '../AdditionalPromo/AdditionalPromo';\r\n\r\nimport { checkoutRules } from 'api/cart';\r\nimport { trackKlaviyoEvent } from 'api/tracking';\r\n\r\nimport { handleRemoveCartItem } from 'redux/reducers/cart';\r\nimport { triggerOrderPlacingEventFromOutside, orderTotal, triggerOrderPlacingFinalEvent, placeOrderEventThroughPopup } from 'redux/reducers/order';\r\n\r\nimport styles from './ToProceed.module.scss';\r\n\r\nconst ToProceed = ({ products, userCart, hideBottomCTABtns, cartStickyBottomExpanded, submitCoupon, coupon, setCoupon, handleSubmit, order, orderExist, type, Loading, onClick = () => { }, onSeptPromoApply = () => { } }) => {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const location = useLocation();\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n const cartLocalStorageJSON = localStorage.getItem('products');\r\n const { cardList } = useSelector((state) => ({ cardList: state.payment.cardList }));\r\n const cartLocalStorage = cartLocalStorageJSON ? JSON.parse(cartLocalStorageJSON) : [];\r\n const [triggerPlaceOrderEvent, setTriggerPlaceOrderEvent] = useState(false);\r\n const [triggeringThePlaceOrderButtonEvent, setTriggeringThePlaceOrderButtonEvent] = useState(false);\r\n const [currentCartItemPricingObjLocalStorage, setCurrentCartItemPricingObjLocalStorage] = useState({});\r\n const emptyCart = !(products?.length > 0 || cartLocalStorage?.length > 0);\r\n const { isAuthed } = useSelector(state => ({ isAuthed: state.auth.isAuthed }));\r\n const { isVerified, singPassExpired } = useSelector(state => ({\r\n isVerified: state.auth.profile.singpass_status === 'verified',\r\n singPassExpired: state.auth.profile.singpassExpired\r\n }));\r\n const { orderPlaced } = useSelector(state => ({ orderPlaced: state.order.orderPlaced }));\r\n const { profile } = useSelector(state => ({ profile: state?.auth?.profile }));\r\n const { orderPlacementPageTermsAndCondition } = useSelector(state => ({\r\n orderPlacementPageTermsAndCondition: state.order.orderPlacementPageTermsAndCondition,\r\n canProceedToOrderPlacement: state.order.canProceedToOrderPlacement\r\n }));\r\n const { selectedCartItem, currentCartItemPricingObj, cartProducts, meta } = useSelector(state => ({\r\n selectedCartItem: state.cart.selectedCartItem,\r\n currentCartItemPricingObj: state.cart.currentCartItemPricingObj,\r\n cartProducts: state.cart.fetchedProducts,\r\n meta: state.cart.overview\r\n }));\r\n const [couponAmount, setCouponAmount] = useState('');\r\n const [couponCode, setCouponCode] = useState('');\r\n const [isExtraMonthPromo, setIsExtraMonthPromo] = useState(false);\r\n const [productName, setProductName] = useState(null);\r\n const [productColor, setProductColor] = useState(null);\r\n const [productStorage, setProductStorage] = useState(null);\r\n const { selectedMethodId } = useSelector((state) => ({ selectedMethodId: state.payment.selectedPaymentMethodId }));\r\n const tradeInDevice = JSON.parse(localStorage.getItem(STORAGEKEY_TRADE_IN_DEVICE));\r\n const [retailPrice, setRetailPrice] = useState((selectedCartItem?.base_product?.retail_value || selectedCartItem?.retail_value)?.toFixed(2).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ','));\r\n const [canViewApplyAdditionalPromo, setCanViewApplyAdditionalPromo] = useState(false);\r\n const [isSeptPromoApplied, setIsSeptPromoApplied] = useState(false);\r\n\r\n useEffect(() => {\r\n if (currentCartItemPricingObj === undefined || isEmpty(currentCartItemPricingObj)) {\r\n setCurrentCartItemPricingObjLocalStorage(JSON.parse(localStorage.getItem('currentCartItemPricingObj')));\r\n } else {\r\n setCurrentCartItemPricingObjLocalStorage(currentCartItemPricingObj);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [currentCartItemPricingObj]);\r\n\r\n useEffect(() => {\r\n if (triggerPlaceOrderEvent === true && triggeringThePlaceOrderButtonEvent === true) {\r\n dispatch(triggerOrderPlacingEventFromOutside(true));\r\n setIsOpen(true);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [triggerPlaceOrderEvent]);\r\n\r\n const handleProceedToOrder = async () => {\r\n if (!isAuthed) {\r\n history.push(ROUTES.SIGN_IN);\r\n } else if (!isVerified) {\r\n history.push(ROUTES.SINGPASS);\r\n } else if (isAuthed && profile?.is_student && !profile?.emailVerified) {\r\n history.push(ROUTES.OTP_VERIFICATION);\r\n } else if (!isVerified || singPassExpired) {\r\n setIsLoading(true);\r\n await getRemovedItemsFromCart();\r\n history.push(ROUTES.SINGPASS);\r\n setIsLoading(false);\r\n } else {\r\n setIsLoading(true);\r\n\r\n if (location.pathname === ROUTES.CART) {\r\n setIsLoading(true);\r\n\r\n if (!isEmpty(selectedCartItem)) {\r\n const itemsToRemove = getUnwantedCartItems();\r\n const removedCartItems = await getRemovedItemsFromCart();\r\n\r\n if (itemsToRemove.length === 0 || removedCartItems.length === itemsToRemove.length) {\r\n const resp = await checkoutRules();\r\n\r\n setIsLoading(false);\r\n\r\n if (resp?.status === 204) {\r\n trackKlaviyoEvent('start-checkout', {\r\n cartMeta: meta, cartItems: cartProducts\r\n });\r\n\r\n history.push(ROUTES.ORDER_SUMMARY);\r\n } else {\r\n notify(resp?.data?.message?.message, notifType.DANGER, 5000);\r\n }\r\n } else {\r\n setIsLoading(false);\r\n notify('Error! Something went wrong, please try again!', notifType.DANGER, 5000);\r\n }\r\n }\r\n } else if (location.pathname === ROUTES.ORDER_SUMMARY) {\r\n if (type !== 'rent' && type !== 'purchase') {\r\n if (selectedMethodId === undefined || selectedMethodId === '' || selectedMethodId === null) {\r\n notify('Error ! Please enter the payment method!', notifType.DANGER);\r\n dispatch(triggerOrderPlacingEventFromOutside(true));\r\n } else {\r\n onClick();\r\n }\r\n } else {\r\n onClick();\r\n }\r\n\r\n setIsLoading(false);\r\n } else if (location.pathname === ROUTES.REVIEW_ORDER) {\r\n trackKlaviyoEvent('acknowledge_popup_view', {\r\n email: profile?.email,\r\n user_id: profile?.id\r\n });\r\n dispatch(placeOrderEventThroughPopup(true));\r\n setIsLoading(false);\r\n } else {\r\n validateCheckout();\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (triggeringThePlaceOrderButtonEvent) {\r\n setTriggerPlaceOrderEvent(true);\r\n setIsLoading(false);\r\n } else {\r\n setTriggeringThePlaceOrderButtonEvent(false);\r\n }\r\n }, [triggeringThePlaceOrderButtonEvent]);\r\n\r\n const handleThePreviousRouteBeforeTheOrder = async () => {\r\n const previousProductPage = localStorage.getItem('previousProductPage');\r\n\r\n switch (location.pathname) {\r\n case ROUTES.CART:\r\n default:\r\n if (!isAuthed) {\r\n history.push(ROUTES.SIGN_IN);\r\n }\r\n\r\n if (previousProductPage) {\r\n history.push(previousProductPage);\r\n } else {\r\n history.push(ROUTES.HOME);\r\n }\r\n\r\n break;\r\n case ROUTES.SIGN_UP:\r\n history.push(ROUTES.CART);\r\n break;\r\n case ROUTES.ORDER_SUMMARY:\r\n if (profile?.singpass_status !== 'verified') {\r\n history.push(ROUTES.SINGPASS);\r\n } else if (profile?.singpass_status === 'verified') {\r\n history.push(ROUTES.CART);\r\n }\r\n\r\n break;\r\n case ROUTES.REVIEW_ORDER:\r\n if (profile?.singpass_status !== 'verified') {\r\n history.push(ROUTES.SINGPASS);\r\n } else if (profile?.singpass_status === 'verified') {\r\n dispatch(triggerOrderPlacingEventFromOutside(false));\r\n history.push(ROUTES.ORDER_SUMMARY);\r\n }\r\n\r\n break;\r\n }\r\n };\r\n\r\n const validateCheckout = async () => {\r\n setIsLoading(true);\r\n\r\n try {\r\n const resp = await checkoutRules();\r\n\r\n if (resp?.status === 204) {\r\n setIsLoading(false);\r\n history.push(ROUTES.ORDER_SUMMARY);\r\n } else {\r\n setIsLoading(false);\r\n notify(resp?.data?.message?.message, notifType.DANGER, 5000);\r\n }\r\n } catch (error) {\r\n Sentry.captureException(error);\r\n }\r\n };\r\n\r\n const getCurrency = () => APP_CURRENCY_NAME;\r\n\r\n const getMonthlyFee = () => {\r\n let fees = 0;\r\n const currency = getCurrency();\r\n\r\n if (order?.newTotalPrice) {\r\n fees = order.newTotalPrice;\r\n } else if (products?.length > 0) {\r\n const product = selectedCartItem;\r\n\r\n fees = parseInt(product?.total).toFixed(0);\r\n } else if (userCart?.length > 0) {\r\n fees = parseInt(selectedCartItem?.total).toFixed(0);\r\n }\r\n\r\n return currency + ' ' + fees;\r\n };\r\n\r\n const formatAmount = (amount) => {\r\n if (amount % 1 === 0) {\r\n amount = parseInt(amount, 10);\r\n } else {\r\n amount = amount.toFixed(2);\r\n }\r\n\r\n return amount;\r\n };\r\n\r\n const getCouponAmount = () => {\r\n let discountAmount = 0;\r\n const currency = getCurrency();\r\n const updatedSelectedItem = getUpdatedSelectedItem(selectedCartItem?.product_attribute_value_id);\r\n\r\n if (updatedSelectedItem?.discount_amount && updatedSelectedItem?.discount_amount > 0) {\r\n discountAmount = parseFloat(updatedSelectedItem?.discount_amount);\r\n } else if (meta.discount && meta.discount > 0) {\r\n discountAmount = parseFloat(meta.discount);\r\n } else if (order?.newDiscount) {\r\n discountAmount = parseFloat(order.newDiscount);\r\n }\r\n\r\n return currency + ' ' + formatAmount(discountAmount);\r\n };\r\n\r\n const getTotalPayable = (return2DP = false) => {\r\n const currency = getCurrency();\r\n\r\n if (return2DP) return parseFloat(getTotalPayableAmount()).toFixed(2);\r\n\r\n return currency + ' ' + Number(getTotalPayableAmount()).toFixed(2);\r\n };\r\n\r\n const getTotalPayableAmount = () => {\r\n let fees = 0;\r\n\r\n if (products?.length > 0) {\r\n const product = selectedCartItem;\r\n\r\n fees = parseInt(product?.total).toFixed(0);\r\n } else if (userCart?.length > 0) {\r\n fees = parseInt(selectedCartItem?.total).toFixed(0);\r\n } else if (order?.newTotalPrice) {\r\n fees = parseInt(order?.newTotalPrice).toFixed(0);\r\n }\r\n\r\n let discountAmount = 0;\r\n const updatedSelectedItem = getUpdatedSelectedItem(selectedCartItem?.product_attribute_value_id);\r\n\r\n if (updatedSelectedItem?.discount_amount && updatedSelectedItem?.discount_amount > 0) {\r\n discountAmount = parseFloat(updatedSelectedItem?.discount_amount);\r\n } else if (meta.discount && meta.discount > 0) {\r\n discountAmount = parseFloat(meta.discount);\r\n } else if (order?.newDiscount) {\r\n discountAmount = parseFloat(order.newDiscount);\r\n }\r\n\r\n discountAmount = formatAmount(discountAmount);\r\n\r\n let totalPayableAmount = parseFloat(fees - discountAmount);\r\n\r\n totalPayableAmount = formatAmount(totalPayableAmount);\r\n\r\n return totalPayableAmount;\r\n };\r\n\r\n const getDuration = () => {\r\n const duration = getDurationCount();\r\n const months = duration === 1 ? 'month' : 'months';\r\n\r\n return `${duration} ${months}`;\r\n };\r\n\r\n const getDurationCount = () => {\r\n let duration = 0;\r\n\r\n if (orderExist) {\r\n duration = order.newRentalPeriod.duration_time;\r\n } else if (products?.length > 0) {\r\n const product = selectedCartItem;\r\n\r\n duration = product?.rental_period?.duration_time;\r\n } else if (userCart?.length > 0) {\r\n duration = currentCartItemPricingObjLocalStorage?.data?.duration_time;\r\n }\r\n\r\n return duration;\r\n };\r\n\r\n const onToggle = () => setIsOpen(!isOpen);\r\n\r\n const placeOrder = () => {\r\n setIsOpen(false);\r\n dispatch(triggerOrderPlacingFinalEvent(true));\r\n };\r\n\r\n const backToOrderSummary = () => setIsOpen(!isOpen);\r\n\r\n const getProductName = () => {\r\n if (orderExist) {\r\n return productName;\r\n }\r\n\r\n if (selectedCartItem && !isEmpty(selectedCartItem)) {\r\n return selectedCartItem.name || selectedCartItem.base_product?.name;\r\n }\r\n\r\n return productName;\r\n };\r\n\r\n const getProductColorStorage = () => {\r\n if (orderExist) {\r\n const orderColorNameData = order?.variation?.product?.colors?.find(e => e.id === order.color_id);\r\n\r\n return `${orderColorNameData.name} | ${order.variation.value}`;\r\n }\r\n\r\n if (selectedCartItem && !isEmpty(selectedCartItem)) {\r\n const colorName = selectedCartItem.color?.name ?? selectedCartItem.selectedColor?.text;\r\n const storageAttribute = getStorageAttribute(selectedCartItem);\r\n\r\n return `${colorName} | ${storageAttribute}`;\r\n }\r\n\r\n return `${productColor} | ${productStorage}`;\r\n };\r\n\r\n const updateOrderPrice = (value) => dispatch(orderTotal(value));\r\n\r\n const getRemovedItemsFromCart = async () => {\r\n const itemsToRemove = getUnwantedCartItems();\r\n const removedCartItems = [];\r\n\r\n const removeItems = async () => {\r\n if (itemsToRemove.length > 0) {\r\n const removePromises = itemsToRemove.map(item =>\r\n new Promise(resolve => {\r\n dispatch(handleRemoveCartItem(item.product_attribute_value_id, () => {\r\n removedCartItems.push(item.product_attribute_value_id);\r\n resolve();\r\n }));\r\n })\r\n );\r\n\r\n await Promise.all(removePromises);\r\n }\r\n };\r\n\r\n await removeItems();\r\n\r\n return removedCartItems;\r\n };\r\n\r\n const getUnwantedCartItems = () => userCart.filter(e => e?.product_attribute_value_id !== selectedCartItem?.product_attribute_value_id);\r\n\r\n const isValidPromo = () => isSeptPromoValid() && !emptyCart;\r\n\r\n const isValidCartItem = (item) =>\r\n !isEmpty(item) &&\r\n PRE_ORDER_PRODUCTS.includes(item?.base_product?.slug) &&\r\n VALID_RENTAL_PERIODS.includes(item?.rental_period?.duration_time);\r\n\r\n const getCanViewApplyAdditionalPromoStatus = () =>\r\n isValidPromo() &&\r\n !orderExist &&\r\n isValidCartItem(selectedCartItem);\r\n\r\n const getUpdatedSelectedItem = (attributeValueId) => {\r\n return userCart.find(item => item.product_attribute_value_id === attributeValueId);\r\n };\r\n\r\n const updateSeptemberPromo = (selectedItem = null) => {\r\n const isPreOrderProduct = PRE_ORDER_PRODUCTS.includes(selectedCartItem?.base_product?.slug);\r\n const updatedSelectedItem = selectedItem ?? getUpdatedSelectedItem(selectedCartItem?.product_attribute_value_id);\r\n const isValidRentalPeriod = VALID_RENTAL_PERIODS.includes(selectedCartItem?.rental_period?.duration_time);\r\n\r\n if (!isPreOrderProduct || !isValidRentalPeriod || !updatedSelectedItem?.discount_amount || updatedSelectedItem?.discount_amount <= 0) {\r\n setCoupon('');\r\n setCouponCode('');\r\n setCouponAmount('');\r\n setIsSeptPromoApplied(false);\r\n } else {\r\n setIsSeptPromoApplied(true);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (meta.coupon) {\r\n setCoupon(meta.coupon);\r\n setCouponCode(meta.coupon);\r\n setCouponAmount(meta.coupon);\r\n\r\n const isPreOrderProduct = PRE_ORDER_PRODUCTS.includes(selectedCartItem?.base_product?.slug);\r\n\r\n if (isAutoApplyCouponValid() && meta?.coupon === AUTO_APPLY_PROMO_CODE) {\r\n if (!isPreOrderProduct || selectedCartItem?.rental_period?.duration_time !== 12) {\r\n setCoupon('');\r\n setCouponCode('');\r\n setCouponAmount('');\r\n }\r\n\r\n setIsExtraMonthPromo(meta.discount === '0.00' && isPreOrderProduct && selectedCartItem?.rental_period?.duration_time === 12);\r\n } else if (isSeptPromoValid() && meta?.coupon === SEPT_PROMO_CODE) {\r\n updateSeptemberPromo();\r\n } else {\r\n setIsExtraMonthPromo(meta.discount === '0.00');\r\n }\r\n } else if (orderExist && order.newDiscount) {\r\n setCoupon(order.coupon);\r\n setCouponCode(order.coupon);\r\n setCouponAmount(order.coupon);\r\n setIsExtraMonthPromo(order.newDiscount === '0.00');\r\n } else {\r\n setCoupon('');\r\n setCouponCode('');\r\n setCouponAmount('');\r\n setIsExtraMonthPromo('');\r\n }\r\n\r\n if (!tradeInDevice) {\r\n updateOrderPrice(getTotalPayableAmount());\r\n }\r\n\r\n if (order) {\r\n setRetailPrice(order?.variation?.product?.retail_value);\r\n } else if (selectedCartItem) {\r\n const storages = selectedCartItem?.base_product?.attributes?.find(e => e.type === 'storage');\r\n const storage = storages?.attribute_values?.find(e => e.id === selectedCartItem?.product_attribute_value_id);\r\n const retailValue = Number(storage?.meta?.retail_value)?.toFixed(2).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n\r\n setRetailPrice(retailValue);\r\n }\r\n\r\n setCanViewApplyAdditionalPromo(getCanViewApplyAdditionalPromoStatus());\r\n }, [meta, order, selectedCartItem]);\r\n\r\n useEffect(() => {\r\n if (orderExist) {\r\n const orderColorNameData = order?.variation?.product?.colors?.find(e => e.id === order.color_id);\r\n\r\n setProductName(order.variation.product.name);\r\n setProductColor(orderColorNameData.name);\r\n setProductStorage(order.variation.value);\r\n }\r\n }, [orderExist, order]);\r\n\r\n useEffect(() => {\r\n if (!couponAmount || !couponCode) {\r\n setIsSeptPromoApplied(false);\r\n }\r\n }, [userCart]);\r\n\r\n const getButtonText = (isLoading, type) => {\r\n if (isLoading) return ;\r\n\r\n if (type === 'rent') {\r\n return 'Update';\r\n } else {\r\n const isOrderReview = location.pathname === ROUTES.REVIEW_ORDER;\r\n\r\n return isOrderReview ? 'Place Order' : 'Next';\r\n }\r\n };\r\n\r\n const showUndiscountedPrice = couponAmount && couponCode && getMonthlyFee(true) !== getTotalPayable(true);\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {isMobile && canViewApplyAdditionalPromo && (location.pathname === ROUTES.CART || (location.pathname === ROUTES.ORDER_SUMMARY && type === 'rent')) &&\r\n
\r\n \r\n
}\r\n
\r\n {(((selectedCartItem !== null && selectedCartItem !== undefined && !isEmpty(selectedCartItem)) && (!isMobile && !emptyCart)) || (orderExist && !isMobile)) && <>\r\n
\r\n
Subscription Summary
\r\n \r\n
\r\n \r\n
\r\n {couponAmount && couponCode && (\r\n <>\r\n \r\n
\r\n \r\n )}\r\n {tradeInDevice && (\r\n <>\r\n \r\n
\r\n \r\n )}\r\n
\r\n\r\n {(location.pathname === ROUTES.CART || (location.pathname === ROUTES.ORDER_SUMMARY && type === 'rent')) && <>\r\n <>\r\n
\r\n
\r\n
Promo Code
\r\n
\r\n setCoupon(e.target.value)} />\r\n \r\n
\r\n
\r\n
\r\n {!isMobile && canViewApplyAdditionalPromo\r\n ?
\r\n \r\n
\r\n :
\r\n }\r\n \r\n }\r\n }\r\n {((userCart?.length > 1 && isEmpty(selectedCartItem)) && !isMobile) &&\r\n
\r\n

You may only checkout one item at a time.

\r\n
}\r\n {(isMobile && location.pathname !== ROUTES.SIGNUP) &&
\r\n {isEmpty(selectedCartItem) && orderExist === false\r\n ?

You may only checkout one item at a time.

\r\n : <>\r\n {cartStickyBottomExpanded ? (\r\n
\r\n
Order Summary
\r\n \r\n
\r\n \r\n
\r\n {couponAmount && couponCode && (\r\n <>\r\n \r\n
\r\n \r\n )}\r\n {tradeInDevice && (\r\n <>\r\n \r\n
\r\n \r\n )}\r\n
\r\n ) : (\r\n
\r\n
Order Summary
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{getProductName()}\r\n {showUndiscountedPrice && (\r\n {getMonthlyFee()}/mo\r\n )}\r\n {getTotalPayable()}/mo\r\n
\r\n\r\n {/* NOTE: Deprecated Trade-In Flow */}\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{getProductName()}{getTotalPayable()}/mo\r\n {getMonthlyFee() !== getTotalPayable() && SGD {getMonthlyFee()}/mo}\r\n {tradeInDevice && !isEmpty(selectedCartItem)\r\n ? <>\r\n SGD /mo\r\n \r\n : `${getTotalPayable()}/mo`}\r\n \r\n
\r\n {tradeInDevice && ()} */}\r\n {tradeInDevice && ()}\r\n {(isExtraMonthPromo)\r\n ? Discount + FREE {getDurationCount() + 1}th month\r\n : couponAmount && couponCode && (Discount Applied: {couponCode})\r\n }\r\n {/* NOTE: Deprecated Trade-In Flow */}\r\n {/* {tradeInDevice && (*The first month is billed at the original subscription rate. When trade-in is complete, the new subscription rate will apply, and you will be credited Cinch Credit if applicable.)} */}\r\n
\r\n )}\r\n }\r\n
}\r\n {(!hideBottomCTABtns && (!emptyCart || orderExist) && location.pathname !== ROUTES.SIGNUP) &&\r\n
\r\n \r\n \r\n
}\r\n {(hideBottomCTABtns && ((!emptyCart && userCart.length > 0) || orderExist) && (location.pathname === ROUTES.ORDER_SUMMARY || location.pathname === ROUTES.REVIEW_ORDER) && isMobile && orderPlaced === false) &&\r\n
\r\n \r\n handleProceedToOrder(true)}\r\n disabled={(emptyCart && orderExist === false) || (\r\n orderPlacementPageTermsAndCondition === false ||\r\n orderPlacementPageTermsAndCondition === undefined ||\r\n isLoading ||\r\n (!cardList || cardList.length === 0)\r\n )}>\r\n {getButtonText(isLoading, type)}\r\n \r\n
}\r\n
\r\n {(emptyCart && userCart.length === 0 && orderExist === false) && (

*Your cart is empty. Please add at least one item in the cart.

)}\r\n
\r\n {((selectedCartItem !== null && selectedCartItem !== undefined && userCart?.length === 1) || orderExist) &&

By submitting your order, you agree to our Terms and Conditions and Privacy Policy.

}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst ProductInfoTable = ({ productName, productColorStorage, retailPrice }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{productName}
{productColorStorage} | RRP: SGD {retailPrice}
\r\n );\r\n};\r\n\r\nconst DurationAndPriceTable = ({ durationTime, baseRentalPrice, tradeInDevice, showUndiscountedPrice }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n \r\n */}\r\n \r\n
Duration{durationTime}
Monthly rate{baseRentalPrice}/mo
{tradeInDevice ? 'Original rate' : 'Monthly rate'}{baseRentalPrice}/mo
\r\n );\r\n};\r\n\r\nconst DiscountBreakdownTable = ({ coupon, discountAmount, discountedAmount, baseRentalPrice, durationTime, isExtraMonthPromo }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {coupon !== AUTO_APPLY_PROMO_CODE && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n
Discount: {coupon !== AUTO_APPLY_PROMO_CODE && coupon}- {discountAmount}/mo
{coupon !== AUTO_APPLY_PROMO_CODE ? 'After Discount:' : coupon}\r\n {(isExtraMonthPromo)\r\n ? + FREE {durationTime}th month\r\n : (coupon && discountAmount) && <>\r\n {baseRentalPrice}/mo\r\n {discountedAmount}/mo\r\n }\r\n
\r\n );\r\n};\r\n\r\nProductInfoTable.propTypes = {\r\n productName: PropTypes.string,\r\n productColorStorage: PropTypes.string,\r\n retailPrice: PropTypes.number\r\n};\r\n\r\nDurationAndPriceTable.propTypes = {\r\n durationTime: PropTypes.number,\r\n baseRentalPrice: PropTypes.number,\r\n tradeInDevice: PropTypes.object,\r\n showUndiscountedPrice: PropTypes.bool\r\n};\r\n\r\nDiscountBreakdownTable.propTypes = {\r\n coupon: PropTypes.string,\r\n discountAmount: PropTypes.number,\r\n discountedAmount: PropTypes.number,\r\n baseRentalPrice: PropTypes.number,\r\n durationTime: PropTypes.number,\r\n isExtraMonthPromo: PropTypes.bool\r\n};\r\n\r\nToProceed.propTypes = {\r\n products: PropTypes.array,\r\n userCart: PropTypes.array,\r\n hideBottomCTABtns: PropTypes.bool,\r\n cartStickyBottomExpanded: PropTypes.bool,\r\n form: PropTypes.string,\r\n triggerLoginSubmit: PropTypes.func,\r\n triggerRegistrationSubmit: PropTypes.func,\r\n coupon: PropTypes.string,\r\n setCoupon: PropTypes.func,\r\n submitCoupon: PropTypes.func,\r\n handleSubmit: PropTypes.func,\r\n Loading: PropTypes.bool,\r\n order: PropTypes.array,\r\n orderExist: PropTypes.bool,\r\n type: PropTypes.string,\r\n onClick: PropTypes.func,\r\n onSeptPromoApply: PropTypes.func\r\n};\r\n\r\nexport default ToProceed;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst CustomStepIcon = ({ completed, active, icon }) => {\r\n return (\r\n
\r\n {completed ? (\r\n
{icon}
\r\n ) : (\r\n active\r\n ?
{icon}
\r\n :
{icon}
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nCustomStepIcon.propTypes = {\r\n completed: PropTypes.bool,\r\n active: PropTypes.bool,\r\n icon: PropTypes.any\r\n};\r\n\r\nexport default CustomStepIcon;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Modal } from 'reactstrap';\r\nimport Button from 'containers/App/components/Button/Button';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { ROUTES } from 'config/constants';\r\n\r\nimport dangerSign from '../../assets/images/danger-sign.png';\r\nimport close from '../../assets/images/general/close.svg';\r\nimport './SingpassResult.scss';\r\n\r\nconst DuplicateErrorContent = ({ onClose, onSignIn, onContactUs }) => (\r\n <>\r\n
\r\n \r\n
Danger Sign
\r\n
Singpass Already Connected
\r\n
\r\n

Oops! It seems your Singpass is already linked to a different email.

\r\n
    \r\n
  • Please use the original email you have registered with Singpass.
  • \r\n
  • We have sent an email to that account so you can easily find it in case you have forgotten.
  • \r\n
  • If you no longer have access to that email or believe this is an error, please contact our customer support team for assistance.
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n);\r\n\r\nconst GeneralErrorContent = ({ onClose }) => (\r\n
\r\n
Danger Sign
\r\n
\r\n We are not able to retrieve your information from Singpass.\r\n
\r\n
\r\n \r\n
\r\n
\r\n);\r\n\r\nconst SingpassErrorModal = ({ isOpen, onClose, errorType, onSignIn }) => {\r\n const history = useHistory();\r\n const isDuplicateError = errorType === 'duplicate';\r\n\r\n if (!isOpen) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {isDuplicateError ? (\r\n history.push(ROUTES.CONTACT_US)} />\r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nDuplicateErrorContent.propTypes = {\r\n onClose: PropTypes.func.isRequired,\r\n onSignIn: PropTypes.func.isRequired,\r\n onContactUs: PropTypes.func.isRequired\r\n};\r\n\r\nGeneralErrorContent.propTypes = {\r\n onClose: PropTypes.func.isRequired\r\n};\r\n\r\nSingpassErrorModal.propTypes = {\r\n isOpen: PropTypes.bool.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n errorType: PropTypes.oneOf(['duplicate', 'error']).isRequired,\r\n onSignIn: PropTypes.func.isRequired\r\n};\r\n\r\nexport default SingpassErrorModal;\r\n","import React, { useEffect, useRef, useState, cloneElement, Children } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useLocation, useHistory } from 'react-router-dom';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Stepper from '@mui/material/Stepper';\r\nimport Step from '@mui/material/Step';\r\nimport StepLabel from '@mui/material/StepLabel';\r\nimport * as FS from '@fullstory/browser';\r\nimport { isEmpty } from 'underscore';\r\nimport { Spinner } from 'reactstrap';\r\nimport * as Sentry from '@sentry/react';\r\n\r\nimport { ROUTES, PRE_ORDER_PRODUCTS, SEPT_PROMO_CODE, VALID_RENTAL_PERIODS } from 'config/constants';\r\n\r\nimport CustomLinearProgress from 'containers/App/components/Loading/CustomLinearProgress';\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { isObjectEmpty, deleteAuthToken } from 'utils/helpers';\r\nimport { handleFetchingCart } from 'redux/reducers/cart';\r\nimport { billingOrder } from 'api/order';\r\nimport { trackKlaviyoEvent } from 'api/tracking';\r\nimport { triggerOrderPlacingEventFromOutside, placeOrderEventThroughPopup } from 'redux/reducers/order';\r\n\r\nimport ToProceed from './ToProceed/ToProceed';\r\nimport CustomStepIcon from './CustomStepIcon/CustomStepIcon';\r\nimport CheckoutPaymentInfo from 'layouts/CartLayout/CheckoutPaymentInfo/CheckoutPaymentInfo';\r\n\r\nimport { addItemsToCart, validateCoupon } from 'api/cart';\r\nimport { storeUserEvent } from 'api/user';\r\n\r\nimport StickyUpDown from '../../assets/images/stickyUpDownIcon.png';\r\nimport './CartLayout.scss';\r\nimport './../../screens/FAQ/FAQScreen.scss';\r\nimport { clearSingpassError } from 'redux/reducers/auth';\r\nimport SingpassErrorModal from '../../containers/SingpassResult/SingpassErrorModal';\r\nimport { logout } from 'api/auth';\r\n\r\nconst CartLayout = ({\r\n isStyledCard = true,\r\n onClick = () => { },\r\n children,\r\n type,\r\n buyPrice,\r\n cartItems,\r\n currentStep,\r\n form,\r\n triggerLoginSubmit,\r\n triggerRegistrationSubmit,\r\n submitCoupon,\r\n setOrder,\r\n order\r\n}) => {\r\n const elementRefForShippingSection = useRef(null);\r\n const history = useHistory();\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n const { pathname } = useLocation();\r\n const [isButtonDisabled] = useState(false);\r\n const [activeStep, setActiveStep] = useState(0);\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n const { cardList } = useSelector((state) => ({ cardList: state.payment.cardList }));\r\n const { selectedCartItem } = useSelector(state => ({ selectedCartItem: state.cart.selectedCartItem, meta: state.cart.overview }));\r\n const [cartStickyBottomExpanded, setCartStickyBottomExpanded] = useState(false);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const { segment } = useSelector(state => ({ segment: state.common.segment }));\r\n const segmentQuery = segment ? `?segment=${segment}` : '';\r\n const [Loading, setLoading] = useState(false);\r\n const [coupon, setCoupon] = useState('');\r\n const [orderExist, setOrderExist] = useState(false);\r\n const mapSteps = [{\r\n id: 0,\r\n key: ROUTES.CART,\r\n value: 'Review Cart'\r\n },\r\n {\r\n id: 1,\r\n key: ROUTES.SINGPASS,\r\n value: 'Singpass Verification'\r\n },\r\n {\r\n id: 2,\r\n key: ROUTES.ORDER_SUMMARY,\r\n value: 'Shipping & Payment'\r\n },\r\n {\r\n id: 2,\r\n key: ROUTES.REVIEW_ORDER,\r\n value: 'Review Order'\r\n },\r\n {\r\n id: 3,\r\n key: ROUTES.ORDER_SUMMARY_CONFIRMATION,\r\n value: 'Order Completed'\r\n }];\r\n const { profile } = useSelector(state => ({ profile: state?.auth?.profile }));\r\n const { isCartLoading, isPaymentLoading, isShippingLoading, singPassVerified, singPassExpired } = useSelector(state => ({\r\n isCartLoading: state.cart.isLoading,\r\n isPaymentLoading: state.payment.isLoading,\r\n isShippingLoading: state.user.isLoading,\r\n singPassVerified: state.auth?.profile?.singpass_status,\r\n singPassExpired: state.auth?.profile?.singpassExpired\r\n }));\r\n const { products, isAuthed } = useSelector(state => ({\r\n products: state.cart.fetchedProducts,\r\n singPassVerified: state.auth?.profile?.singpass_status,\r\n meta: state.cart.overview,\r\n isAuthed: state.auth.isAuthed\r\n }));\r\n const { orderPlaced } = useSelector(state => ({ orderPlaced: state.order.orderPlaced }));\r\n const cartLocalStorageJSON = localStorage.getItem('products');\r\n const cartLocalStorage = cartLocalStorageJSON ? JSON.parse(cartLocalStorageJSON) : [];\r\n const userCart = isAuthed ? products || cartItems : cartLocalStorage;\r\n const { orderPlacementPageTermsAndCondition } = useSelector(state => ({\r\n orderPlacementPageTermsAndCondition: state.order.orderPlacementPageTermsAndCondition,\r\n canProceedToOrderPlacement: state.order.canProceedToOrderPlacement\r\n }));\r\n const emptyCart = !(products?.length > 0 || cartLocalStorage?.length > 0);\r\n const [isLoadingExtend, setIsLoadingExtend] = useState(false);\r\n const { selectedMethodId } = useSelector((state) => ({\r\n selectedMethodId: state.payment.selectedPaymentMethodId\r\n }));\r\n const { orderPlaceDispatchThroughPopup } = useSelector(state => ({\r\n orderPlaceDispatchThroughPopup: state.order.orderPlaceDispatchThroughPopup\r\n }));\r\n const [stepperData, setStepperData] = useState([]);\r\n const { singpassError } = useSelector(state => state.auth);\r\n const [openErrorModal, setOpenErrorModal] = useState(false);\r\n\r\n useEffect(() => {\r\n const pageStack = JSON.parse(localStorage.getItem('routeHistoryStack'));\r\n\r\n if (pageStack && pageStack.length >= 2) {\r\n const secondLastPageUrl = pageStack[pageStack.length - 2];\r\n\r\n if ((location.pathname === ROUTES.CART || location.pathname === ROUTES.ORDER_SUMMARY || location.pathname === ROUTES.REVIEW_ORDER) && secondLastPageUrl.indexOf('cart') === -1) dispatch(handleFetchingCart());\r\n }\r\n\r\n if (buyPrice && (buyPrice === '' || buyPrice === null)) notify('This product is unavailable. Please contact customer service.', notifType.DANGER);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (singPassVerified === 'otp_required') {\r\n history.push(ROUTES.MYINFORMATION);\r\n }\r\n\r\n updateStepperSteps();\r\n }, [singPassVerified]);\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n storeUserEvent({\r\n event: 'terms_and_conditions_popup_opened',\r\n product_id: products[0]?.base_product?.id,\r\n cart_id: products[0]?.pivot?.id\r\n });\r\n\r\n FS.event('Terms and conditions popup opened', {\r\n user_id: profile.id.toString()\r\n });\r\n }\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n updateStepperSteps();\r\n }, []);\r\n\r\n const handleUrlChange = () => {\r\n switch (location.pathname) {\r\n case ROUTES.CART:\r\n default:\r\n setActiveStep(0);\r\n\r\n if (singPassVerified === 'rejected') {\r\n if (!localStorage.getItem('notificationplacedonetime')) {\r\n notify('Your singpass account was rejected. Please include income NOA', notifType.DANGER, 5000);\r\n localStorage.setItem('notificationplacedonetime', true);\r\n }\r\n }\r\n\r\n break;\r\n case ROUTES.SINGPASS:\r\n if (singPassVerified === 'verified' && !singPassExpired) {\r\n history.push(ROUTES.ORDER_SUMMARY);\r\n } else {\r\n setActiveStep(1);\r\n }\r\n\r\n break;\r\n case ROUTES.ORDER_SUMMARY:\r\n setActiveStep(singPassVerified === 'verified' ? 1 : 2);\r\n\r\n break;\r\n case ROUTES.REVIEW_ORDER:\r\n if (currentStep === 4) {\r\n setActiveStep(4);\r\n } else {\r\n setActiveStep(singPassVerified === 'verified' ? 2 : 3);\r\n }\r\n\r\n break;\r\n case ROUTES.ORDER_SUMMARY_CONFIRMATION:\r\n setActiveStep(singPassVerified === 'verified' ? 3 : 4);\r\n\r\n break;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n updateStepperSteps();\r\n handleUrlChange();\r\n\r\n const unlisten = history.listen(handleUrlChange);\r\n\r\n return () => unlisten();\r\n }, [location.pathname]);\r\n\r\n const toggleCartLayoutStickyBottom = () => setCartStickyBottomExpanded(!cartStickyBottomExpanded);\r\n\r\n const childrenWithProps = Children && Children.map(children, child => child && cloneElement(child, { cartStickyBottomExpanded, form }));\r\n\r\n const onToggle = () => {\r\n setIsOpen(!isOpen);\r\n dispatch(placeOrderEventThroughPopup(false));\r\n dispatch(triggerOrderPlacingEventFromOutside(false));\r\n };\r\n\r\n const backToOrderSummary = () => {\r\n setIsOpen(!isOpen);\r\n dispatch(placeOrderEventThroughPopup(false));\r\n dispatch(triggerOrderPlacingEventFromOutside(false));\r\n };\r\n\r\n const placeOrderDesktopTrigger = () => {\r\n if (!order) {\r\n if (selectedMethodId === undefined || selectedMethodId === '' || selectedMethodId === null) {\r\n notify('Error ! Please enter the payment method!', notifType.DANGER);\r\n dispatch(triggerOrderPlacingEventFromOutside(true));\r\n } else {\r\n if (location.pathname === ROUTES.REVIEW_ORDER) {\r\n trackKlaviyoEvent('acknowledge_popup_view', {\r\n email: profile?.email,\r\n user_id: profile?.id\r\n });\r\n dispatch(placeOrderEventThroughPopup(true));\r\n } else {\r\n dispatch(triggerOrderPlacingEventFromOutside(true));\r\n }\r\n }\r\n } else {\r\n setIsLoadingExtend(true);\r\n onClick();\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n const backToPreviousPage = () => {\r\n const previousProductPage = localStorage.getItem('previousProductPage');\r\n\r\n switch (location.pathname) {\r\n case ROUTES.CART:\r\n default:\r\n if (!isAuthed) {\r\n history.push(ROUTES.SIGN_IN);\r\n }\r\n\r\n if (previousProductPage) {\r\n history.push(previousProductPage);\r\n } else {\r\n history.push(ROUTES.HOME + segmentQuery);\r\n }\r\n\r\n break;\r\n case ROUTES.SIGN_UP:\r\n history.push(ROUTES.CART);\r\n break;\r\n case ROUTES.ORDER_SUMMARY:\r\n if (profile?.singpass_status !== 'verified') {\r\n history.push(ROUTES.SINGPASS);\r\n } else if (profile?.singpass_status === 'verified') {\r\n history.push(ROUTES.CART);\r\n }\r\n\r\n break;\r\n case ROUTES.REVIEW_ORDER:\r\n if (profile?.singpass_status !== 'verified') {\r\n history.push(ROUTES.SINGPASS);\r\n } else if (profile?.singpass_status === 'verified') {\r\n dispatch(triggerOrderPlacingEventFromOutside(false));\r\n history.push(ROUTES.ORDER_SUMMARY);\r\n }\r\n\r\n break;\r\n }\r\n };\r\n\r\n const handleSubmit = async e => {\r\n e.preventDefault();\r\n const code = coupon;\r\n\r\n applyCoupon(code);\r\n };\r\n\r\n const applyCoupon = async (code, isAutoApplyCoupon = false) => {\r\n const tmp = [];\r\n\r\n if (code === '') {\r\n notify('Error ! Please enter promo code', notifType.DANGER);\r\n\r\n return;\r\n }\r\n\r\n if (type !== 'rent') {\r\n if (!products.length) {\r\n notify('Your cart is empty. Please add at least one item in the cart.', notifType.DANGER);\r\n\r\n return;\r\n }\r\n }\r\n\r\n setLoading(true);\r\n\r\n if (type !== 'rent') {\r\n if (isAutoApplyCoupon || code === SEPT_PROMO_CODE) {\r\n if (code === SEPT_PROMO_CODE) {\r\n if (!PRE_ORDER_PRODUCTS.includes(selectedCartItem?.base_product?.slug) || !VALID_RENTAL_PERIODS.includes(selectedCartItem?.rental_period?.duration_time)) {\r\n notify('Error ! Invalid promo code', notifType.DANGER);\r\n setLoading(false);\r\n\r\n return;\r\n }\r\n }\r\n\r\n const preOrderedProducts = products.filter(product => PRE_ORDER_PRODUCTS.includes(product?.base_product?.slug) && VALID_RENTAL_PERIODS.includes(product?.rental_period?.duration_time));\r\n\r\n if (!preOrderedProducts || preOrderedProducts.length <= 0) {\r\n notify('Error ! Invalid promo code', notifType.DANGER);\r\n setLoading(false);\r\n\r\n return;\r\n }\r\n\r\n for (const product of preOrderedProducts) {\r\n const durationTime = JSON.parse(localStorage.getItem('currentCartItemPricingObj'));\r\n\r\n tmp.push(getFormattedObj(product, durationTime));\r\n }\r\n } else {\r\n for (const product of products) {\r\n const durationTime = JSON.parse(localStorage.getItem('currentCartItemPricingObj'));\r\n\r\n tmp.push(getFormattedObj(product, durationTime));\r\n }\r\n }\r\n } else {\r\n tmp.push({\r\n is_extend: true,\r\n is_purchase: false,\r\n product_attribute_value_id: order.product_attribute_value_id,\r\n quantity: order.quantity,\r\n rental_period_id: order.orderTypeValue,\r\n product_id: order.product_id,\r\n color_id: order.color_id\r\n });\r\n }\r\n\r\n try {\r\n await validateCoupon(code, tmp);\r\n\r\n notify('This coupon is verified', notifType.SUCCESS);\r\n setCoupon(code);\r\n\r\n if (type !== 'rent') {\r\n await calculateNewPrice(code, tmp);\r\n } else {\r\n await updateOrderData(order.id, type, order.orderTypeValue, code);\r\n }\r\n\r\n FS.event('Coupon Added', {\r\n code: code\r\n });\r\n } catch (error) {\r\n Sentry.captureException(error);\r\n notify(error.data.message, notifType.DANGER);\r\n setCoupon('');\r\n\r\n if (type === 'rent') {\r\n updateOrderData(order.id, type, order.orderTypeValue, '');\r\n } else {\r\n await calculateNewPrice('', tmp);\r\n }\r\n }\r\n\r\n setLoading(false);\r\n };\r\n\r\n const getFormattedObj = (product, durationTime) => {\r\n return {\r\n is_purchase: false,\r\n product_attribute_value_id: product.pivot.product_attribute_value_id,\r\n quantity: product.pivot.quantity,\r\n rental_period_id: product.pivot.rental_period_id,\r\n rental_period_duration: durationTime,\r\n product_id: product.base_product.id,\r\n color_id: product.pivot.color_id\r\n };\r\n };\r\n\r\n const calculateNewPrice = async (coupon, products) => {\r\n try {\r\n await addItemsToCart(products, coupon);\r\n dispatch(handleFetchingCart());\r\n } catch (error) {\r\n Sentry.captureException(error);\r\n }\r\n };\r\n\r\n const calcNewRentalPeriodAndPrice = (newRentalId, product) => {\r\n const newRentalPeriod = product.rental_period.find(e => Number(e.id) === Number(newRentalId));\r\n\r\n return { newRentalPeriod };\r\n };\r\n\r\n const updateOrderData = async (id, type, value, code) => {\r\n try {\r\n const { data } = await billingOrder(id, value, code);\r\n\r\n if (type === 'rent') {\r\n const { newRentalPeriod } = calcNewRentalPeriodAndPrice(value, data.data.variation.product);\r\n\r\n setOrder({\r\n ...data.data,\r\n orderType: type,\r\n orderTypeValue: value,\r\n newTotalPrice: data.data.newTotal,\r\n newCoupon: code,\r\n newDiscountedTotalPrice: data.data.newDiscountedTotal,\r\n newRentalPeriod\r\n });\r\n } else {\r\n setOrder({\r\n ...data.data,\r\n orderType: type,\r\n newTotalPrice: order.total,\r\n newDiscount: 0,\r\n orderTypeValue: value\r\n });\r\n }\r\n } catch (error) {\r\n Sentry.captureException(error);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (order && Object.keys(order).length > 0) {\r\n setOrderExist(true);\r\n } else {\r\n setOrderExist(false);\r\n }\r\n }, [order]);\r\n\r\n useEffect(() => {\r\n if (orderPlaceDispatchThroughPopup) {\r\n setIsOpen(true);\r\n dispatch(placeOrderEventThroughPopup(true));\r\n }\r\n }, [orderPlaceDispatchThroughPopup]);\r\n\r\n const getButtonText = (type, isLoadingExtend) => {\r\n if (isLoadingExtend) return ;\r\n\r\n if (type === 'rent') {\r\n return 'Update';\r\n } else {\r\n const isOrderSummary = location.pathname === ROUTES.REVIEW_ORDER;\r\n\r\n return isOrderSummary ? 'Place Order' : 'Next';\r\n }\r\n };\r\n\r\n const updateStepperSteps = () => {\r\n const updatedSteps = (singPassVerified === 'verified' && !singPassExpired)\r\n ? mapSteps.filter(step => step.key !== ROUTES.SINGPASS)\r\n : mapSteps;\r\n\r\n setStepperData(updatedSteps);\r\n };\r\n\r\n const showPromoCodeSection = (\r\n (\r\n (\r\n selectedCartItem !== null &&\r\n selectedCartItem !== undefined &&\r\n !isEmpty(selectedCartItem)\r\n ) && (isMobile && !emptyCart)\r\n ) ||\r\n (type === 'rent' && isMobile)\r\n ) && (\r\n location.pathname === ROUTES.CART ||\r\n (location.pathname === ROUTES.ORDER_SUMMARY && type === 'rent')\r\n );\r\n\r\n const onSeptPromoApply = () => applyCoupon(SEPT_PROMO_CODE, true);\r\n\r\n useEffect(() => {\r\n if (singpassError) {\r\n dispatch(handleFetchingCart());\r\n setOpenErrorModal(true);\r\n }\r\n }, [singpassError]);\r\n\r\n const handleCloseErrorModal = () => {\r\n setOpenErrorModal(false);\r\n dispatch(clearSingpassError());\r\n };\r\n\r\n const handleSignIn = async () => {\r\n setOpenErrorModal(false);\r\n dispatch(clearSingpassError());\r\n\r\n try {\r\n await logout();\r\n await deleteAuthToken();\r\n } catch (error) {\r\n Sentry.captureException(error);\r\n }\r\n\r\n window.location.replace(ROUTES.SIGN_IN);\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {type !== 'rent' && type !== 'buy' &&\r\n <>\r\n
\r\n \r\n {stepperData.map((step, index) => (\r\n \r\n (\r\n <>\r\n \r\n {step.value}\r\n \r\n )} />\r\n \r\n ))}\r\n \r\n
\r\n
\r\n \r\n }\r\n
\r\n
\r\n {childrenWithProps}\r\n
\r\n
\r\n {showPromoCodeSection &&\r\n
\r\n
\r\n
Promo Codes
\r\n
\r\n setCoupon(e.target.value)} />\r\n \r\n
\r\n
\r\n
}\r\n
\r\n {(!isMobile && (\r\n pathname === ROUTES.CART ||\r\n (pathname === ROUTES.REVIEW_ORDER && currentStep !== 3) ||\r\n (pathname === ROUTES.ORDER_SUMMARY && currentStep !== 4)\r\n )) &&\r\n
\r\n {(\r\n pathname === ROUTES.CART ||\r\n pathname === ROUTES.SIGNUP ||\r\n (pathname === ROUTES.REVIEW_ORDER && currentStep !== 3) ||\r\n (pathname === ROUTES.ORDER_SUMMARY && currentStep !== 4)\r\n ) && (\r\n
\r\n \r\n {((pathname === ROUTES.ORDER_SUMMARY || pathname === ROUTES.REVIEW_ORDER) && ((userCart?.length > 0 && !isObjectEmpty(selectedCartItem)) || orderExist)) && (\r\n <>\r\n
\r\n {isButtonDisabled &&

Please agree to the terms and conditions before proceeding.

}\r\n
\r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n {(isCartLoading || isPaymentLoading || isShippingLoading) && }\r\n
}\r\n
\r\n {(isMobile && (\r\n pathname !== ROUTES.SINGPASS &&\r\n pathname !== ROUTES.SIGNUP &&\r\n pathname !== ROUTES.SINGPASS_RESULT &&\r\n pathname !== ROUTES.SINGPASS_MANUALL_FORM &&\r\n (userCart?.length > 0 || orderExist) &&\r\n orderPlaced === false\r\n )) &&\r\n
\r\n {(pathname !== ROUTES.SIGNUP && (!isEmpty(selectedCartItem) || orderExist)) && }\r\n
\r\n \r\n
\r\n
}\r\n { setIsOpen(false); onClick(); }}\r\n backToOrderSummary={backToOrderSummary} />\r\n \r\n \r\n );\r\n};\r\n\r\nCartLayout.propTypes = {\r\n cartItems: PropTypes.array,\r\n children: PropTypes.node.isRequired,\r\n isStyledCard: PropTypes.bool,\r\n onClick: PropTypes.func,\r\n error: PropTypes.any,\r\n order: PropTypes.array,\r\n setOrder: PropTypes.func,\r\n type: PropTypes.string,\r\n buyPrice: PropTypes.string,\r\n products: PropTypes.array,\r\n currentStep: PropTypes.number,\r\n isAuthed: PropTypes.bool,\r\n form: PropTypes.string,\r\n triggerLoginSubmit: PropTypes.func,\r\n triggerRegistrationSubmit: PropTypes.func,\r\n submitCoupon: PropTypes.func\r\n};\r\n\r\nexport default CartLayout;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAECSURBVHgB7ZE7DoJAEIYX7ei8gUfQFho9idrZqQXPRux4NOsJ1BvoCYwFtR6BI9BCCPhPoonxxRIrk/2Tyb/LzPANA2NSUn8tRbTQtu1uVVUbHLuIRFGUie/7iUhvS6TIMIxeWZZHAgC0I6c7gUX6ayEEwNQESOHDMAw9cgQD6Oy6bu8niGmaoxsgUVV1eF8PeZZlfXpeFMWxDtT6BoBtEQcCeJ6XPuY552me5/RFF4DOjuOMPr3r7Y+3LGuG3XMcd1jPmNUIA21hBFmgnj/n228aljAfE67RMGUCiuN4r2laBz1LXdfpfnrMv6wLhQPYKgiCOWugKIqofnXrl5KSaqgrWa9mfxjMo50AAAAASUVORK5CYII=\"","import axios from 'axios';\r\n\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { getAuthToken } from 'utils/helpers';\r\n\r\nimport { AUTH_API_URL } from 'config/constants';\r\n\r\n/**\r\n * get products\r\n */\r\n\r\nexport async function getProducts(cat) {\r\n const options = {\r\n method: 'GET',\r\n url:\r\n AUTH_API_URL + ((cat !== null && cat !== undefined) ? `/products${cat}&paginate=true&channel=samsung&limit=12` : '/products?paginate=true&channel=samsung&limit=12')\r\n };\r\n\r\n if (getAuthToken()) {\r\n options.headers = {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n };\r\n }\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * get autocomplete products\r\n */\r\n\r\nexport async function getAutocompleteProducts(query) {\r\n const options = {\r\n method: 'GET',\r\n url: AUTH_API_URL + ((query === '' || query === undefined) ? '/products?autocomplete=true&channel=samsung' : `/products?search=${query}&autocomplete=true&channel=samsung`)\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * get products by category\r\n */\r\n\r\nexport async function getProductsByCategory(categ) {\r\n const options = {\r\n method: 'GET',\r\n url: AUTH_API_URL + `/products?paginate=true&channel=samsung&category=${categ}&limit=4`\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * return product\r\n * @param {Object} params\r\n */\r\n\r\nexport async function returnProduct(params) {\r\n const options = {\r\n method: 'POST',\r\n params,\r\n url: AUTH_API_URL + '/products/return',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n }\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * return product\r\n * @param {Object} params\r\n */\r\n\r\nexport async function contactProduct(params) {\r\n const options = {\r\n method: 'POST',\r\n params,\r\n url: AUTH_API_URL + '/products/contact',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n }\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * return product of one category\r\n * @param {number} id\r\n */\r\n\r\nexport async function categoryProducts(id) {\r\n const options = {\r\n method: 'GET',\r\n url: AUTH_API_URL + '/products?channel=samsung&category[]=' + id\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * get samsung products\r\n */\r\n\r\nexport async function getSamsungProducts() {\r\n const options = {\r\n method: 'GET',\r\n url:\r\n AUTH_API_URL + '/products?channel=samsung'\r\n };\r\n\r\n if (getAuthToken()) {\r\n options.headers = {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n };\r\n }\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n\r\n return false;\r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/media/logo.37bc476c.svg\";","import Button from 'containers/App/components/Button/Button';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useState, useEffect } from 'react';\r\nimport style from './ForgotForm.module.scss';\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { storeUserEvent } from 'api/user';\r\nimport TextField from '@mui/material/TextField';\r\nimport { styled } from '@mui/material/styles';\r\nimport backIcon from 'assets/images/general/back-icon.png';\r\n\r\nForgotForm.propTypes = {\r\n submit: PropTypes.func.isRequired,\r\n changeForm: PropTypes.func.isRequired,\r\n loading: PropTypes.bool,\r\n onFormDataItemChange: PropTypes.func,\r\n emailAddress: PropTypes.string,\r\n fromPopup: PropTypes.bool\r\n};\r\n\r\nconst CssTextField = styled(TextField)({\r\n '& label.Mui-focused': {\r\n color: '#A0AAB4'\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: '#AAA'\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': {\r\n borderColor: '#AAA'\r\n },\r\n '&:hover fieldset': {\r\n borderColor: '#AAA'\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: '#AAA'\r\n }\r\n }\r\n});\r\n\r\nfunction ForgotForm({\r\n submit,\r\n changeForm,\r\n loading,\r\n onFormDataItemChange,\r\n emailAddress,\r\n fromPopup\r\n}) {\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n const [email, setEmail] = useState(emailAddress);\r\n\r\n const handleSubmit = async e => {\r\n e.preventDefault();\r\n\r\n if (email === '') {\r\n notify('Email is required.', notifType.DANGER);\r\n\r\n return true;\r\n }\r\n\r\n submit(email);\r\n };\r\n\r\n useEffect(() => {\r\n const triggerUserEvent = async () => {\r\n const payload = {\r\n event: 'forgot_password'\r\n };\r\n\r\n await storeUserEvent(payload);\r\n };\r\n\r\n triggerUserEvent();\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
Reset password
\r\n
\r\n
Enter the email address or mobile phone number associated with your Cinch account.
\r\n
\r\n
\r\n
\r\n { onFormDataItemChange('email', e.target.value); setEmail(e.target.value); }} />\r\n
\r\n
\r\n\r\n {fromPopup && (\r\n
\r\n \r\n
\r\n )}\r\n {(!fromPopup && !isMobile) && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ForgotForm;\r\n","import React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport OtpInput from 'react-otp-input';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport Button from 'containers/App/components/Button/Button';\r\n\r\nimport { updateOTPDataFromStateToStore } from 'redux/reducers/user';\r\nimport { storeUserEvent } from 'api/user';\r\n\r\nimport backIcon from 'assets/images/general/back-icon.png';\r\nimport style from './OTPForm.module.scss';\r\n\r\n// TODO: This component should be refactored\r\nconst AuthOTPForm = ({\r\n submit,\r\n changeForm,\r\n timer,\r\n resendCode,\r\n loading,\r\n type,\r\n otp,\r\n setOtp,\r\n lastnumber,\r\n email = '',\r\n showResend = true,\r\n numInput = 6,\r\n showActionButton = false,\r\n fromPopup\r\n}) => {\r\n const dispatch = useDispatch();\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n\r\n const handleChange = (otp) => setOtp(otp);\r\n\r\n const handleSubmit = e => {\r\n e.preventDefault();\r\n submit(type);\r\n };\r\n\r\n const maskedEmail = () => {\r\n const [username, domain] = email.split('@');\r\n const maskedUsername = username.substring(0, 3) + '*'.repeat(username.length - 3);\r\n\r\n return maskedUsername + '@' + domain;\r\n };\r\n\r\n useEffect(() => {\r\n dispatch(updateOTPDataFromStateToStore({ otp: otp, email: email }));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [otp]);\r\n\r\n useEffect(() => {\r\n const triggerUserEvent = async () => {\r\n let event = '';\r\n\r\n if (type === 'forgot') {\r\n event = 'forgot_otp';\r\n } else {\r\n event = 'student_otp';\r\n }\r\n\r\n const payload = {\r\n event: event\r\n };\r\n\r\n await storeUserEvent(payload);\r\n };\r\n\r\n triggerUserEvent();\r\n }, [type]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
Verification required
\r\n
\r\n
{email ? `We've sent a One Time Password (OTP) to the email ${maskedEmail()} Please enter it below.` : `SMS sent to phone number ending with ${lastnumber}`}
\r\n
\r\n
\r\n (\r\n \r\n )}/>\r\n
\r\n {fromPopup && (\r\n
\r\n \r\n
\r\n )}\r\n {(!fromPopup && !isMobile) && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n {timer > 0 &&
Resend Code\r\n {timer > 0 ? ` (${timer} S)` : ''}\r\n
}\r\n
\r\n
\r\n );\r\n};\r\n\r\nAuthOTPForm.propTypes = {\r\n submit: PropTypes.func.isRequired,\r\n changeForm: PropTypes.func,\r\n timer: PropTypes.number,\r\n resendCode: PropTypes.func,\r\n loading: PropTypes.bool,\r\n type: PropTypes.string,\r\n otp: PropTypes.string,\r\n setOtp: PropTypes.func,\r\n lastnumber: PropTypes.string,\r\n singpass: PropTypes.bool,\r\n email: PropTypes.string,\r\n showResend: PropTypes.bool,\r\n numInput: PropTypes.number,\r\n isReset: PropTypes.bool,\r\n showActionButton: PropTypes.bool,\r\n fromPopup: PropTypes.bool\r\n};\r\n\r\nexport default AuthOTPForm;\r\n","export default __webpack_public_path__ + \"static/media/facebook_icon.df31b047.svg\";","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport StickyBottom from 'components/StickyBottom/StickyBottom';\r\nimport Button from 'containers/App/components/Button/Button';\r\nimport TextField from '@mui/material/TextField';\r\nimport { styled } from '@mui/material/styles';\r\n\r\nimport googIcon from 'assets/images/general/google_icon.png';\r\nimport facebookIcon from 'assets/images/general/facebook_icon.svg';\r\n\r\nimport style from './InitialLoginForm.module.scss';\r\n\r\nconst CssTextField = styled(TextField)({\r\n '& label.Mui-focused': {\r\n color: '#A0AAB4'\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: '#AAA'\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': {\r\n borderColor: '#AAA'\r\n },\r\n '&:hover fieldset': {\r\n borderColor: '#AAA'\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: '#AAA'\r\n }\r\n }\r\n});\r\n\r\nconst InitialLoginForm = ({\r\n containerClass,\r\n handleSocialLogin,\r\n setEmailId,\r\n checkEmailAvailability,\r\n onBack,\r\n loading,\r\n fromPopup\r\n}) => {\r\n const [emailError, setEmailError] = useState(true);\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n\r\n const onEmailChange = (e) => {\r\n if (e.target.value === '') {\r\n setEmailError(true);\r\n\r\n return;\r\n }\r\n\r\n setEmailError(false);\r\n setEmailId(e.target.value);\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n

Welcome to Cinch

\r\n

To get started, please enter your email or sign in with Google or Facebook.

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n Or\r\n \r\n
\r\n
\r\n onEmailChange(e)}\r\n variant='standard'\r\n className={style.inputWrapper__email}/>\r\n
\r\n {!isMobile && !fromPopup &&\r\n
\r\n \r\n \r\n
\r\n }\r\n {fromPopup &&\r\n \r\n }\r\n
\r\n {!fromPopup &&\r\n }\r\n \r\n );\r\n};\r\n\r\nInitialLoginForm.propTypes = {\r\n containerClass: PropTypes.string,\r\n handleSocialLogin: PropTypes.func.isRequired,\r\n setEmailId: PropTypes.func.isRequired,\r\n checkEmailAvailability: PropTypes.func.isRequired,\r\n onBack: PropTypes.func.isRequired,\r\n loading: PropTypes.bool,\r\n fromPopup: PropTypes.bool\r\n};\r\n\r\nexport default InitialLoginForm;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAA2CAYAAABumXGkAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAARuSURBVGhD7ZZLSFxXHMaz6CZZlC4CpaWkkEC7bAlNFk0pmWTVgCPYVcdWaBdRl4kJdJEaXYR2UhVKrWALonlIRA3aaXES8rDEQqQ2DwwhQZLaFKMmOlZnxqnz8OR+Z+65nTnzn7n33LnXjK0ffAvHe875fuf8z2MTc1Dxm2Nsua+bLfkbWai6ks1XetmT/bsMz5V7+O9/1x9lkc52tqJ974SKhkBwhEbAzMBWjXZLJxuLArINgfALh2vIYHaNlYsFA/oI1qUM4UZ42YBJTk/pI5pLCSJ66ntyULcc7fpBH7mwLEGkwkuuz34+R9pa9BT5ZQqBZZVPmbV2bGRYT0OrIERJAFjY6HkhUELrAQDKCxH5roXs2KpDB338/sClJrxYf4T/Tn0vW+WoJSHQAdWxmed85Syq3dipcFjviVZy+jFb1saY176n+lG9K3Ig7OyDp959LNrfrfegJkDPae1FX6oAUA4EngCZAc0cOvgxn9lihPZYFTsAUBbE6vIfbPHz18mwlBf9DaalY1XF9JMFkbr7GUtceoFFvnyFPT2wkwwujBUoFWVBJEd2cAh4pX8Lm6t4iwTABi62hJyUAbH6ZMAAyARZqH0jBwInSynJgBClRDnc8JoBgFUoNRkQmaVEOdbxEi+vUlsFKA2RWCCDy44Pvso/V9XETJIFb8ddcTi2moZYDQ2ToXN8q4KHUlXnLyts34mIK56YSaUhUo876dCSk39+w0Opyk2I4K1EGiL5oJEMLTs1O8BDqcpNiL7RuBoEys6O3IRA3/8/iNRUJw+lqjWBWM8b24CgnhykS/CINU4nPMHJ0JIfXd7GllYiPJiKerUTxNcaVbK3mQ4t++ZkMg0BJX8t/OwYHXqZlfV+wK7+dV1v4a6+6I2RoWUbNzaUuPMpGR4+E3iTvXPuQ+7qK/V6C3flbY6SoTP9kbZikAFBPT1CFzezuvPvGgDCPz68ordyR8HbCTK07GPaakEGBH8EDm81AB5deJGXjwwAe85XsanIrN7Qeflal8nQsoc0WOhfCE3ivhj4eTvz9HhJAGHfhTpbm9xMXdfiZGDK0wsp3iYLAqfU14Nvk6EpN4y2OgrS95u1MoL9gX/0VhIE1HSjgwycz1gRJ0pLBQDG0SqUA4GZ9fRXkYHz2Ruotb3ZMQE1l75iHv8kGZbyodPpDS2UAwGdvf8TGdbMAsbKyozNjvNyFBO2q/sT9l5rPxlattgLQiQEdPz6tzkhVYwyOzLiZ+3j5ww3aqFxzxRa6T1tp8ngwnjCyMoLgbLyBevIgdz27q5DZHmJy01WXggIZVEWqCEHctu7z1Sz91vGsgDkMhIqCAE9TxAY5VUIADKFgACCWqYGcdtl2mFhdlBYghBqH+8hB3LLmDgrJ50SBLQW5bVXO726tWPeqpQhhHAfOA2D8Fht1aeMbQihsdk7/E5BACqYFaNszt4L2H6HFQ2RKQDhUsMlhztGBsPfWD38v+n3Dr6aTjwgHYV4XtqAKBVtQJSK/gMQjD0D9hVEOCeqMtcAAAAASUVORK5CYII=\"","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect, useSelector, useDispatch } from 'react-redux';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport Cookies from 'js-cookie';\r\nimport ReactGA from 'react-ga4';\r\nimport * as FS from '@fullstory/browser';\r\nimport { trackFreshChatUser, trackKlaviyoEvent } from 'api/tracking';\r\nimport { useForm } from 'react-hook-form';\r\nimport { isEmpty } from 'underscore';\r\nimport * as Sentry from '@sentry/react';\r\n\r\nimport { handleLogin, toggleInvoiceModal, handleRegistration } from 'redux/reducers/auth';\r\nimport { addItemsToCart } from 'api/cart';\r\nimport { handleFetchingCart } from 'redux/reducers/cart';\r\nimport { getUserIP, getUserEmailAvailability, getOTPForForgotPassword, checkOTPCode, passwordReset } from 'api/user';\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { ROUTES, AUTH_API_URL } from 'config/constants';\r\nimport { getLastPageUrlWithoutAuth, getReferralParam } from 'utils/helpers';\r\n\r\nimport LoginForm from 'containers/App/components/LoginModal/elements/LoginForm/LoginForm';\r\nimport SignUpForm from 'containers/App/components/LoginModal/elements/SignUpForm/SignUpForm';\r\nimport ForgotForm from 'containers/App/components/LoginModal/elements/ForgotForm/ForgotForm';\r\nimport AuthOTPForm from 'containers/App/components/LoginModal/elements/OTPForm/AuthOTPForm';\r\nimport ResetPassword from 'containers/App/components/LoginModal/elements/ResetPassword/ResetPassword';\r\nimport InitialLoginForm from 'containers/App/components/InitialLoginForm/InitialLoginForm';\r\nimport StickyBottom from 'components/StickyBottom/StickyBottom';\r\nimport InvoiceModal from 'containers/App/components/InvoiceModal/InvoiceModal';\r\n\r\nimport './AuthForm.scss';\r\n\r\nconst AuthForm = ({ handleLogin, handleRegistration, fromPopup = false, initialForm = '', initialLoginFormContainerClass = '' }) => {\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const location = useLocation();\r\n const otpTimerDuration = 90;\r\n const { authData } = useSelector(state => ({ authData: state.user.authData }));\r\n const products = localStorage.getItem('products') ? JSON.parse(localStorage.getItem('products')) : [];\r\n const { profile } = useSelector(state => ({ profile: state.auth.profile }));\r\n const [ip, setIP] = useState(null);\r\n const [doLogin, setDoLogin] = useState(false);\r\n const [doSignup, setDoSignup] = useState(false);\r\n const loginFormConfig = {\r\n defaultValues: {\r\n email: '',\r\n password: ''\r\n }\r\n };\r\n const {\r\n setValue,\r\n watch\r\n } = useForm(loginFormConfig);\r\n const formData = watch();\r\n const signupFormConfig = {\r\n defaultValues: {\r\n email: '',\r\n password: '',\r\n confirmPassword: '',\r\n subscriptionAcknowledge: false\r\n }\r\n };\r\n const {\r\n setValue: setValueForSignUpForm,\r\n watch: watchForSignUpForm\r\n } = useForm(signupFormConfig);\r\n const signupFormData = watchForSignUpForm();\r\n const resetPasswordFormConfig = {\r\n defaultValues: {\r\n newPassword: '',\r\n confirmPassword: ''\r\n }\r\n };\r\n const { watch: watchForResetPasswordForm, setValue: setValueForResetPasswordForm } = useForm(resetPasswordFormConfig);\r\n const resetPasswordFormData = watchForResetPasswordForm();\r\n const [loginResponse, setLoginResponse] = useState(null);\r\n const [emailId, setEmailId] = useState('');\r\n const [emailForAutoFill, setEmailForAutoFill] = useState('');\r\n const [form, setForm] = useState(initialForm || '');\r\n const [loading, setLoading] = useState(false);\r\n const [forgotPasswordEmail, setForgotPasswordEmail] = useState('');\r\n const [timer, setTimer] = useState(otpTimerDuration);\r\n const [forgotOtp, setForgotOtp] = useState(false);\r\n const [otp, setOtp] = useState('');\r\n const {\r\n newPassword,\r\n confirmPassword\r\n } = resetPasswordFormData;\r\n\r\n const onFormDataItemChange = (key, e) => setValue(key, e.target.value);\r\n\r\n const isValidSignupData = () => {\r\n return (\r\n !isEmpty(signupFormData.email) &&\r\n !isEmpty(signupFormData.password) &&\r\n !isEmpty(signupFormData.confirmPassword) &&\r\n signupFormData.password === signupFormData.confirmPassword\r\n );\r\n };\r\n\r\n const submitLogin = async () => login(formData);\r\n\r\n const login = (payload) => {\r\n setLoading(true);\r\n handleLogin({\r\n email: payload.email,\r\n password: payload.password,\r\n gaSessionId: Cookies.get('_ga') || 'no-session',\r\n trueIp: ip || 'no-ip',\r\n onSuccess: (resp) => {\r\n setLoginResponse(resp);\r\n setDoLogin(true);\r\n dispatch(handleFetchingCart());\r\n },\r\n onFailure: () => setLoading(false)\r\n });\r\n };\r\n\r\n const redirect = () => {\r\n const redirectUrl = getRedirectUrl();\r\n const cartItems = JSON.parse(localStorage.getItem('products')) || [];\r\n\r\n if (redirectUrl !== null) {\r\n history.push(redirectUrl);\r\n } else if (cartItems.length > 0) {\r\n history.push(ROUTES.CART);\r\n } else {\r\n history.push(getLastPageUrlWithoutAuth());\r\n }\r\n };\r\n\r\n const sendProductsToBE = async () => {\r\n const makeProducts = [];\r\n const profileTypeAPI = 'b2c';\r\n let selectedRentalPeriodIdOnEmptyCases = null;\r\n const userType = 'b2c';\r\n const selectedRentalPeriod = JSON.parse(localStorage.getItem('selectedRentalPeriod'));\r\n const selectedColorOption = JSON.parse(localStorage.getItem('selectedColorOption'));\r\n\r\n for (const product of products) {\r\n const selectedRentalPeriodId = getRentalPeriodId(product);\r\n\r\n if (!isStudentPriceAvailable(product)) {\r\n if (selectedRentalPeriodId === '') {\r\n const selectedRentalPeriodTemp = product?.rental_period.filter(r => r?.duration_time === selectedRentalPeriod?.duration_time || selectedRentalPeriod[0]?.duration_time);\r\n\r\n selectedRentalPeriodIdOnEmptyCases = selectedRentalPeriodTemp[0]?.id;\r\n } else {\r\n selectedRentalPeriodIdOnEmptyCases = selectedRentalPeriodId;\r\n }\r\n } else if (userType === 'b2c') {\r\n if (userType === profileTypeAPI) {\r\n if (selectedRentalPeriodId === '') {\r\n const selectedRentalPeriodForB2cTemp = product?.rental_period.filter(r => r?.duration_time === selectedRentalPeriod?.duration_time || selectedRentalPeriod[0]?.duration_time);\r\n\r\n selectedRentalPeriodIdOnEmptyCases = selectedRentalPeriodForB2cTemp.filter(r => r?.user_type === 'b2c')[0]?.id;\r\n } else {\r\n selectedRentalPeriodIdOnEmptyCases = selectedRentalPeriodId;\r\n }\r\n } else {\r\n const durationTime = product?.rental_period.filter(r => r?.duration_time === selectedRentalPeriod[0]?.duration_time);\r\n\r\n selectedRentalPeriodIdOnEmptyCases = durationTime.filter(d => d?.user_type === userType)[0]?.id;\r\n }\r\n } else {\r\n if (userType === profileTypeAPI) {\r\n if (selectedRentalPeriodId === '') {\r\n const selectedRentalPeriodForB2sTemp = product?.rental_period.filter(r => r?.duration_time === selectedRentalPeriod?.duration_time || selectedRentalPeriod[0]?.duration_time);\r\n\r\n selectedRentalPeriodIdOnEmptyCases = selectedRentalPeriodForB2sTemp.filter(r => r?.user_type === 'b2s')[0]?.id;\r\n } else {\r\n selectedRentalPeriodIdOnEmptyCases = selectedRentalPeriodId;\r\n }\r\n } else {\r\n const durationTime = product?.rental_period.filter(r => r?.duration_time === selectedRentalPeriod[0]?.duration_time);\r\n\r\n selectedRentalPeriodIdOnEmptyCases = durationTime.filter(d => d?.user_type === userType)[0]?.id;\r\n }\r\n }\r\n\r\n makeProducts.push(\r\n {\r\n is_purchase: false,\r\n product_attribute_value_id: product.selectedStorage ? product.selectedStorage.value\r\n : (\r\n product.attributes.specifications.values[0].id ||\r\n product.attributes.inside_box.values[0].id\r\n ),\r\n quantity: 1,\r\n rental_period_id: (selectedRentalPeriodId === '' || isEmpty(selectedRentalPeriodId)) ? selectedRentalPeriodIdOnEmptyCases : selectedRentalPeriodId,\r\n rental_period_duration: product?.rental_period?.find(rp => rp.id === selectedRentalPeriodId)?.duration_time,\r\n product_id: product.id,\r\n color_id: product?.selectedColor?.value || selectedColorOption?.value,\r\n deal_id: getDealId(product)\r\n }\r\n );\r\n }\r\n\r\n try {\r\n await addItemsToCart(makeProducts);\r\n\r\n const cartItems = products.map(product => {\r\n return {\r\n base_product: product\r\n };\r\n });\r\n\r\n const formattedCartItems = cartItems?.map(item => ({\r\n ...item,\r\n selectedRentalPeriod: item?.base_product?.selectedRentalPeriod,\r\n selectedColor: item?.base_product?.selectedColor,\r\n selectedStorage: item?.base_product?.selectedStorage\r\n }));\r\n\r\n trackKlaviyoEvent('add-cart', {\r\n email: profile?.email,\r\n user_id: profile?.id,\r\n title: products[0]?.name,\r\n product: products[0],\r\n images: products[0]?.medias,\r\n price: products[0]?.total,\r\n cartItems: formattedCartItems,\r\n cartMeta: products[0]?.total,\r\n selectedRentalPeriod: selectedRentalPeriod,\r\n selectedStorage: products[0]?.storage,\r\n selectedColor: selectedColorOption\r\n });\r\n\r\n if (loginResponse && (loginResponse.orderNumber || loginResponse.invoiceUrl)) {\r\n //\r\n } else {\r\n redirect();\r\n }\r\n } catch (error) {\r\n Sentry.captureException(error);\r\n redirect();\r\n }\r\n };\r\n\r\n const getRentalPeriodId = (product) => {\r\n const userType = 'b2c';\r\n const durationTime = product?.rental_period?.find(rp => rp.id === product?.selectedRentalPeriod?.id)?.duration_time;\r\n let rentalPeriod = product?.rental_period?.find(rp => rp.duration_time === durationTime);\r\n\r\n if (isStudentPriceAvailable(product)) {\r\n rentalPeriod = product?.rental_period?.find(rp => rp.duration_time === durationTime && rp.user_type === userType);\r\n }\r\n\r\n return rentalPeriod?.id ?? '';\r\n };\r\n\r\n const isStudentPriceAvailable = (product) => {\r\n const studentObj = product?.rental_period?.find(rp => rp?.user_type === 'b2s');\r\n\r\n return studentObj !== undefined && studentObj !== null;\r\n };\r\n\r\n const getData = async () => {\r\n try {\r\n const res = await getUserIP();\r\n\r\n setIP(res);\r\n } catch (error) {\r\n //\r\n }\r\n };\r\n\r\n const onForgotPassword = (form, email = null) => {\r\n setForgotPasswordEmail(email);\r\n setForm('forgot-password');\r\n };\r\n\r\n const getRedirectUrl = () => {\r\n const queryParams = new URLSearchParams(location.search);\r\n\r\n return queryParams.get('redirect_url');\r\n };\r\n\r\n const backToMainLogin = () => setForm('');\r\n\r\n const checkEmailAvailability = async () => {\r\n setLoading(true);\r\n const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\r\n const email = emailId;\r\n\r\n if (email === null || email.trim() === '') {\r\n notify('Please enter email', notifType.DANGER);\r\n setLoading(false);\r\n\r\n return false;\r\n }\r\n\r\n if (!emailPattern.test(email)) {\r\n notify('Please enter email', notifType.DANGER);\r\n setLoading(false);\r\n\r\n return false;\r\n }\r\n\r\n try {\r\n const data = await getUserEmailAvailability(email);\r\n\r\n if (data?.exists) {\r\n setEmailForAutoFill(email);\r\n setValue('email', email);\r\n setForm('signin');\r\n } else {\r\n onSignUpFormDataItemChange('email', email);\r\n setEmailForAutoFill(email);\r\n setForm('signup');\r\n }\r\n\r\n setLoading(false);\r\n } catch (error) {\r\n Sentry.captureException(error);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const handleSocialLogin = (provider) => {\r\n const storageReferral = getReferralParam();\r\n\r\n window.location.href = `${AUTH_API_URL}/auth/oauth/redirect/${provider}?channel=samsung&referral_code=${storageReferral}`;\r\n };\r\n\r\n const requestOtp = () => {\r\n setOtp('');\r\n getOTPForForgotPassword(forgotPasswordEmail,\r\n () => {\r\n setForm('forgot-password-otp');\r\n setForgotOtp(true);\r\n setTimer(otpTimerDuration);\r\n notify('OTP code sent to your email.', notifType.SUCCESS);\r\n setLoading(false);\r\n },\r\n () => {\r\n notify('Invalid email used.', notifType.DANGER);\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const submitSignUp = () => {\r\n setLoading(true);\r\n\r\n handleRegistration({\r\n ...signupFormData,\r\n gaSessionId: Cookies.get('_ga') || 'no-session',\r\n trueIp: ip || 'no-ip',\r\n onSuccess: () => setDoSignup(true),\r\n onFailure: () => setLoading(false)\r\n });\r\n };\r\n\r\n const submitForgotPassword = async (email) => {\r\n setLoading(true);\r\n requestOtp();\r\n };\r\n\r\n const handleResendCode = () => {\r\n setLoading(true);\r\n requestOtp();\r\n };\r\n\r\n const handleSubmitOtp = async (type) => {\r\n setLoading(true);\r\n\r\n try {\r\n await checkOTPCode(otp,\r\n () => {\r\n setForgotOtp(false);\r\n setForm('reset-password');\r\n setLoading(false);\r\n },\r\n () => {\r\n setLoading(false);\r\n notify('The OTP code is incorrect.', notifType.DANGER);\r\n setOtp('');\r\n });\r\n } catch (error) {\r\n Sentry.captureException(error);\r\n\r\n if (error.response.status) {\r\n notify('The OTP code is incorrect.', notifType.DANGER);\r\n setOtp('');\r\n }\r\n\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const onResetPasswordFormDataItemChange = (key, value) => {\r\n switch (key) {\r\n case 'password':\r\n setValueForResetPasswordForm('newPassword', value);\r\n break;\r\n case 'confirmPassword':\r\n setValueForResetPasswordForm('confirmPassword', value);\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const onSignUpFormDataItemChange = (key, value) => {\r\n switch (key) {\r\n case 'email':\r\n setValueForSignUpForm('email', value);\r\n break;\r\n case 'password':\r\n setValueForSignUpForm('password', value);\r\n break;\r\n case 'confirmPassword':\r\n setValueForSignUpForm('confirmPassword', value);\r\n break;\r\n case 'subscriptionAcknowledge':\r\n setValueForSignUpForm('subscriptionAcknowledge', value);\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const getDealId = (product) => {\r\n const deals = localStorage.getItem('deals') ? JSON.parse(localStorage.getItem('deals')) : null;\r\n\r\n if (!deals) {\r\n return null;\r\n }\r\n\r\n return deals.find(deal => deal.product_id === product.id)?.deal_id;\r\n };\r\n\r\n const submitResetPassword = async () => {\r\n setLoading(true);\r\n\r\n try {\r\n await passwordReset(\r\n {\r\n otp_code: otp,\r\n password: newPassword,\r\n password_confirmation: confirmPassword\r\n },\r\n () => {\r\n notify('Password changed successfully.', notifType.SUCCESS);\r\n login({ email: forgotPasswordEmail, password: newPassword });\r\n setForgotOtp(false);\r\n setOtp('');\r\n },\r\n () => {\r\n setLoading(false);\r\n notify('Please try again.', notifType.DANGER);\r\n }\r\n );\r\n } catch (error) {\r\n Sentry.captureException(error);\r\n setLoading(false);\r\n\r\n if (error.response.status) {\r\n notify('Please try again.', notifType.DANGER);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (forgotOtp) {\r\n const time = setTimeout(() => {\r\n if (timer > 0) {\r\n setTimer(timer - 1);\r\n }\r\n }, 1000);\r\n\r\n return () => clearTimeout(time);\r\n } else {\r\n setTimer(otpTimerDuration);\r\n }\r\n }, [forgotOtp, timer]);\r\n\r\n useEffect(() => getData(), []);\r\n\r\n useEffect(() => {\r\n if (doLogin) {\r\n ReactGA.event('user_login', {\r\n category: 'user_auth',\r\n label: 'user_login',\r\n value: profile.id,\r\n user_ID: profile.id,\r\n fp: Cookies.get('_fp'),\r\n timestamp: new Date()\r\n });\r\n\r\n trackKlaviyoEvent('user_login', {\r\n email: profile.email,\r\n user_id: profile?.id\r\n });\r\n\r\n if (loginResponse && (loginResponse.orderNumber || loginResponse.invoiceUrl)) {\r\n setLoading(false);\r\n dispatch(toggleInvoiceModal(true, loginResponse.productId, loginResponse.orderNumber, loginResponse.invoiceUrl));\r\n }\r\n\r\n if (products.length !== 0) {\r\n sendProductsToBE();\r\n } else {\r\n if (loginResponse && (loginResponse.orderNumber || loginResponse.invoiceUrl)) {\r\n // Handle invoice modal logic if needed\r\n } else {\r\n redirect();\r\n }\r\n }\r\n\r\n FS.event('User login', {\r\n user_id: profile.id.toString()\r\n });\r\n\r\n trackKlaviyoEvent('identify', profile);\r\n\r\n trackFreshChatUser('identify', profile);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [doLogin, loginResponse, doSignup]);\r\n\r\n useEffect(() => {\r\n if (doSignup) {\r\n ReactGA.event('user_register', {\r\n category: 'user_auth',\r\n label: 'user_register',\r\n value: profile.id,\r\n user_ID: profile.id,\r\n fp: Cookies.get('_fp'),\r\n timestamp: new Date()\r\n });\r\n\r\n trackKlaviyoEvent('user_register', {\r\n email: profile.email,\r\n user_id: profile?.id\r\n });\r\n\r\n if (products.length > 0) {\r\n sendProductsToBE();\r\n } else {\r\n redirect();\r\n }\r\n\r\n FS.event('User registered', {\r\n user_id: profile.id.toString()\r\n });\r\n\r\n trackKlaviyoEvent('identify', profile);\r\n\r\n trackFreshChatUser('identify', profile);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [doSignup]);\r\n\r\n useEffect(() => {\r\n if (form === 'forgot-password-otp' && otp && otp.length === 6) {\r\n handleSubmitOtp();\r\n }\r\n }, [otp]);\r\n\r\n return (\r\n <>\r\n
\r\n {form === '' &&\r\n { history.push(getLastPageUrlWithoutAuth()); }}\r\n loading={loading}\r\n fromPopup={fromPopup} />\r\n }\r\n {form === 'signin' &&\r\n <>\r\n \r\n {!fromPopup &&\r\n }\r\n \r\n }\r\n {form === 'signup' &&\r\n <>\r\n { setForm('signin'); }} />\r\n {!fromPopup &&\r\n }\r\n \r\n }\r\n {form === 'forgot-password' &&\r\n <>\r\n { setForgotPasswordEmail(val); }}\r\n changeForm={() => { setForm('signin'); }}\r\n loading={loading} />\r\n {!fromPopup &&\r\n { setForm('signin'); }}\r\n isLoading={loading} />}\r\n \r\n }\r\n {form === 'forgot-password-otp' &&\r\n <>\r\n { setForm('forgot-password'); }}\r\n loading={loading} />\r\n {!fromPopup &&\r\n { setForm('signin'); }}\r\n isLoading={loading} />}\r\n \r\n }\r\n {form === 'reset-password' &&\r\n <>\r\n { setForm('forgot-password'); }}\r\n onFormDataItemChange={onResetPasswordFormDataItemChange}\r\n isReset={true}\r\n loading={loading}\r\n fromPopup={fromPopup} />\r\n {!fromPopup &&\r\n { setForm('forgot-password'); }}\r\n isLoading={loading} />}\r\n \r\n }\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n handleLogin: ({\r\n email,\r\n password,\r\n isRemember,\r\n gaSessionId,\r\n trueIp,\r\n onSuccess,\r\n onFailure\r\n }) => {\r\n dispatch(handleLogin({\r\n email,\r\n password,\r\n isRemember,\r\n gaSessionId,\r\n trueIp,\r\n onSuccess,\r\n onFailure\r\n }));\r\n },\r\n handleRegistration: ({\r\n email,\r\n password,\r\n confirmPassword,\r\n subscriptionAcknowledge,\r\n gaSessionId,\r\n trueIp,\r\n onSuccess,\r\n onFailure\r\n }) => {\r\n dispatch(handleRegistration({\r\n email,\r\n password,\r\n confirmPassword,\r\n subscriptionAcknowledge,\r\n gaSessionId,\r\n trueIp,\r\n onSuccess,\r\n onFailure\r\n }));\r\n }\r\n };\r\n};\r\n\r\nAuthForm.propTypes = {\r\n handleLogin: PropTypes.func.isRequired,\r\n handleRegistration: PropTypes.func.isRequired,\r\n fromPopup: PropTypes.bool,\r\n initialForm: PropTypes.string,\r\n initialLoginFormContainerClass: PropTypes.string\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(AuthForm);\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { getElfsightWidgets } from 'api/elfsight';\r\n\r\nconst ElfsightWidget = ({ type }) => {\r\n const [code, setCode] = useState('');\r\n\r\n const getElfsightWidget = async (type) => {\r\n const data = await getElfsightWidgets();\r\n const match = data.find(d => d.type === type);\r\n\r\n if (match) setCode(match.code);\r\n };\r\n\r\n useEffect(() => {\r\n getElfsightWidget(type);\r\n }, []);\r\n\r\n if (!code) return null;\r\n\r\n return (\r\n
\r\n );\r\n};\r\n\r\nexport default ElfsightWidget;\r\n\r\nElfsightWidget.propTypes = {\r\n type: PropTypes.string.isRequired\r\n};\r\n","\r\nimport axios from 'axios';\r\nimport { AUTH_API_URL } from 'config/constants';\r\n\r\nexport async function getElfsightWidgets() {\r\n try {\r\n const response = await axios.get(AUTH_API_URL + '/widgets?channel=samsung');\r\n\r\n return response.data;\r\n } catch (error) {\r\n console.error('Error fetching Elfsight widgets:', error);\r\n\r\n throw error;\r\n }\r\n}\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Button, Modal, ModalBody, ModalFooter } from 'reactstrap';\r\nimport styles from './TradeInExplanation.module.scss';\r\nimport InfoIcon from 'assets/images/Info Icon.png';\r\nimport ParallelArrows from 'assets/images/general/parallel-arrows.svg';\r\n\r\nconst TradeInExplanationModal = ({ cinchCreditsOnly, customButton }) => {\r\n const howItWorks = [\r\n 'Fill out a form with your device’s information and condition.',\r\n 'Receive an estimated trade-in value and any overtrade if applicable.',\r\n 'Pay the first month’s full rate to confirm your order.',\r\n 'Our trade-in partner will schedule a pickup for your old device.',\r\n 'After completion, we’ll transfer you your cashback amount within 14 days.'\r\n ];\r\n // const cinchCredits = [\r\n // {\r\n // subTitle: 'What Are Cinch Credits',\r\n // content: 'Use Cinch Credits towards subscription payments, new subscriptions, repair fees, and device purchases within the Cinch platform.'\r\n // }, {\r\n // subTitle: 'Earn Through Trade-Ins',\r\n // content: 'Get Cinch Credits when your trade-in value exceeds the amount that can be applied to reduce your monthly subscription below SGD20.'\r\n // }, {\r\n // subTitle: 'Non-Transferable & Non-Cashable',\r\n // content: 'Cinch Credits cannot be transferred to other accounts or converted to cash. They are for use within the Cinch ecosystem only.'\r\n // }, {\r\n // subTitle: 'Check Balance & Expiry',\r\n // content: 'Easily check your Cinch Credits balance in your account dashboard and remember, they expire 24 months from the date of issuance.'\r\n // }\r\n // ];\r\n const limitations = [\r\n 'Misdeclared conditions will lead to a revised valuation, which you can accept or reject at the pickup.'\r\n ];\r\n\r\n const [modal, setModal] = useState(false);\r\n\r\n const toggle = () => setModal(!modal);\r\n\r\n let customButtonWithToggle = customButton;\r\n\r\n if (customButton && !customButton.props.onClick) {\r\n customButtonWithToggle = React.cloneElement(customButton, {\r\n onClick: toggle\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n {customButtonWithToggle ?? (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nTradeInExplanationModal.propTypes = {\r\n cinchCreditsOnly: PropTypes.bool,\r\n customButton: PropTypes.object\r\n};\r\n\r\nexport default TradeInExplanationModal;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABRCAYAAABFTSEIAAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAR2SURBVHgB7Z3vVeJAFMUfkQLYCjYdrHYgR/0sVqBWgFbgUoFSgW4F4mf1QAfGCpatYClAZe/NTjj8C0kmCUnI+52DSSCKubw38/Jm5iGiKEXSkAIZDoetz8/Pw0aj4U6n0x94yuU+X8OxO38unp/guTF2J3iMcfz+9fXlNZtNr91uT6QgtiogBfv4+Nh3HOcUh51lkVLgQVAPf+/p+Ph4IFtkKwI+Pz/Tys7xoGgtyRFaKjYDWOevk5OTkeRMbgLS2nARXexe5S1aGBBzjE3v6OjoQXIicwHLINwyFBL/Ux8WeScZk6mALy8vHfyztxm2bZmSh0VmIiCszkVveo/dQ6kGg729vWv03mNJiSMpgdV14R5vUh3xSAcf+Nvr6+uFpMTaAk1bdwN3vZIKA7e+g0tfiyVWAhqXfcTuvuwGHlz6zMalEwtI8WB5w7J2FLawg0GA304qYiIBd1W8ABsRYwu46+IFJBUxloB1ES8giYixwhh2GHURj/Baec2MNKLOjRQQsdKt7E5vm4R9hmlRJ210YQaa+DTupcbg+q833UOHCmjavbeyJAQKZIIY8SCsPQx1YbQBtyqeT8vc569lrYDmHrEjSsAhM03rXljrwhDwd1G9LlLyG9tlXMhUCsCENgfL4y8rFsjsSp1ClrhQE4znrCROVgSE0pXOruQJtOkux4YLApqwxRUljNayFS5bYGTgWHdohfPHMwE59KjWF4sWtQoOZgKihzkXJRYc4w72ZwLC+jTui08n6Eya/GGCxFLcdRQV5yXEn6KC7ci3QJjkqSiJ4DQVbn0B4b51TFelxTe6hpli9leUxCBL880xvqxYwLmNdGEV0BLGzQ4aQxXQEmj3gxb4XRRbXMaBpco6lzUfGIJLC3RFsYYC6riHPW7q+YF1RwVMiQqYEsdMvFbsmKgFpmPsmPVnih2+Bf4RxRbfAj1RrIB279qJpMNzkBQciWIF1ypzIvBErdAKf6F3MCbyJEoiuMCb20DAra7y3gUCo/MFpC/L/1oESjwmQWkBX0AzaVDdOCZw35nHzk/teBAlFqzHEOzPBDQFGtSNI2DEMl/MYiGZACvsixJFb/5gQUB0JlxQolYYAq1vud7CgoDsTNQKw2Hlj+XnVvKBtEK9M1nFtH0rS77WjsGa+YKPosyAgJfryqWEDmJDxKFUqxJHngwQOJ+teyE0pY8szaVoh+LX4mKNmbDXQwXk6kT8ck+UjQV6Ng4qwefZaNa5V+5HlYmKHJWD+f7Epo5pfw/tXuSyt0gBGRuyKE2dQhteK6851rkSEy17EnK+JEAL76z5HUmIln5aJPHUDr4B30h2q2PxbMQjqQow4m6FYU5Xqk2fkYZtKeXUFSzNIm0W56nUTFfeYaAp6qWtq5plCVCKWJUVnyPeqmZRAjTTIrSmXMpNmYvQshJRlsW6c6kjDSEZwZem+odx1z5znVmXjc+1knnRFpmncLP3kC1gSsFfcF3yNkrBc6YFHtUuBR+GyXbzwW9vyGSdnmnbnijctr/d4R94Nj2UHTO/5wAAAABJRU5ErkJggg==\"","import axios from 'axios';\r\nimport Cookies from 'js-cookie';\r\n\r\nimport { AUTH_API_URL, ELOQUENT } from 'config/constants';\r\n\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { getAuthToken, getLastPageUrl } from 'utils/helpers';\r\n\r\n/**\r\n * Get logged in user's profile data\r\n * @returns {Promise}\r\n */\r\nexport async function getAuthedProfile() {\r\n const options = {\r\n method: 'GET',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n url: AUTH_API_URL + '/user/me?channel=samsung&checkoutValidationCheck=true'\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('User not found.', notifType.DANGER);\r\n\r\n throw new Error(err);\r\n }\r\n}\r\n\r\n/**\r\n * Get OTP for Forgot Paswword\r\n * @param {String} code\r\n * @param {Function} onSuccess\r\n * @param {Function} onFailure\r\n */\r\nexport async function getOTPForForgotPassword(code, onSuccess = () => { }, onFailure = () => { }) {\r\n const options = {\r\n method: 'POST',\r\n params: { email: code },\r\n url: AUTH_API_URL + '/password/forgot?channel=samsung'\r\n };\r\n\r\n try {\r\n const res = await axios(options);\r\n\r\n if (res?.data?.data?.status_code === 200) {\r\n onSuccess();\r\n } else {\r\n onFailure();\r\n }\r\n } catch (err) {\r\n onFailure();\r\n }\r\n}\r\n\r\n/**\r\n * Check OTP code\r\n * @param {String} code\r\n * @param {Function} onSuccess\r\n * @param {Function} onFailure\r\n */\r\nexport async function checkOTPCode(code, onSuccess = () => { }, onFailure = () => { }) {\r\n const options = {\r\n method: 'POST',\r\n params: { otp_code: code },\r\n url: AUTH_API_URL + '/password/reset/check'\r\n };\r\n\r\n try {\r\n const res = await axios(options);\r\n\r\n if (res?.data?.data?.status_code === 200) {\r\n onSuccess();\r\n } else {\r\n onFailure();\r\n }\r\n } catch (err) {\r\n onFailure();\r\n }\r\n}\r\n\r\n/**\r\n * Reset Password\r\n * @param {Object} params\r\n * @param {Function} onSuccess\r\n * @param {Function} onFailure\r\n */\r\nexport async function passwordReset(params, onSuccess = () => { }, onFailure = () => { }) {\r\n const options = {\r\n method: 'POST',\r\n params,\r\n url: AUTH_API_URL + '/password/reset'\r\n };\r\n\r\n try {\r\n const res = await axios(options);\r\n\r\n if (res?.data?.data?.status_code === 200) {\r\n onSuccess();\r\n } else {\r\n onFailure();\r\n }\r\n } catch (err) {\r\n onFailure();\r\n }\r\n}\r\n\r\n/**\r\n * Reset Password\r\n * @param {Object} params\r\n */\r\nexport async function userSimilarProducts() {\r\n const options = {\r\n method: 'GET',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n url: AUTH_API_URL + '/user/similar/products?limit=8'\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n const status = err.response.status;\r\n\r\n if (status) {\r\n throw err;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Create ticket\r\n * @param {Object} params\r\n */\r\nexport async function createTicket(params) {\r\n const options = {\r\n method: 'POST',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n data: params,\r\n url: AUTH_API_URL + '/user/tickets/create?channel=samsung'\r\n };\r\n\r\n try {\r\n await axios(options);\r\n } catch (err) {\r\n const status = err.response.status;\r\n\r\n if (status) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n\r\n throw err;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Update a user's profile data\r\n * @param {Number} id\r\n * @param {Object} data\r\n * @returns {Promise}\r\n */\r\nexport function updateUserProfile(id, data) {\r\n return ELOQUENT.User.updateOne(id, data);\r\n}\r\n\r\n/**\r\n * fetches best rated sellers\r\n * @param {Object} data\r\n * @param {Object} cancelToken\r\n * @returns {Promise}\r\n */\r\nexport function fetchBestRatedSellers(data, cancelToken) {\r\n return ELOQUENT.User.bestRatedSellers(data, cancelToken);\r\n}\r\n\r\n/**\r\n * fetches best rated sellers\r\n * @param {Object} data\r\n * @param {Object} cancelToken\r\n * @returns {Promise}\r\n */\r\nexport function changePassword({ id, currentPassword, password }, cancelToken) {\r\n return ELOQUENT.User.updateOne(id, { current_password: currentPassword, password }, cancelToken);\r\n}\r\n\r\n/**\r\n * Store user-event\r\n * @param {Object} params\r\n */\r\nexport async function storeUserEvent(params) {\r\n if (Cookies.get('_fp')) {\r\n params.exact_id = Cookies.get('_fp');\r\n }\r\n\r\n const userIP = await getUserIP();\r\n\r\n params.user_ip = userIP;\r\n params.channel = 'samsung';\r\n params.referral = getLastPageUrl();\r\n params.gaSessionId = Cookies.get('_ga') || 'no-session';\r\n\r\n // Prepare the headers\r\n const headers = {};\r\n const authToken = getAuthToken();\r\n\r\n if (authToken) {\r\n headers.Authorization = 'Bearer ' + authToken;\r\n }\r\n\r\n const options = {\r\n method: 'POST',\r\n params,\r\n headers,\r\n url: AUTH_API_URL + '/user/addevent'\r\n };\r\n\r\n try {\r\n await axios(options);\r\n } catch (err) {\r\n if (err.response) {\r\n const status = err.response.status;\r\n\r\n if (status) {\r\n throw err;\r\n }\r\n } else {\r\n // Handle the case where err.response is undefined\r\n throw err;\r\n }\r\n }\r\n}\r\n\r\nexport async function getUserIP() {\r\n try {\r\n const res = await axios.get('https://api.bigdatacloud.net/data/client-ip');\r\n\r\n return res.data.ipString;\r\n } catch (error) {\r\n return '';\r\n }\r\n}\r\n\r\n/**\r\n * Get logged in user's Pending Invoice data\r\n * @returns {Promise}\r\n */\r\nexport async function getPendingInvoice() {\r\n const options = {\r\n method: 'GET',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n url: AUTH_API_URL + '/user/pending-invoice?channel=samsung&checkoutValidationCheck=true'\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('User not found.', notifType.DANGER);\r\n\r\n throw new Error(err);\r\n }\r\n}\r\n\r\n/**\r\n * Get the user email availability check\r\n * @returns {Promise}\r\n */\r\n\r\nexport async function getUserEmailAvailability(email) {\r\n const options = {\r\n method: 'GET',\r\n url: AUTH_API_URL + `/auth/${email}/exists`\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('User not found.', notifType.DANGER);\r\n\r\n throw new Error(err);\r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/media/parallel-arrows.03b54ff0.svg\";","export default __webpack_public_path__ + \"static/media/trash.f34c3a61.svg\";","import React, { useEffect, useState } from 'react';\r\nimport { Button } from 'reactstrap';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useForm } from 'react-hook-form';\r\nimport { storeUserEvent } from 'api/user';\r\n\r\nimport {\r\n handleFetchSingpassData,\r\n handleSingpassSubmitData\r\n} from 'redux/reducers/auth';\r\nimport MyInformationForm from '../../screens/Profile/components/MyInformation/Form/Form';\r\nimport SingPassVerification from '../../screens/Profile/components/SingPassVerification/SingPassVerification';\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport SingpassExpired from 'components/SingpassExpired/SingpassExpired';\r\n\r\nimport { ROUTES } from 'config/constants';\r\n\r\nimport SingPassLogo from 'assets/images/general/singpass-logo.png';\r\n\r\nimport '../../screens/Profile/components/MyInformation/MyInformation.scss';\r\nimport './SingPassScreen.scss';\r\n\r\nconst formConfig = {\r\n defaultValues: {\r\n name: '',\r\n aliasName: '',\r\n sex: '',\r\n maritalStatus: '',\r\n marriedName: '',\r\n dateOfBirth: '',\r\n countryOfBirth: '',\r\n race: '',\r\n secondaryRace: '',\r\n residencyStatus: '',\r\n residentialAddress: '',\r\n nric: '',\r\n workPassExpiryDate: '',\r\n email: '',\r\n mobile: '',\r\n occupation: '',\r\n typeOfHousing: '',\r\n nameOfEmployer: '',\r\n employmentSector: '',\r\n income: '',\r\n assessedYearOfIncome: '',\r\n passType: '',\r\n passStatus: ''\r\n }\r\n};\r\n\r\nconst SingPassScreen = () => {\r\n const {\r\n profile,\r\n singPassVerified,\r\n includeNoa,\r\n singPassExpired\r\n } = useSelector((state) => ({\r\n profile: state.auth.profile,\r\n singPassVerified: state.auth?.profile?.singpass_status,\r\n includeNoa: state.auth.includeNoa,\r\n singPassExpired: state.auth?.profile?.singpassExpired\r\n }));\r\n const dispatch = useDispatch();\r\n const {\r\n setValue,\r\n reset,\r\n formState: { errors },\r\n watch\r\n } = useForm(formConfig);\r\n const formData = watch();\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n const [, setRemainingVerifications] = useState([]);\r\n const [, setMessageModalOpen] = useState(false);\r\n const [, setMessageModalMessage] = useState({ type: '', message: '' });\r\n const [isLoading, setIsLoading] = useState(false);\r\n const { maritalStatus, marriedName, residentialAddress, email, mobile } = formData;\r\n const isSubmitBtnDisabled = !residentialAddress || !email || !mobile;\r\n\r\n useEffect(() => {\r\n const userData = profile?.singpass;\r\n\r\n reset({\r\n name: userData?.legal_name,\r\n aliasName: userData?.alias_name,\r\n sex: userData?.sex,\r\n maritalStatus: userData?.martial_status,\r\n marriedName: userData?.maried_name,\r\n dateOfBirth: userData?.dob,\r\n countryOfBirth: userData?.birth_country,\r\n race: userData?.ethnicity,\r\n secondaryRace: userData?.secondary_race,\r\n residencyStatus: userData?.residency_status,\r\n residentialAddress: userData?.residential_address,\r\n nric: userData?.nric_fin,\r\n workPassExpiryDate: userData?.workpass_expiry_date,\r\n email: userData?.email_address,\r\n mobile: userData?.mobile,\r\n occupation: userData?.occupation,\r\n typeOfHousing: userData?.housing_type,\r\n nameOfEmployer: userData?.employment_sector,\r\n employmentSector: userData?.employer_name,\r\n income: userData?.income_noa,\r\n assessedYearOfIncome: userData?.assessed_year_income,\r\n passType: userData?.pass_type,\r\n passStatus: userData?.pass_status\r\n });\r\n }, [profile?.singpass, reset]);\r\n\r\n useEffect(() => {\r\n if (singPassVerified !== 'rejected' && !profile.singpass) {\r\n setIsLoading(true);\r\n\r\n dispatch(handleFetchSingpassData(() => setIsLoading(false), () => setIsLoading(false)));\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n\r\n const triggerUserEvent = async () => {\r\n const payload = {\r\n event: 'singpass'\r\n };\r\n\r\n await storeUserEvent(payload);\r\n };\r\n\r\n triggerUserEvent();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const onToggleLoading = () => setIsLoading(!isLoading);\r\n\r\n const onFormDataItemChange = (key, e) => setValue(key, e.target.value);\r\n\r\n const onAuthorizedSingpass = redirectUrl => {\r\n window.location.href = redirectUrl;\r\n };\r\n\r\n const onRejectSingpassAuthorization = includeNoa => {\r\n setIsLoading(false);\r\n\r\n if (!includeNoa) {\r\n setMessageModalMessage({ type: 'failed', message: 'Unable to retrieve your information from Singpass.' });\r\n } else {\r\n setMessageModalMessage({\r\n type: 'failed',\r\n message: `\r\n We are sorry, you are not eligible for our services at the moment.\r\n If you feel that this is a mistake or to better understand our policies\r\n please feel free to contact us at support@cinch.sg or +65 8168-8604.\r\n`\r\n });\r\n }\r\n\r\n setMessageModalOpen(true);\r\n };\r\n\r\n const onFormSubmitSuccess = data => {\r\n const userData = profile?.singpass;\r\n\r\n setIsLoading(false);\r\n\r\n if (data && data.action === 'otp_required') {\r\n if (userData?.email_address !== email || userData?.mobile !== mobile) {\r\n const newVerifications = [];\r\n\r\n if (userData?.email_address !== email) newVerifications.push('email');\r\n if (userData?.mobile !== mobile) newVerifications.push('mobile');\r\n\r\n setRemainingVerifications(newVerifications);\r\n }\r\n } else {\r\n notify('Thank you! We have received your information from Singpass.', notifType.SUCCESS);\r\n\r\n // if (profile.pass_proof_of_expiry_required && profile.is_student) {\r\n // setTimeout(() => {\r\n // history.push(ROUTES.DOCUMENTSPROOF);\r\n // }, 1000);\r\n // } else {\r\n // setTimeout(() => {\r\n // history.push(ROUTES.ORDER_SUMMARY);\r\n // }, 1000);\r\n // }\r\n setTimeout(() => {\r\n window.location.href = ROUTES.ORDER_SUMMARY;\r\n }, 1000);\r\n }\r\n };\r\n\r\n const onFormSubmitFailure = () => {\r\n setIsLoading(false);\r\n\r\n notify('Unable to retrieve your information. Please check all fields.', notifType.DANGER);\r\n };\r\n\r\n const onSubmit = () => {\r\n if (mobile.length < 10) {\r\n notify('Please enter the correct phone number.', notifType.DANGER);\r\n\r\n return;\r\n }\r\n\r\n if (!email || email === '') {\r\n notify('Please enter your email.', notifType.DANGER);\r\n\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n\r\n const form = {\r\n residential_address: residentialAddress,\r\n email_address: email,\r\n mobile: mobile.includes('+') ? mobile : '+' + mobile\r\n };\r\n\r\n if (maritalStatus !== '') {\r\n form.martial_status = maritalStatus;\r\n }\r\n\r\n if (marriedName !== '') {\r\n form.maried_name = marriedName;\r\n }\r\n\r\n dispatch(handleSingpassSubmitData(form, onFormSubmitSuccess, onFormSubmitFailure));\r\n };\r\n\r\n return (\r\n <>\r\n {singPassExpired &&\r\n
\r\n \r\n
}\r\n
\r\n {(singPassVerified === 'verified' && !singPassExpired) && (\r\n <>\r\n
\r\n SingPass Logo\r\n
\r\n\r\n
\r\n \r\n My Information\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n \r\n )}\r\n\r\n {(!singPassVerified || (singPassVerified === 'rejected') || singPassExpired) &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default SingPassScreen;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormGroup, FormFeedback, Input, Label } from 'reactstrap';\r\n\r\nimport InputPhone from 'containers/App/components/InputPhone';\r\n\r\nimport './Form.scss';\r\n\r\nconst MyInformationForm = ({\r\n formData,\r\n onFormDataItemChange,\r\n errors,\r\n isFormDisabled = false\r\n}) => {\r\n const {\r\n name,\r\n aliasName,\r\n sex,\r\n maritalStatus,\r\n marriedName,\r\n dateOfBirth,\r\n countryOfBirth,\r\n race,\r\n secondaryRace,\r\n residencyStatus,\r\n residentialAddress,\r\n nric,\r\n workPassExpiryDate,\r\n email,\r\n mobile,\r\n occupation,\r\n typeOfHousing,\r\n nameOfEmployer,\r\n employmentSector,\r\n income,\r\n assessedYearOfIncome,\r\n passType,\r\n passStatus\r\n } = formData;\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n onFormDataItemChange('name', e)}\r\n disabled={true} />\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n onFormDataItemChange('aliasName', e)}\r\n disabled={true} />\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('sex', e)}\r\n disabled={true} />\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n onFormDataItemChange('maritalStatus', e)}\r\n invalid={!!errors?.maritalStatus?.message}\r\n disabled={isFormDisabled} />\r\n {errors?.maritalStatus?.message}\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('marriedName', e)}\r\n invalid={!!errors?.marriedName?.message}\r\n disabled={isFormDisabled} />\r\n {errors?.marriedName?.message}\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n onFormDataItemChange('dateOfBirth', e)}\r\n disabled={true} />\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('countryOfBirth', e)}\r\n disabled={true} />\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n onFormDataItemChange('race', e)}\r\n disabled={true} />\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('secondaryRace', e)}\r\n disabled={true} />\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('residencyStatus', e)}\r\n disabled={true} />\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('residentialAddress', e)}\r\n invalid={!!errors?.residentialAddress?.message}\r\n disabled={isFormDisabled}/>\r\n {errors?.residentialAddress?.message}\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n onFormDataItemChange('nric', e)}\r\n disabled={true} />\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('workPassExpiryDate', e)}\r\n disabled={true} />\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n onFormDataItemChange('email', e)}\r\n invalid={!!errors?.email?.message}\r\n disabled={isFormDisabled} />\r\n {errors?.email?.message}\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('mobile', { target: { value } })}\r\n countryCodeEditable={false}\r\n disableDropdown={true}\r\n className='MyInformationForm__form-group__phone-input'\r\n country={'sg'}\r\n onlyCountries={['sg']}\r\n disabled={isFormDisabled} />\r\n {errors?.mobile?.message}\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n onFormDataItemChange('occupation', e)}\r\n disabled={true} />\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('typeOfHousing', e)}\r\n disabled={true} />\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n onFormDataItemChange('nameOfEmployer', e)}\r\n disabled={true} />\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('employmentSector', e)}\r\n disabled={true} />\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n onFormDataItemChange('income', e)}\r\n disabled={true} />\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('assessedYearOfIncome', e)}\r\n disabled={true} />\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n onFormDataItemChange('passType', e)}\r\n disabled={true} />\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n onFormDataItemChange('passStatus', e)}\r\n disabled={true} />\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nMyInformationForm.propTypes = {\r\n formData: PropTypes.object.isRequired,\r\n onFormDataItemChange: PropTypes.func.isRequired,\r\n isFormDisabled: PropTypes.bool,\r\n includeNoa: PropTypes.bool,\r\n errors: PropTypes.object\r\n};\r\n\r\nexport default MyInformationForm;\r\n","import PropTypes from 'prop-types';\r\nimport React, { useState } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Radio } from 'antd';\r\n\r\nimport { handleAuthorizeSingpass, handleNOA } from 'redux/reducers/auth';\r\nimport { storeUserEvent } from 'api/user';\r\nimport { trackKlaviyoEvent } from 'api/tracking';\r\n\r\nimport SingPassLogo from 'assets/images/general/singpass-logo.png';\r\nimport RetrieveMyInfo from 'assets/images/RetrieveMyInfo.svg';\r\n\r\nimport './SingPassVerification.scss';\r\n\r\nconst SingPassVerification = ({ onToggleLoading, onAuthorizedSingpass, onRejectSingpassAuthorization, isMobile }) => {\r\n const dispatch = useDispatch();\r\n const [includeNotice, setIncludeNotice] = useState(true);\r\n\r\n const onToggleIncludeNotice = () => {\r\n setIncludeNotice(!includeNotice);\r\n dispatch(handleNOA(!includeNotice));\r\n };\r\n\r\n const onRetrieveInfo = () => {\r\n localStorage.removeItem('notificationplacedonetime');\r\n onToggleLoading();\r\n\r\n const payload = {\r\n event: 'singpass_attempt'\r\n };\r\n\r\n storeUserEvent(payload);\r\n\r\n trackKlaviyoEvent('singpass-attempt', {});\r\n\r\n dispatch(handleAuthorizeSingpass({ include_noa: includeNotice }, onAuthorizedSingpass, () => onRejectSingpassAuthorization(includeNotice)));\r\n };\r\n\r\n return (\r\n
\r\n
\r\n SingPass Logo\r\n
\r\n
\r\n
My Information
\r\n

Singpass enables you to retrieve your personal data from participating Government agencies. With your consent, your identity information form can be auto-filled. This makes your application more convenient with no need for supporting documents. Cinch uses Singpass to verify your identity and to make sure you are eligible for our rental service. Your personal information is completely secure and will not be shared with any other parties. Cinch only uses encrypted connections that are approved by Singpass.

\r\n

To be eligible, you must be over 18 years old and meet our proprietary credit check criteria.

\r\n

For faster approval of process, you can include Notice of Assessment while retrieving your info. Please note if Notice of Assessment is not provided you may not have access to all of Cinch's features.

\r\n
\r\n\r\n
\r\n \r\n

Unchecking this box may lead to a slower approval process.

\r\n
\r\n\r\n {(!isMobile) &&\r\n
\r\n \r\n
}\r\n
\r\n );\r\n};\r\n\r\nSingPassVerification.propTypes = {\r\n onToggleLoading: PropTypes.func.isRequired,\r\n onAuthorizedSingpass: PropTypes.func.isRequired,\r\n onRejectSingpassAuthorization: PropTypes.func.isRequired,\r\n isMobile: PropTypes.bool\r\n};\r\n\r\nexport default SingPassVerification;\r\n","import React from 'react';\r\n\r\nimport { ReactComponent as WarningIcon } from 'assets/images/general/ic-warning-outline-black.svg';\r\nimport style from './SingpassExpired.module.scss';\r\n\r\nexport default function SingpassExpired() {\r\n const htmlContent = `Your Singpass data has expired, but no worries! Please refresh your data to continue.`;\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import axios from 'axios';\r\n\r\nimport { AUTH_API_URL } from 'config/constants';\r\n\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { getAuthToken } from 'utils/helpers';\r\n\r\nexport async function singpassForm(data) {\r\n const options = {\r\n method: 'POST',\r\n data,\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n url: AUTH_API_URL + '/authorize/singpass/form'\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('Something went wrong. Please try again. ', notifType.DANGER);\r\n\r\n throw err;\r\n }\r\n}\r\n\r\nexport async function singpassResend(data) {\r\n const options = {\r\n method: 'POST',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken()\r\n },\r\n url: AUTH_API_URL + '/authorize/singpass/otp/resend',\r\n data\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('Something went wrong. Please try again.', notifType.DANGER);\r\n\r\n throw err;\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSelector } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nimport { ROUTES } from 'config/constants';\r\n\r\nimport Button from 'containers/App/components/Button/Button';\r\n\r\nimport logo from 'assets/images/general/logo.svg';\r\n\r\nimport style from './FormMessage.module.scss';\r\n\r\nFormMessage.propTypes = {\r\n singpass: PropTypes.bool,\r\n handleEnableSingpass: PropTypes.func\r\n};\r\n\r\nfunction FormMessage({ singpass, handleEnableSingpass }) {\r\n const history = useHistory();\r\n const { segment } = useSelector(state => ({ segment: state.common.segment }));\r\n const segmentQuery = segment ? `?segment=${segment}` : '';\r\n\r\n return (\r\n
\r\n
\r\n Cinch Logo\r\n
\r\n
\r\n
\r\n We are sorry, you are not eligible for our services at the moment.\r\n
\r\n {/*
\r\n If you feel that this is a mistake or to better understand our policies\r\n
\r\n
\r\n please feel free to contact us at support@cinch.sg or +65 8168-8604.\r\n
*/}\r\n
\r\n
\r\n
\r\n history.push(ROUTES.HOME + segmentQuery)}\r\n title='Go to Homepage'/>\r\n
\r\n
\r\n {!singpass\r\n ? history.push(ROUTES.ABOUT_US)}\r\n title='Contact Us'/>\r\n : \r\n }\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default FormMessage;\r\n","import React from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { Modal, Button } from 'reactstrap';\r\nimport { toggleInvoiceModal } from 'redux/reducers/auth';\r\nimport style from './InvoiceModal.module.scss';\r\nimport close from 'assets/images/general/close.svg';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { ROUTES } from 'config/constants';\r\nimport { getLastPageUrlWithoutAuth } from 'utils/helpers';\r\n\r\nconst InvoiceModal = () => {\r\n const isOpen = useSelector((state) => state.auth.isInvoiceModalOpen);\r\n const invoiceUrl = useSelector((state) => state.auth.invoiceUrl);\r\n const orderNumber = useSelector((state) => state.auth.orderNumber);\r\n const productId = useSelector((state) => state.auth.productId);\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n if (!isOpen) return null;\r\n\r\n const handleClose = () => {\r\n dispatch(toggleInvoiceModal(false));\r\n history.push(getLastPageUrlWithoutAuth());\r\n };\r\n\r\n const viewInvoice = (productId, orderNumber, invoiceUrl) => {\r\n dispatch(toggleInvoiceModal(false));\r\n\r\n if (invoiceUrl) {\r\n window.open(invoiceUrl);\r\n history.push(getLastPageUrlWithoutAuth());\r\n } else {\r\n history.push(ROUTES.ORDEREDPRODUCT(productId, orderNumber));\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n
\r\n Payment Pending\r\n
\r\n
\r\n close\r\n
\r\n
\r\n
\r\n *There is an unpaid balance on your account.

\r\n\r\n To avoid any service interruptions, please settle any outstanding balances as soon as possible.
\r\n If you are having difficulty paying, please contact our customer support team
\r\n via Whatsapp at +65 8168-8604 or via email at support@cinch.sg.

\r\n\r\n Thanks for your attention to this matter!\r\n
\r\n
\r\n viewInvoice(productId, orderNumber, invoiceUrl)} >\r\n View Invoice\r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default InvoiceModal;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Link, useHistory, useLocation } from 'react-router-dom';\r\n\r\nimport { ROUTES } from 'config/constants';\r\n\r\nimport './Autocomplete.scss';\r\n\r\nexport function Autocomplete({\r\n productsList,\r\n categsList,\r\n closeList,\r\n rememberTheLastSearchItem\r\n}) {\r\n const history = useHistory();\r\n const { pathname } = useLocation();\r\n\r\n return (\r\n
\r\n {categsList && !!categsList.length && (\r\n

\r\n CATEGORIES\r\n

\r\n )}\r\n {categsList && categsList.map(cat => (\r\n {\r\n closeList();\r\n history.push({\r\n pathname: ROUTES.PRODUCTS,\r\n search: `?category[]=${cat?.id}&rental_period=12`\r\n });\r\n }}\r\n key={cat?.id}>\r\n {`Icon\r\n {cat?.name}\r\n
\r\n ))}\r\n\r\n {productsList && !!productsList.length && (\r\n
\r\n TOP RESULTS\r\n
\r\n )}\r\n {(productsList && productsList.length > 0) ? productsList.map(\r\n (product, i) =>\r\n i < 5 && (\r\n rememberTheLastSearchItem(product)}\r\n key={product?.id}>\r\n
\r\n

\r\n {product?.name}\r\n

\r\n
\r\n
\r\n )\r\n ) : No results found! Try cinch.sg}\r\n {(pathname !== ROUTES.PRODUCTS && productsList.length > 1) && (\r\n
\r\n View All Products\r\n
\r\n )}\r\n
\r\n );\r\n}\r\n\r\nAutocomplete.propTypes = {\r\n productsList: PropTypes.array,\r\n categsList: PropTypes.array,\r\n closeList: PropTypes.func,\r\n rememberTheLastSearchItem: PropTypes.func\r\n};\r\n","export default __webpack_public_path__ + \"static/media/search-normal.5f89b226.png\";","import React, { useEffect, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Input, Spinner } from 'reactstrap';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport ReactGA from 'react-ga4';\r\nimport * as Sentry from '@sentry/react';\r\n\r\nimport { ROUTES } from 'config/constants';\r\nimport { Autocomplete } from 'containers/App/components/Header/Autocomplete';\r\n\r\nimport { getAutocompleteProducts } from 'api/products';\r\n\r\nimport searchIcon from 'assets/images/search-normal.png';\r\n\r\nimport './Search.scss';\r\n\r\nconst SearchInput = ({\r\n searchQuery,\r\n isMobile\r\n}) => {\r\n const history = useHistory();\r\n const location = useLocation();\r\n const containerRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [autoCompleteProducts, setAutoCompleteProducts] = useState([]);\r\n const [searchHistoryVisibile, setSearchHistoryVisibile] = useState(false);\r\n const [isAutocompleteVisibile, setAutocompleteVisibility] = useState(false);\r\n const [searchHistory, setSearchHistory] = useState([]);\r\n const [search, setSearch] = useState(searchQuery);\r\n\r\n const handleClickOutside = (event) => {\r\n if (\r\n containerRef.current &&\r\n !containerRef.current.contains(event.target)\r\n ) {\r\n resetSearch();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.addEventListener('mousedown', handleClickOutside);\r\n const searchHistory = JSON.parse(localStorage.getItem('searchHistory')) || [];\r\n\r\n if (searchHistory.length > 0) setSearchHistory(searchHistory);\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (window.location.pathname === ROUTES.SEARCH && (searchHistory && searchHistory.length !== 0)) {\r\n setSearchHistoryVisibile(true);\r\n }\r\n }, [searchHistory]);\r\n\r\n useEffect(() => {\r\n handleUrlChange();\r\n const unlisten = history.listen(handleUrlChange);\r\n\r\n return () => unlisten();\r\n }, [location.pathname]);\r\n\r\n const handleUrlChange = () => setAutocompleteVisibility(false);\r\n\r\n useEffect(() => {\r\n if (isAutocompleteVisibile) {\r\n updateTheLocalSearchHistory(search);\r\n setSearchHistoryVisibile(false);\r\n } else {\r\n setSearchHistory(JSON.parse(localStorage.getItem('searchHistory')));\r\n }\r\n }, [isAutocompleteVisibile]);\r\n\r\n useEffect(() => {\r\n if (search !== undefined) populateProductsWithSearchFilling(search);\r\n }, [search]);\r\n\r\n const updateTheLocalSearchHistory = (search) => {\r\n const searchHistory = JSON.parse(localStorage.getItem('searchHistory')) || [];\r\n const updatedHistory = [search, ...searchHistory.filter(item => item !== search)];\r\n\r\n if (!searchHistory.includes(search)) {\r\n searchHistory.push(search);\r\n localStorage.setItem('searchHistory', JSON.stringify(searchHistory));\r\n }\r\n\r\n if (updatedHistory.length > 5) {\r\n updatedHistory.pop();\r\n }\r\n\r\n localStorage.setItem('searchHistory', JSON.stringify(updatedHistory));\r\n ReactGA.event({\r\n category: 'Search',\r\n action: 'User Completed Search',\r\n label: search\r\n });\r\n };\r\n\r\n const populateProductsWithSearchFilling = async (value) => {\r\n setLoading(true);\r\n\r\n try {\r\n if (value && value.length >= 3) {\r\n const prods = await getAutocompleteProducts(value);\r\n\r\n if (prods?.data.length > 0) setAutoCompleteProducts(prods?.data);\r\n setTimeout(() => {\r\n setAutocompleteVisibility(true);\r\n setSearchHistoryVisibile(false);\r\n }, 1000);\r\n } else {\r\n if (value && value.length === 0) {\r\n resetSearch();\r\n }\r\n }\r\n } catch (error) {\r\n Sentry.captureException(error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const clearSearchHistory = () => {\r\n localStorage.removeItem('searchHistory');\r\n setSearchHistoryVisibile(false);\r\n };\r\n\r\n const resetSearch = () => {\r\n setSearch('');\r\n setAutoCompleteProducts([]);\r\n\r\n if (isMobile) {\r\n setSearchHistoryVisibile(true);\r\n } else {\r\n setSearchHistoryVisibile(false);\r\n }\r\n\r\n setAutocompleteVisibility(false);\r\n };\r\n\r\n const handleSearchOnFocus = () => {\r\n const searchHistory = JSON.parse(localStorage.getItem('searchHistory')) || [];\r\n\r\n if (searchHistory.length > 0) setSearchHistoryVisibile(true);\r\n };\r\n\r\n const handleSearch = async e => {\r\n setAutoCompleteProducts([]);\r\n const { value } = e.target;\r\n\r\n setSearch(value);\r\n populateProductsWithSearchFilling(value);\r\n };\r\n\r\n const fillSearchInput = (item) => setSearch(item);\r\n\r\n const rememberTheLastSearchItem = (item) => {\r\n updateTheLocalSearchHistory(item?.name);\r\n\r\n if (isMobile) {\r\n history.push(ROUTES.PRODUCT.generate(item?.slug, null));\r\n } else {\r\n window.location.href = ROUTES.PRODUCT.generate(item?.slug, null);\r\n }\r\n };\r\n\r\n const navigateToSearchScreen = () => history.push(ROUTES.SEARCH);\r\n\r\n if (isMobile && window.location.pathname !== ROUTES.SEARCH) {\r\n return Search Icon;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n Search Icon\r\n \r\n {loading && }\r\n
\r\n {isAutocompleteVisibile\r\n ? \r\n : searchHistoryVisibile && \r\n }\r\n
\r\n );\r\n};\r\n\r\nconst SearchHistory = ({\r\n searchHistory,\r\n clearSearchHistory,\r\n fillSearchInput\r\n}) => {\r\n return (\r\n
\r\n
\r\n Search History\r\n \r\n
\r\n
\r\n {searchHistory && searchHistory.map(item => fillSearchInput(item)}>{item})}\r\n
\r\n
\r\n );\r\n};\r\n\r\nSearchHistory.propTypes = {\r\n searchHistory: PropTypes.array,\r\n clearSearchHistory: PropTypes.func,\r\n fillSearchInput: PropTypes.func\r\n};\r\n\r\nSearchInput.propTypes = {\r\n searchQuery: PropTypes.string,\r\n isMobile: PropTypes.bool,\r\n rememberTheLastSearchItem: PropTypes.func\r\n};\r\n\r\nexport default SearchInput;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"flex-row\":\"CustomLinearProgress_flex-row__3FxM8\",\"flex-col\":\"CustomLinearProgress_flex-col__2t6IQ\",\"flex-jsb\":\"CustomLinearProgress_flex-jsb__1Qs9k\",\"flex-jsa\":\"CustomLinearProgress_flex-jsa__1XTD7\",\"flex-js\":\"CustomLinearProgress_flex-js__1FGdO\",\"flex-je\":\"CustomLinearProgress_flex-je__2JaM6\",\"flex-jc\":\"CustomLinearProgress_flex-jc__18b9j\",\"flex-as\":\"CustomLinearProgress_flex-as__1j3wR\",\"flex-ae\":\"CustomLinearProgress_flex-ae__3Eq-M\",\"flex-ac\":\"CustomLinearProgress_flex-ac__1Bo26\",\"flex-center\":\"CustomLinearProgress_flex-center__3Mk4i\",\"d-none\":\"CustomLinearProgress_d-none__3iHFF\",\"color-white\":\"CustomLinearProgress_color-white__3f9Ww\",\"color-transparent\":\"CustomLinearProgress_color-transparent__241yV\",\"justify-content-between\":\"CustomLinearProgress_justify-content-between__3jsqB\",\"cursor-pointer\":\"CustomLinearProgress_cursor-pointer__2dwG5\",\"mt-4\":\"CustomLinearProgress_mt-4__31Zyq\",\"mt-5\":\"CustomLinearProgress_mt-5__1jXEi\",\"mb-2\":\"CustomLinearProgress_mb-2__34mBg\",\"ml-0\":\"CustomLinearProgress_ml-0__1LFZ0\",\"ml-2\":\"CustomLinearProgress_ml-2__1BRDW\",\"mr-3\":\"CustomLinearProgress_mr-3__1iSxe\",\"mr-0\":\"CustomLinearProgress_mr-0__3DSLZ\",\"flex-1\":\"CustomLinearProgress_flex-1__9ES9T\",\"flex-2\":\"CustomLinearProgress_flex-2__D1ibL\",\"flex-3\":\"CustomLinearProgress_flex-3__3DviG\",\"flex-4\":\"CustomLinearProgress_flex-4__1kiMI\",\"flex-5\":\"CustomLinearProgress_flex-5__34II5\",\"flex-6\":\"CustomLinearProgress_flex-6___jdeJ\",\"col6\":\"CustomLinearProgress_col6__2GeuJ\",\"width-100\":\"CustomLinearProgress_width-100__2zXMs\",\"page-link\":\"CustomLinearProgress_page-link__3sv7K\",\"header\":\"CustomLinearProgress_header__2Gjiu\",\"cards\":\"CustomLinearProgress_cards__3cHah\",\"dropzone\":\"CustomLinearProgress_dropzone__10aGo\",\"embla__viewport\":\"CustomLinearProgress_embla__viewport__1MNkY\",\"custom-file-upload\":\"CustomLinearProgress_custom-file-upload__BPwKI\",\"zeroMarginBottom\":\"CustomLinearProgress_zeroMarginBottom__Oo5N-\",\"ant-picker\":\"CustomLinearProgress_ant-picker__1pEQC\",\"ant-picker-focused\":\"CustomLinearProgress_ant-picker-focused__3kUSb\",\"simple-grid__gap\":\"CustomLinearProgress_simple-grid__gap__1bd0N\",\"customWordBreaker\":\"CustomLinearProgress_customWordBreaker__H2wje\",\"mobile-margin__gap__bottom\":\"CustomLinearProgress_mobile-margin__gap__bottom__2y0OZ\",\"modal-dialog\":\"CustomLinearProgress_modal-dialog__36VD1\",\"MuiRadio-colorPrimary\":\"CustomLinearProgress_MuiRadio-colorPrimary__3Xs_F\",\"Mui-checked\":\"CustomLinearProgress_Mui-checked__25Ya9\",\"ant-wave-target\":\"CustomLinearProgress_ant-wave-target__iarb5\",\"btn-secondary\":\"CustomLinearProgress_btn-secondary__EvWTi\",\"active\":\"CustomLinearProgress_active__DeRLl\",\"btn-check\":\"CustomLinearProgress_btn-check__gwRMH\",\"show\":\"CustomLinearProgress_show__1M4VX\",\"dropdown-toggle\":\"CustomLinearProgress_dropdown-toggle__3QORq\",\"checkoutFlowContainer\":\"CustomLinearProgress_checkoutFlowContainer__1mKpQ\",\"react-tel-input\":\"CustomLinearProgress_react-tel-input__2rf2g\",\"react-datepicker-wrapper\":\"CustomLinearProgress_react-datepicker-wrapper__1A08Y\",\"select__input-container\":\"CustomLinearProgress_select__input-container__qZyQB\",\"select__input\":\"CustomLinearProgress_select__input__3Ruqq\",\"react-datepicker__input-container\":\"CustomLinearProgress_react-datepicker__input-container__2mjE2\",\"mobile__drawer\":\"CustomLinearProgress_mobile__drawer__1UzSe\",\"list-unstyled\":\"CustomLinearProgress_list-unstyled__3yvtl\",\"ant-tabs-ink-bar-animated\":\"CustomLinearProgress_ant-tabs-ink-bar-animated__16Flx\",\"eapps-countdown-timer-position-bar\":\"CustomLinearProgress_eapps-countdown-timer-position-bar__1JgOb\",\"progress\":\"CustomLinearProgress_progress__8XW0u\"};","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport { Modal } from 'reactstrap';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { setSingpassError } from 'redux/reducers/auth'; // You'll need to create this action\r\n\r\nimport { ROUTES } from 'config/constants';\r\nimport { checkoutRules, getUserCart } from 'api/cart';\r\n\r\nimport FullscreenLoader from '../../components/FullscreenLoader/FullscreenLoader';\r\nimport Button from 'containers/App/components/Button/Button';\r\nimport { notifType, notify } from 'utils/notifSender';\r\n\r\nimport { storeUserEvent } from 'api/user';\r\n\r\nimport dangerSign from '../../assets/images/danger-sign.png';\r\nimport close from '../../assets/images/general/close.svg';\r\nimport { logout } from 'api/auth';\r\nimport { deleteAuthToken } from 'utils/helpers';\r\n\r\nimport './SingpassResult.scss';\r\n\r\nconst SingpassResultContainer = ({ profile }) => {\r\n const location = useLocation();\r\n const history = useHistory();\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [open] = useState(false);\r\n const [openForDuplicateNRIC, setOpenForDuplicateNRIC] = useState(false);\r\n const products = localStorage.getItem('products') ? JSON.parse(localStorage.getItem('products')) : [];\r\n const { segment } = useSelector(state => ({ segment: state.common.segment }));\r\n const segmentQuery = segment ? `?segment=${segment}` : '';\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n window.document.title = 'Singpass Result';\r\n }, []);\r\n\r\n const checkSingpassStatus = status => {\r\n if (status === 'success') {\r\n checkUserCart();\r\n triggerUserEvent('singpass_success');\r\n } else if (status === 'duplicate_nric_fin') {\r\n setIsLoading(false);\r\n dispatch(setSingpassError('duplicate'));\r\n triggerUserEvent('singpass_duplicate_nric_fin');\r\n history.push(ROUTES.CART);\r\n } else {\r\n setIsLoading(false);\r\n dispatch(setSingpassError('error'));\r\n triggerUserEvent('singpass_error');\r\n history.push(ROUTES.CART);\r\n }\r\n };\r\n\r\n const triggerUserEvent = async (event) => {\r\n const payload = {\r\n event: event\r\n };\r\n\r\n await storeUserEvent(payload);\r\n };\r\n\r\n const checkUserCart = async () => {\r\n const resp = await getUserCart();\r\n\r\n if (resp?.data?.products?.length > 0) {\r\n validateCheckout();\r\n } else {\r\n setIsLoading(false);\r\n\r\n if (products?.length > 0) {\r\n // if (profile?.is_student || profile?.pass_proof_of_expiry_required) {\r\n // history.push(ROUTES.DOCUMENTSPROOF);\r\n // } else {\r\n // history.push(ROUTES.ORDER_SUMMARY);\r\n // }\r\n // history.push(ROUTES.ORDER_SUMMARY);\r\n // TODO: Refactor needed\r\n window.location.href = ROUTES.ORDER_SUMMARY;\r\n } else {\r\n history.push(ROUTES.CART);\r\n }\r\n }\r\n };\r\n\r\n const validateCheckout = async () => {\r\n const resp = await checkoutRules();\r\n\r\n setIsLoading(false);\r\n\r\n if (resp?.status === 204) {\r\n // if (profile?.is_student || profile?.pass_proof_of_expiry_required) {\r\n // if (profile?.pass_proof_of_expiry_required) {\r\n // history.push(ROUTES.DOCUMENTSPROOF);\r\n // } else {\r\n // history.push(ROUTES.ORDER_SUMMARY);\r\n // }\r\n // } else {\r\n // history.push(ROUTES.ORDER_SUMMARY);\r\n // }\r\n window.location.href = ROUTES.ORDER_SUMMARY;\r\n } else {\r\n notify(resp?.data?.message?.message, notifType.DANGER, 5000);\r\n history.push(ROUTES.CART);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (!location.search) {\r\n history.push(ROUTES.HOME + segmentQuery);\r\n\r\n return;\r\n }\r\n\r\n checkSingpassStatus(location.search.split('?status=')[1]);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const handleClose = () => {\r\n setOpenForDuplicateNRIC(false);\r\n };\r\n\r\n const handleSignIn = async () => {\r\n try {\r\n setIsLoading(true);\r\n await logout();\r\n await deleteAuthToken();\r\n window.location.replace(ROUTES.SIGN_IN);\r\n } catch (error) {\r\n console.error('Error logging out:', error);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n {isLoading && }\r\n \r\n
\r\n
Danger Sign
\r\n
We are not able to retrieve your information from Singpass.
\r\n
\r\n window.location.replace(ROUTES.CART)}\r\n title='Proceed with your application' />\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
Danger Sign
\r\n
Singpass Already Connected
\r\n
\r\n

Oops! It seems your Singpass is already linked to a different email.

\r\n
    \r\n
  • Please use the original email you have registered with Singpass.
  • \r\n
  • We have sent an email to that account so you can easily find it in case you have forgotten.
  • \r\n
  • If you no longer have access to that email or believe this is an error, please contact our customer support team for assistance.
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n history.push(ROUTES.CONTACT_US)}\r\n title='Contact Us' />\r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nSingpassResultContainer.propTypes = {\r\n profile: PropTypes.object\r\n};\r\n\r\nexport default SingpassResultContainer;\r\n","/* eslint-disable import/no-anonymous-default-export */\r\nimport Cookies from 'js-cookie';\r\nimport ReactGA from 'react-ga4';\r\nimport * as Sentry from '@sentry/react';\r\n\r\nimport { register, login, logout, loginWithOTP, getOTPForLogin, getStudentVerificationCode, verifyStudentVerificationCode } from 'api/auth';\r\nimport { getAuthedProfile, updateUserProfile, storeUserEvent, getPendingInvoice } from 'api/user';\r\nimport { getSegment, setSegment } from './common';\r\n\r\nimport { ROUTES, STORAGEKEY_PASSWORD_SECRET_KEY } from 'config/constants';\r\n\r\nimport { setAuthToken, getAuthToken, deleteAuthToken, createAxiosInstance, getReferralParam, deleteReferralParam, deleteTradeInInfo, getNavigatorData, clearLocationHistoryStack } from 'utils/helpers';\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport axios from 'axios';\r\nimport { trackKlaviyoEvent } from 'api/tracking';\r\nimport CryptoJS from 'crypto-js';\r\n\r\nconst INITIAL_STATE = {\r\n isAppReady: false,\r\n isAuthenticating: false,\r\n isUpdatingProfile: false,\r\n isAuthed: false,\r\n isLoggingOut: false,\r\n openLogin: false,\r\n profile: {\r\n singpass: {}\r\n },\r\n token: '',\r\n showOTP: false,\r\n signUp: false,\r\n userDoLoggedin: false,\r\n singpassSubmissionKey: null,\r\n showSubmit: localStorage.getItem('showSubmit') ? (localStorage.getItem('showSubmit') === 'true') : false,\r\n includeNoa: localStorage.getItem('includeNoa') ? (localStorage.getItem('includeNoa') === 'true') : true,\r\n isInvoiceModalOpen: false,\r\n productId: '',\r\n orderNumber: '',\r\n invoiceUrl: '',\r\n singpassError: null\r\n};\r\n\r\nconst IS_APP_READY = 'IS_APP_READY';\r\n\r\nconst AUTH_START = 'AUTH_START';\r\nconst AUTH_SUCCESS = 'AUTH_SUCCESS';\r\nconst AUTH_FAILED_LOGIN = 'AUTH_FAILED_LOGIN';\r\nconst AUTH_FAILED_REGISTRATION = 'AUTH_FAILED_REGISTRATION';\r\nconst AUTH_LOGOUT_START = 'AUTH_LOGOUT_START';\r\nconst AUTH_LOGOUT_SUCCESS = 'AUTH_LOGOUT_SUCCESS';\r\n\r\nconst UPDATE_PROFILE_START = 'UPDATE_PROFILE_START';\r\nconst UPDATE_PROFILE = 'UPDATE_PROFILE';\r\nconst OPEN_LOGIN = 'OPEN_LOGIN';\r\nconst SHOW_OTP = 'SHOW_OTP';\r\nconst HIDE_OTP = 'HIDE_OTP';\r\nconst OPEN_SIGNUP = 'OPEN_SIGNUP';\r\nconst CLOSE_SIGNUP = 'CLOSE_SIGNUP';\r\nconst SHOW_SUBMIT = 'SHOW_SUBMIT';\r\nconst NOA = 'NOA';\r\nconst ENABLESINGPASS = 'ENABLESINGPASS';\r\n\r\nconst UPDATE_SINGPASS_SUBMISSION_KEY = 'UPDATE_SINGPASS_SUBMISSION_KEY';\r\nconst SHOW_STUDENT_VERIFICATION_CODE = 'SHOW_STUDENT_VERIFICATION_CODE';\r\nconst HIDE_STUDENT_VERIFICATION_CODE = 'HIDE_STUDENT_VERIFICATION_CODE';\r\n\r\nconst SET_SINGPASS_ERROR = 'SET_SINGPASS_ERROR';\r\nconst CLEAR_SINGPASS_ERROR = 'CLEAR_SINGPASS_ERROR';\r\n\r\nexport const appIsReady = () => ({\r\n type: IS_APP_READY\r\n});\r\n\r\nconst authStart = () => ({\r\n type: AUTH_START\r\n});\r\n\r\nexport const authSuccess = (profile, token, userDoLoggedin, invited) => ({\r\n type: AUTH_SUCCESS,\r\n profile,\r\n token,\r\n userDoLoggedin,\r\n invited\r\n});\r\n\r\nconst loginError = () => ({\r\n type: AUTH_FAILED_LOGIN\r\n});\r\n\r\nconst registrationError = () => ({\r\n type: AUTH_FAILED_REGISTRATION\r\n});\r\n\r\nconst authLogoutStart = () => ({\r\n type: AUTH_LOGOUT_START\r\n});\r\n\r\nconst authLogoutSuccess = () => ({\r\n type: AUTH_LOGOUT_SUCCESS\r\n});\r\n\r\nconst updateProfileStart = () => ({\r\n type: UPDATE_PROFILE_START\r\n});\r\n\r\nexport const updateProfile = (profile) => ({\r\n type: UPDATE_PROFILE,\r\n profile\r\n});\r\n\r\nconst showOTPForm = () => ({\r\n type: SHOW_OTP\r\n});\r\n\r\nexport const loginModal = (openLogin) => ({\r\n type: OPEN_LOGIN,\r\n openLogin\r\n});\r\n\r\nexport const handleHideOTP = () => ({\r\n type: HIDE_OTP\r\n});\r\n\r\nexport const updateSingpassSubmissionKey = (submissionKey) => ({\r\n type: UPDATE_SINGPASS_SUBMISSION_KEY,\r\n payload: submissionKey\r\n});\r\n\r\nexport const showSubmit = payload => ({\r\n type: SHOW_SUBMIT,\r\n payload\r\n});\r\n\r\nexport const handleNOA = payload => ({\r\n type: NOA,\r\n payload\r\n});\r\n\r\nexport const handleEnableSingpass = () => ({\r\n type: ENABLESINGPASS\r\n});\r\n\r\nexport const handleShowStudentVerificationCode = () => ({\r\n type: SHOW_STUDENT_VERIFICATION_CODE\r\n});\r\n\r\nexport const handleHideStudentVerificationCode = () => ({\r\n type: HIDE_STUDENT_VERIFICATION_CODE\r\n});\r\n\r\nconst TOGGLE_INVOICE_MODAL = 'TOGGLE_INVOICE_MODAL';\r\n\r\nexport const toggleInvoiceModal = (isOpen, productId = '', orderNumber = '', invoiceUrl = '') => ({\r\n type: TOGGLE_INVOICE_MODAL,\r\n isOpen,\r\n productId,\r\n orderNumber,\r\n invoiceUrl\r\n});\r\n\r\nexport const setSingpassError = (error) => ({\r\n type: SET_SINGPASS_ERROR,\r\n payload: error\r\n});\r\n\r\nexport const clearSingpassError = () => ({\r\n type: CLEAR_SINGPASS_ERROR\r\n});\r\n\r\nexport function handleGetOTPForLogin({ phone }) {\r\n return async (dispatch) => {\r\n await dispatch(authStart());\r\n\r\n try {\r\n await getOTPForLogin({ mobile_number: phone });\r\n notify('OTP code sent successfully', notifType.SUCCESS);\r\n await dispatch(showOTPForm());\r\n } catch (err) {\r\n dispatch(loginError());\r\n }\r\n };\r\n}\r\n\r\nexport function handleLoginWithOTP({ otp }) {\r\n return async (dispatch) => {\r\n dispatch(authStart());\r\n\r\n try {\r\n const token = await loginWithOTP({ login_otp: otp });\r\n\r\n setAuthToken(token);\r\n\r\n const data = await getAuthedProfile();\r\n\r\n notify('Welcome ' + data.name + ' ' + data.surname, notifType.SUCCESS);\r\n\r\n dispatch(authSuccess(data.data, token, false, data.invited));\r\n } catch (err) {\r\n dispatch(loginError());\r\n }\r\n };\r\n}\r\n\r\nexport function handleLogin({ email, password, isRemember, gaSessionId, trueIp, onSuccess, onFailure }) {\r\n return async (dispatch) => {\r\n dispatch(authStart());\r\n\r\n const secretKey = STORAGEKEY_PASSWORD_SECRET_KEY;\r\n const key = CryptoJS.enc.Utf8.parse(secretKey);\r\n const iv = CryptoJS.lib.WordArray.random(128 / 8);\r\n const encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(password), key, {\r\n keySize: 256 / 32,\r\n iv: iv,\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7\r\n });\r\n const encryptedPassword = encrypted.toString();\r\n const encryptedIv = CryptoJS.enc.Base64.stringify(iv);\r\n\r\n const tmp = {\r\n email,\r\n password: encryptedPassword,\r\n iv: encryptedIv,\r\n ga_session_id: gaSessionId,\r\n true_ip: trueIp,\r\n navigator: getNavigatorData()\r\n };\r\n\r\n if (Cookies.get('_fp')) {\r\n // if we have fp send it to BE\r\n tmp.exact_id = Cookies.get('_fp');\r\n }\r\n\r\n try {\r\n const resp = await login(tmp);\r\n\r\n if (!Cookies.get('_fp')) {\r\n // if user doesn't use this device for signup add fingerprint to its cookie\r\n Cookies.set('_fp', resp.fingerprint);\r\n }\r\n\r\n // setAuthToken(token, isRemember);\r\n setAuthToken(resp.access_token);\r\n\r\n const data = await getAuthedProfile();\r\n\r\n let pendingInvoice = null;\r\n\r\n if (data.data.activeSubscriber) {\r\n pendingInvoice = await getPendingInvoice();\r\n }\r\n\r\n /**\r\n * TODO: for now we are storing is_student in localStorage for post-signup flow\r\n */\r\n localStorage.setItem('is_student', data.data.is_student ? 'b2s' : 'b2c');\r\n\r\n dispatch(setSegment(data.data.is_student ? 'b2s' : 'b2c'));\r\n\r\n notify('Welcome!', notifType.SUCCESS);\r\n\r\n await dispatch(authSuccess(data.data, resp.access_token, true, data.invited));\r\n onSuccess(pendingInvoice ? pendingInvoice.data : {});\r\n } catch (err) {\r\n onFailure();\r\n dispatch(loginError());\r\n }\r\n };\r\n}\r\n\r\nexport function handleRegistration({\r\n email,\r\n password,\r\n confirmPassword,\r\n subscriptionAcknowledge,\r\n gaSessionId,\r\n trueIp,\r\n needRedirect,\r\n onSuccess,\r\n onFailure\r\n}) {\r\n return async (dispatch) => {\r\n dispatch(authStart());\r\n\r\n const storageReferral = getReferralParam();\r\n\r\n const secretKey = STORAGEKEY_PASSWORD_SECRET_KEY;\r\n const key = CryptoJS.enc.Utf8.parse(secretKey);\r\n const iv = CryptoJS.lib.WordArray.random(128 / 8);\r\n const encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(password), key, {\r\n keySize: 256 / 32,\r\n iv: iv,\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7\r\n });\r\n const encryptedPassword = encrypted.toString();\r\n const encryptedConfirm = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(confirmPassword), key, {\r\n keySize: 256 / 32,\r\n iv: iv,\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7\r\n });\r\n const encryptedConfirmPassword = encryptedConfirm.toString();\r\n const encryptedIv = CryptoJS.enc.Base64.stringify(iv);\r\n\r\n const tmp = {\r\n email,\r\n password: encryptedPassword,\r\n password_confirmation: encryptedConfirmPassword,\r\n iv: encryptedIv,\r\n subscribed_to_promotion: subscriptionAcknowledge ? 1 : 0,\r\n ga_session_id: gaSessionId,\r\n true_ip: trueIp,\r\n referral_code: storageReferral,\r\n navigator: getNavigatorData()\r\n };\r\n\r\n if (Cookies.get('_fp')) {\r\n // if we have fp send it to BE\r\n tmp.exact_id = Cookies.get('_fp');\r\n }\r\n\r\n try {\r\n const user = await register(tmp);\r\n\r\n if (user?.status_code === 200) {\r\n const token = user.access_token;\r\n\r\n if (!Cookies.get('_fp')) {\r\n // if user doesn't use this device before add fingerprint to its cookie\r\n Cookies.set('_fp', user.fingerprint);\r\n }\r\n\r\n setAuthToken(token);\r\n\r\n const data = await getAuthedProfile();\r\n\r\n // store user events\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const utmFields = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'irclickid'];\r\n\r\n const userEventParams = {\r\n event: 'user_registered',\r\n ...Object.fromEntries(utmFields.map(field => [field, urlParams.get(field)]).filter(([_, value]) => value)) // get utm params from url if they exist, filtering out empty values\r\n };\r\n\r\n storeUserEvent(userEventParams);\r\n\r\n /**\r\n * TODO: for now we are storing is_student in localStorage for post-signup flow\r\n */\r\n localStorage.setItem('is_student', data.data.is_student ? 'b2s' : 'b2c');\r\n deleteReferralParam();\r\n\r\n // post to HubSpot to populate Contacts table\r\n const hubspotWebsiteFormUrl = 'https://api.hsforms.com/submissions/v3/integration/submit/23260945/aaa48c80-431f-43fa-a617-9687fc097720';\r\n const hubspotFormFields = [\r\n {\r\n objectTypeId: '0-1',\r\n name: 'email',\r\n value: email\r\n }\r\n ];\r\n\r\n const context = {\r\n hutk: Cookies.get('hubspotutk'),\r\n pageUri: window.location.href,\r\n pageName: document.title,\r\n ipAddress: trueIp\r\n };\r\n\r\n await axios.post(hubspotWebsiteFormUrl, {\r\n fields: hubspotFormFields,\r\n context: context\r\n }).then(() => { }).catch(() => { });\r\n\r\n const trackPayload = {\r\n ...data.data\r\n };\r\n\r\n trackPayload.referral_code = storageReferral;\r\n trackKlaviyoEvent('user-registered', trackPayload);\r\n dispatch(authSuccess(data.data, token, true, data.invited));\r\n notify('Welcome!', notifType.SUCCESS);\r\n onSuccess();\r\n\r\n if (needRedirect) {\r\n const segment = getSegment();\r\n const segmentQuery = segment ? `?segment=${segment}` : '';\r\n\r\n window.location.replace(ROUTES.HOME + segmentQuery);\r\n }\r\n } else {\r\n dispatch(registrationError());\r\n onFailure();\r\n }\r\n } catch (err) {\r\n onFailure(err);\r\n dispatch(registrationError());\r\n }\r\n };\r\n}\r\n\r\nexport function handleAutoLogin() {\r\n return async (dispatch) => {\r\n try {\r\n const token = getAuthToken();\r\n\r\n if (token !== null) {\r\n const data = await getAuthedProfile(token);\r\n\r\n ReactGA.gtag('set', 'user_id', data.id);\r\n\r\n dispatch(authSuccess(data.data, token, true, data.invited));\r\n }\r\n } catch (err) {\r\n dispatch(handleLogout(true));\r\n } finally {\r\n dispatch(appIsReady());\r\n }\r\n };\r\n}\r\n\r\nexport function handleLogout() {\r\n return async (dispatch) => {\r\n const token = getAuthToken();\r\n\r\n const storageKeys = [\r\n 'is_student',\r\n 'currentCartItemPricingObj',\r\n 'currentlySelectedCartItem',\r\n 'selectedRentalPeriod',\r\n 'selectedColorOption',\r\n 'orderDetails',\r\n 'products',\r\n 'orderedProduct',\r\n 'notificationplacedonetime',\r\n 'idlepopupClicked'\r\n ];\r\n\r\n storageKeys.forEach(key => localStorage.removeItem(key));\r\n\r\n try {\r\n if (token !== null) {\r\n await logout(token);\r\n\r\n if (window.fcWidget && window.fcWidget.user) {\r\n window.fcWidget.user.clear().then(\r\n () => { },\r\n () => { }\r\n );\r\n }\r\n\r\n dispatch(setSegment('b2s'));\r\n\r\n const segmentQuery = '?segment=b2s';\r\n\r\n window.location.replace(ROUTES.HOME + segmentQuery);\r\n }\r\n } catch (err) {\r\n console.error('Logout failed', err);\r\n }\r\n\r\n dispatch(authLogoutStart());\r\n deleteAuthToken();\r\n deleteTradeInInfo();\r\n clearLocationHistoryStack();\r\n dispatch(authLogoutSuccess());\r\n };\r\n}\r\n\r\nexport function handleUpdateUserProfile(id, params) {\r\n return async (dispatch) => {\r\n dispatch(updateProfileStart());\r\n\r\n try {\r\n const { data } = await updateUserProfile(id, params);\r\n\r\n dispatch(updateProfile(data));\r\n } catch (err) {\r\n dispatch(updateProfile({}));\r\n }\r\n };\r\n}\r\n\r\nexport function handleGetStudentVerificationOTP({ email, onSuccess, onFailure }) {\r\n return async (dispatch) => {\r\n dispatch(authStart());\r\n\r\n try {\r\n const res = await getStudentVerificationCode({ email: email });\r\n\r\n if (res.data?.status_code === 200) {\r\n notify('OTP code sent to your email.', notifType.SUCCESS);\r\n await dispatch(handleShowStudentVerificationCode());\r\n onSuccess();\r\n } else {\r\n onFailure();\r\n }\r\n\r\n dispatch(registrationError());\r\n } catch (err) {\r\n onFailure();\r\n dispatch(registrationError());\r\n }\r\n };\r\n}\r\n\r\nexport function handleVerifyStudentVerificationCode({ code, email, onSuccess, onFailure }) {\r\n return async (dispatch) => {\r\n try {\r\n const payload = {\r\n code,\r\n email\r\n };\r\n const { data } = await verifyStudentVerificationCode(payload);\r\n const profileResp = await getAuthedProfile();\r\n const token = getAuthToken();\r\n\r\n await dispatch(authSuccess(profileResp.data, token, true, profileResp.invited));\r\n\r\n if (data?.status_code === 200) {\r\n notify('OTP code verified successfully.', notifType.SUCCESS);\r\n onSuccess();\r\n } else {\r\n onFailure();\r\n }\r\n } catch (err) {\r\n onFailure();\r\n dispatch(registrationError());\r\n }\r\n };\r\n}\r\n\r\nexport const handleOpenSignUp = () => ({\r\n type: OPEN_SIGNUP\r\n});\r\n\r\nexport const handleCloseSignUp = () => ({\r\n type: CLOSE_SIGNUP\r\n});\r\n\r\n// eslint-disable-next-line valid-jsdoc\r\n/**\r\n * add items to cart\r\n * @param {Object} form\r\n * @param {Boolean} form.include_noa\r\n * @param {Function} onSuccess\r\n * @param {Function} onFailure\r\n * @returns {Promise}\r\n */\r\nexport const handleAuthorizeSingpass = (form, onSuccess = () => { }, onFailure = () => { }, isRefresh) => {\r\n return async (dispatch) => {\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n const updatedForm = {\r\n ...form,\r\n channel: 'samsung'\r\n };\r\n\r\n try {\r\n const { data } = await instance.post('/authorize/singpass', updatedForm);\r\n\r\n if (isRefresh) {\r\n dispatch(showSubmit(true));\r\n }\r\n\r\n if (data && data?.redirect_url) {\r\n onSuccess(data?.redirect_url);\r\n } else {\r\n onFailure();\r\n dispatch(showSubmit(false));\r\n }\r\n } catch (e) {\r\n onFailure();\r\n dispatch(showSubmit(false));\r\n }\r\n };\r\n};\r\n\r\n/**\r\n* @param {String} code\r\n* @param {Function} onSuccess\r\n* @param {Function} onFailure\r\n* @returns {Promise}\r\n*/\r\n\r\nexport const handleGetSubmissionKey = (code, onSuccess = () => { }, onFailure = () => { }) => {\r\n return async (dispatch) => {\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n const { data } = await instance.post('/authorize/singpass/person', { code });\r\n\r\n onSuccess(data);\r\n } catch (e) {\r\n onFailure();\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * add items to cart\r\n * @param {Object} form\r\n * @param {String} form.submission_key\r\n * @param {String} form.martial_status\r\n * @param {String} form.residency_status\r\n * @param {String} form.email_address\r\n * @param {String} form.mobile\r\n * @param {Function} onSuccess\r\n * @param {Function} onFailure\r\n * @returns {Promise}\r\n */\r\nexport const handleSingpassSubmitData = (form, onSuccess = () => { }, onFailure = () => { }) => {\r\n return async () => {\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n const { data } = await instance.post('/authorize/singpass/submit', form);\r\n\r\n // update user singpass status\r\n // dispatch(handleAutoLogin());\r\n // dispatch(showSubmit(false));\r\n if (data) {\r\n onSuccess(data);\r\n } else {\r\n onFailure();\r\n }\r\n } catch (e) {\r\n onFailure();\r\n }\r\n };\r\n};\r\n\r\nexport const handleFetchSingpassData = (onSuccess = () => { }, onFailure = () => { }) => {\r\n return async (dispatch) => {\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n const { data } = await instance.get('/authorize/singpass/index');\r\n\r\n if (data && data?.data) {\r\n dispatch(updateProfile({ singpass: data?.data }));\r\n onSuccess();\r\n } else {\r\n onFailure();\r\n }\r\n } catch (e) {\r\n onFailure();\r\n }\r\n };\r\n};\r\n\r\nexport const handleVerifySingpassOtp = (form, onSuccess = () => { }, onFailure = () => { }) => {\r\n return async (dispatch) => {\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n await instance.post('authorize/singpass/otp/submit', form);\r\n dispatch(handleAutoLogin());\r\n onSuccess();\r\n } catch (err) {\r\n const msg = err?.response?.data?.message;\r\n\r\n onFailure(msg || null);\r\n }\r\n };\r\n};\r\n\r\nexport default (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n case OPEN_LOGIN:\r\n return {\r\n ...state,\r\n openLogin: action.openLogin\r\n };\r\n\r\n case IS_APP_READY:\r\n return {\r\n ...state,\r\n isAppReady: true\r\n };\r\n\r\n case AUTH_START:\r\n return {\r\n ...state,\r\n isAuthenticating: true\r\n };\r\n\r\n case AUTH_FAILED_LOGIN:\r\n case AUTH_FAILED_REGISTRATION:\r\n return {\r\n ...state,\r\n isAuthenticating: false,\r\n token: ''\r\n };\r\n\r\n case AUTH_SUCCESS: {\r\n const { profile, userDoLoggedin, invited } = action;\r\n\r\n Sentry.configureScope((scope) => {\r\n scope.setUser({ id: profile.id, email: profile.email });\r\n });\r\n\r\n return {\r\n ...state,\r\n isAuthenticating: false,\r\n isAuthed: true,\r\n openLogin: false,\r\n token: action.token,\r\n profile,\r\n userDoLoggedin: !userDoLoggedin,\r\n invited\r\n };\r\n }\r\n\r\n case UPDATE_PROFILE_START:\r\n return {\r\n ...state,\r\n isUpdatingProfile: true\r\n };\r\n\r\n case UPDATE_PROFILE: {\r\n const { profile } = action;\r\n\r\n return {\r\n ...state,\r\n isUpdatingProfile: false,\r\n profile: {\r\n ...state.profile,\r\n ...profile\r\n }\r\n };\r\n }\r\n\r\n case AUTH_LOGOUT_START:\r\n return {\r\n ...state,\r\n isLoggingOut: true\r\n };\r\n\r\n case AUTH_LOGOUT_SUCCESS:\r\n return {\r\n ...INITIAL_STATE,\r\n isAppReady: true\r\n };\r\n\r\n case SHOW_OTP:\r\n return {\r\n ...state,\r\n showOTP: true,\r\n isAuthenticating: false\r\n };\r\n case HIDE_OTP:\r\n return {\r\n ...state,\r\n showOTP: false,\r\n isAuthenticating: false\r\n };\r\n\r\n case OPEN_SIGNUP:\r\n return {\r\n ...state,\r\n signUp: true\r\n };\r\n\r\n case CLOSE_SIGNUP:\r\n return {\r\n ...state,\r\n signUp: false\r\n };\r\n\r\n case UPDATE_SINGPASS_SUBMISSION_KEY:\r\n return {\r\n ...state,\r\n singpassSubmissionKey: action.payload\r\n };\r\n\r\n case SHOW_SUBMIT:\r\n localStorage.setItem('showSubmit', action.payload);\r\n\r\n return {\r\n ...state,\r\n showSubmit: action.payload\r\n };\r\n\r\n case NOA:\r\n localStorage.setItem('includeNoa', action.payload);\r\n\r\n return {\r\n ...state,\r\n includeNoa: action.payload\r\n };\r\n\r\n case ENABLESINGPASS:\r\n return {\r\n ...state,\r\n profile: { singpass_status: null }\r\n };\r\n\r\n case SHOW_STUDENT_VERIFICATION_CODE:\r\n return {\r\n ...state,\r\n showStudentVerificationCode: true,\r\n isAuthenticating: false\r\n };\r\n case HIDE_STUDENT_VERIFICATION_CODE:\r\n return {\r\n ...state,\r\n showStudentVerificationCode: false,\r\n isAuthenticating: false\r\n };\r\n\r\n case TOGGLE_INVOICE_MODAL:\r\n return {\r\n ...state,\r\n isInvoiceModalOpen: action.isOpen,\r\n productId: action.productId,\r\n orderNumber: action.orderNumber,\r\n invoiceUrl: action.invoiceUrl\r\n };\r\n\r\n case SET_SINGPASS_ERROR:\r\n return {\r\n ...state,\r\n singpassError: action.payload\r\n };\r\n\r\n case CLEAR_SINGPASS_ERROR:\r\n return {\r\n ...state,\r\n singpassError: null\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"title_title__PU8Gt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"body\":\"Form_body__1UVBM\",\"colEmail\":\"Form_colEmail__1AKjG\",\"modal\":\"Form_modal__1nIcY\"};","import React from 'react';\r\n// import PropTypes from 'prop-types';\r\nimport style from './title.module.scss';\r\n\r\n// Title.propTypes = {\r\n// token: PropTypes.string.isRequired,\r\n// isAuthed: PropTypes.bool\r\n// };\r\n\r\nfunction Title() {\r\n return (\r\n
\r\n My Information\r\n
\r\n );\r\n}\r\n\r\nexport default Title;\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nimport { ROUTES } from 'config/constants';\r\n\r\nimport Title from '../title';\r\n\r\nimport { handleAuthorizeSingpass } from 'redux/reducers/auth';\r\nimport { storeUserEvent } from 'api/user';\r\n\r\nimport RetrieveMyInfo from 'assets/images/RetrieveMyInfo.svg';\r\n\r\nimport style from './FormHeader.module.scss';\r\n\r\nconst FormHeader = ({ title }) => {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const [, setIsLoading] = useState(false);\r\n\r\n const handleClick = () => history.push(ROUTES.SINGPASS);\r\n\r\n const onAuthorizedSingpass = redirectUrl => {\r\n window.location.href = redirectUrl;\r\n };\r\n\r\n const onRejectSingpassAuthorization = () => setIsLoading(false);\r\n\r\n const onRetrieveInfo = () => {\r\n localStorage.removeItem('notificationplacedonetime');\r\n const payload = {\r\n event: 'singpass_attempt'\r\n };\r\n\r\n storeUserEvent(payload);\r\n\r\n dispatch(handleAuthorizeSingpass({ include_noa: true }, onAuthorizedSingpass, () => onRejectSingpassAuthorization(true)));\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {!title\r\n ?
SingPass manual form *manual data review may take up to 30 days
\r\n :
</div>\r\n }\r\n </div>\r\n <div className={style.header__flex + ' ' + style.header__pointer} onClick={handleClick}>\r\n <div className={style.header__text}>\r\n <span className={style.header__SingPassVerification__text}>For instant review:</span>\r\n <button className={style.header__SingPassVerification__button} onClick={onRetrieveInfo}>\r\n <img src={RetrieveMyInfo} alt='Retrieve My Info on SingPass' />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nFormHeader.propTypes = {\r\n title: PropTypes.bool\r\n};\r\n\r\nexport default FormHeader;\r\n","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgExclamation(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_3034_56932)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 4C10.4178 4 8.87104 4.46919 7.55544 5.34824C6.23985 6.22729 5.21447 7.47672 4.60897 8.93853C4.00347 10.4003 3.84504 12.0089 4.15372 13.5607C4.4624 15.1126 5.22433 16.538 6.34315 17.6569C7.46197 18.7757 8.88743 19.5376 10.4393 19.8463C11.9911 20.155 13.5997 19.9965 15.0615 19.391C16.5233 18.7855 17.7727 17.7602 18.6518 16.4446C19.5308 15.129 20 13.5822 20 12C20 9.87827 19.1571 7.84344 17.6569 6.34315C16.1566 4.84285 14.1217 4 12 4ZM12 18.6667C10.6815 18.6667 9.39253 18.2757 8.2962 17.5431C7.19987 16.8106 6.34539 15.7694 5.84081 14.5512C5.33622 13.333 5.2042 11.9926 5.46144 10.6994C5.71867 9.40619 6.35361 8.2183 7.28596 7.28595C8.21831 6.3536 9.4062 5.71867 10.6994 5.46143C11.9926 5.2042 13.3331 5.33622 14.5512 5.8408C15.7694 6.34539 16.8106 7.19987 17.5431 8.2962C18.2757 9.39253 18.6667 10.6815 18.6667 12C18.6667 12.8755 18.4942 13.7424 18.1592 14.5512C17.8242 15.3601 17.3331 16.095 16.714 16.714C16.095 17.3331 15.3601 17.8242 14.5512 18.1592C13.7424 18.4942 12.8755 18.6667 12 18.6667Z\",\n fill: \"#F02532\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.9995 13.3798C11.7696 13.3798 11.5492 13.2885 11.3867 13.126C11.2241 12.9634 11.1328 12.743 11.1328 12.5132V8.51315C11.1328 8.2833 11.2241 8.06286 11.3867 7.90033C11.5492 7.73779 11.7696 7.64648 11.9995 7.64648C12.2293 7.64648 12.4498 7.73779 12.6123 7.90033C12.7748 8.06286 12.8661 8.2833 12.8661 8.51315V12.5132C12.8661 12.743 12.7748 12.9634 12.6123 13.126C12.4498 13.2885 12.2293 13.3798 11.9995 13.3798Z\",\n fill: \"#F02532\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.9688 16.3467C12.521 16.3467 12.9688 15.899 12.9688 15.3467C12.9688 14.7944 12.521 14.3467 11.9688 14.3467C11.4165 14.3467 10.9688 14.7944 10.9688 15.3467C10.9688 15.899 11.4165 16.3467 11.9688 16.3467Z\",\n fill: \"#F02532\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_3034_56932\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgExclamation);\nexport default __webpack_public_path__ + \"static/media/exclamation.0b39026d.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport style from './FormInput.module.scss';\r\nimport InputPhone from 'containers/App/components/InputPhone';\r\nimport './phone.scss';\r\nimport NumberInput from 'containers/App/components/NumberInput/NumberInput';\r\nimport { ReactComponent as Icon } from 'assets/images/general/exclamation.svg';\r\n\r\nFormInput.propTypes = {\r\n label: PropTypes.string,\r\n desc: PropTypes.string,\r\n name: PropTypes.string,\r\n type: PropTypes.string.isRequired,\r\n value: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n error: PropTypes.bool,\r\n errorMsg: PropTypes.string,\r\n placeHolder: PropTypes.string,\r\n maxLength: PropTypes.number\r\n};\r\n\r\nfunction FormInput({\r\n label,\r\n desc,\r\n type,\r\n value,\r\n onChange,\r\n name,\r\n error,\r\n errorMsg,\r\n placeHolder,\r\n maxLength\r\n}) {\r\n return (\r\n <div className={!desc ? style.FormInput : style.FormInput + ' ' + style.FormInputDesc} data-name={name}>\r\n <label\r\n className={style.FormInput__label}>\r\n {label}\r\n </label>\r\n {desc &&\r\n <div\r\n className={style.FormInput__desc}>\r\n {desc}\r\n </div>\r\n }\r\n {type === 'phone'\r\n ? <InputPhone\r\n countryCodeEditable={false}\r\n disableDropdown={true}\r\n containerClass={!error ? 'FormInputPhone' : 'FormInputPhone FormInputPhone__error'}\r\n country={'sg'}\r\n phone={value}\r\n setPhone={e => onChange({ target: { name, value: e } })}\r\n onlyCountries={['sg']}/>\r\n : type === 'number'\r\n ? <NumberInput\r\n maxLength={maxLength}\r\n name={name}\r\n placeholder={placeHolder || 'Type your answer here'}\r\n className={!error ? style.FormInput__input : style.FormInput__input + ' ' + style.FormInput__inputError}\r\n value={value}\r\n onChange={e => onChange({ target: { name, value: e } })}/>\r\n : <input\r\n name={name}\r\n placeholder={placeHolder || 'Type your answer here'}\r\n type={type}\r\n className={!error ? style.FormInput__input : style.FormInput__input + ' ' + style.FormInput__inputError}\r\n value={value}\r\n onChange={onChange} />\r\n }\r\n {error &&\r\n <div className={style.FormInput__error}>\r\n <Icon />\r\n {errorMsg}\r\n </div>\r\n }\r\n </div>\r\n );\r\n}\r\n\r\nexport default FormInput;\r\n","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgUploadedFile(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 24,\n viewBox: \"0 0 22 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.0669 19.5V4.7334C19.0669 3.07654 17.7238 1.7334 16.0669 1.7334H9.53359L2.93359 8.3334V19.2667C2.93359 20.9236 4.27674 22.2667 5.93359 22.2667H17.5\",\n stroke: \"#333F4E\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.93359 8.3334H7.5336C8.63817 8.3334 9.53359 7.43797 9.53359 6.3334V1.7334\",\n stroke: \"#333F4E\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUploadedFile);\nexport default __webpack_public_path__ + \"static/media/uploadedFile.d097ca23.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPinkDelete(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 11,\n height: 12,\n viewBox: \"0 0 11 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.90346 4.99927L1.89809 0.993896L0.89209 1.9999L4.90024 6.00272L0.897949 10.0059L1.89795 11.0059L5.90091 7.00205L9.90909 11.0049L10.9091 10.0049L6.90346 5.99927L10.9079 1.9939L9.90795 0.993896L5.90346 4.99927Z\",\n fill: \"#5900db\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPinkDelete);\nexport default __webpack_public_path__ + \"static/media/pinkDelete.814ed420.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Spin } from 'antd';\r\nimport 'react-dropzone-uploader/dist/styles.css';\r\nimport Dropzone from 'react-dropzone-uploader';\r\n\r\nimport { uploadFile } from 'api/upload';\r\n\r\nimport UploadFile from 'assets/images/upload-icon.png';\r\nimport { ReactComponent as Icon } from 'assets/images/general/exclamation.svg';\r\nimport { ReactComponent as UploadedIcon } from 'assets/images/general/uploadedFile.svg';\r\nimport { ReactComponent as DeleteIcon } from 'assets/images/general/pinkDelete.svg';\r\n\r\nimport './uploader.scss';\r\n\r\nUploader.propTypes = {\r\n label: PropTypes.string,\r\n name: PropTypes.string,\r\n values: PropTypes.array,\r\n error: PropTypes.bool,\r\n errorMsg: PropTypes.string,\r\n multiple: PropTypes.bool,\r\n maxFiles: PropTypes.number,\r\n handleUploadedFile: PropTypes.func,\r\n maxSizeBytes: PropTypes.string,\r\n accept: PropTypes.string,\r\n handleErrorMsg: PropTypes.func,\r\n text: PropTypes.string\r\n};\r\n\r\nfunction Uploader({\r\n label,\r\n name,\r\n values,\r\n error,\r\n errorMsg,\r\n multiple,\r\n maxFiles,\r\n handleUploadedFile,\r\n maxSizeBytes,\r\n accept,\r\n handleErrorMsg,\r\n text\r\n}) {\r\n const [show, setShow] = useState(true);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const handleSubmit = async ({ file }) => {\r\n setLoading(true);\r\n\r\n const body = new FormData();\r\n\r\n body.append('file', file);\r\n\r\n try {\r\n const url = await uploadFile(body);\r\n\r\n handleUploadedFile(name, url, 'add');\r\n } catch (error) {\r\n //\r\n }\r\n\r\n setLoading(false);\r\n };\r\n\r\n // called every time a file's `status` changes\r\n const handleChangeStatus = ({ file, remove, meta }, status) => {\r\n if (meta.status === 'rejected_file_type') {\r\n handleErrorMsg('File type is wrong', name);\r\n\r\n return;\r\n }\r\n\r\n if (meta.status === 'error_file_size') {\r\n const mb = parseFloat((maxSizeBytes / 1000000));\r\n\r\n handleErrorMsg('Max file size is : ' + mb + ' mb', name);\r\n\r\n return;\r\n }\r\n\r\n if (status === 'done') {\r\n handleSubmit({ file });\r\n remove();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (values.length < maxFiles) {\r\n setShow(true);\r\n } else {\r\n setShow(false);\r\n }\r\n }, [maxFiles, values.length]);\r\n\r\n return (\r\n <div className={'uploader'} data-name={name}>\r\n {label &&\r\n <div className={'uploader__label'}>{label}</div>\r\n }\r\n <div className={'uploader__itemsFlex'}>\r\n {text &&\r\n <div className={'uploader__col'}>\r\n <div className={'uploader__text'}>\r\n {text}\r\n </div>\r\n </div>\r\n }\r\n <div className={'uploader__col'}>\r\n <div className={'uploader__items'}>\r\n {values.map((url, i) =>\r\n <div className={'uploader__item'} key={i}>\r\n <UploadedIcon className={'uploader__uploadedIcon'}/>\r\n <div className={'uploader__uploadedLabel'}>File {i + 1}</div>\r\n <DeleteIcon\r\n className={'uploader__remove'}\r\n onClick={() => handleUploadedFile(name, url, 'remove')}/>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n <div className={'uploader__box'}>\r\n <Dropzone\r\n maxSizeBytes={maxSizeBytes}\r\n canRemove={true}\r\n inputContent={<div key='1' className={'uploader__desc'}>\r\n {loading\r\n ? <div className={'uploader__loading'}>\r\n <Spin size='large' />\r\n <div className={'uploader__loadingText'}>\r\n Uploading please wait ...\r\n </div>\r\n </div>\r\n : <>\r\n <div className={'uploader__icon'}><img src={UploadFile} alt='' height={64} /></div>\r\n <div className={'uploader__detail'}>Choose file or drag here</div>\r\n </>\r\n }\r\n </div>}\r\n disabled={!show || loading}\r\n classNames='uploader'\r\n multiple={multiple}\r\n maxFiles={maxFiles}\r\n autoUpload={true}\r\n // SubmitButtonComponent={item => {\r\n // return <div>\r\n // {show &&\r\n // <button\r\n // className='uploader__submit'\r\n // disabled={loading}\r\n // onClick={() => item.onSubmit(item)}>\r\n // {!loading\r\n // ? 'Press to Upload file(s) ...'\r\n // : <div className={'uploader__loading'}>\r\n // <ActivityIndicator />\r\n // <div className={'uploader__loadingText'}>\r\n // Uploading please wait ...\r\n // </div>\r\n // </div>\r\n // }\r\n // </button>\r\n // }\r\n // </div>;\r\n // }}\r\n onChangeStatus={handleChangeStatus}\r\n // onSubmit={handleSubmit}\r\n accept={accept || '*'}/>\r\n </div>\r\n {error &&\r\n <div className={'uploader__error'}>\r\n <Icon />\r\n {errorMsg}\r\n </div>\r\n }\r\n </div>\r\n );\r\n}\r\n\r\nexport default Uploader;\r\n","import { AUTH_API_URL } from 'config/constants';\r\nimport axios from 'axios';\r\n\r\nimport { notifType, notify } from 'utils/notifSender';\r\nimport { getAuthToken } from 'utils/helpers';\r\n\r\n/**\r\n * Get logged in user's profile data\r\n * @param {Object} data\r\n * @returns {Promise}\r\n */\r\nexport async function uploadFile(data) {\r\n const options = {\r\n method: 'POST',\r\n headers: {\r\n Authorization: 'Bearer ' + getAuthToken(),\r\n 'Content-Type': 'multipart/form-data',\r\n Accept: 'application/json'\r\n },\r\n url: AUTH_API_URL + '/upload/file',\r\n data\r\n };\r\n\r\n try {\r\n const { data } = await axios(options);\r\n\r\n return data;\r\n } catch (err) {\r\n notify('Sorry, can't upload this file.Please try again.', notifType.DANGER);\r\n\r\n throw new Error(err);\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Button from 'containers/App/components/Button/Button';\r\n\r\nimport style from './FormFooter.module.scss';\r\n\r\nFormFooter.propTypes = {\r\n prevLabel: PropTypes.string,\r\n prevClick: PropTypes.func,\r\n nextLabel: PropTypes.string,\r\n nextClick: PropTypes.func,\r\n loading: PropTypes.bool\r\n};\r\n\r\nfunction FormFooter({\r\n prevLabel,\r\n prevClick,\r\n nextLabel,\r\n nextClick,\r\n loading\r\n}) {\r\n return (\r\n <div className={style.FormFooter} >\r\n <div className={style.FormFooter__left}>\r\n {prevLabel &&\r\n <Button\r\n className='submit footerBtn'\r\n disabled={loading}\r\n title={prevLabel}\r\n onClick={prevClick}/>\r\n }\r\n </div>\r\n <div className={style.FormFooter__right}>\r\n <Button\r\n className='submit footerBtn'\r\n loading={loading}\r\n title={nextLabel}\r\n onClick={nextClick}/>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default FormFooter;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Title from '../title';\r\nimport FormInput from '../FormInput';\r\nimport Uploader from '../Uploader';\r\nimport FormFooter from '../FormFooter';\r\n\r\nimport style from './Form.module.scss';\r\n\r\nFirst.propTypes = {\r\n errors: PropTypes.object.isRequired,\r\n setErrors: PropTypes.func.isRequired,\r\n firstForm: PropTypes.object.isRequired,\r\n setFirstForm: PropTypes.func.isRequired,\r\n handleNextStep: PropTypes.func.isRequired,\r\n errorMsgs: PropTypes.object,\r\n handleUploadedFile: PropTypes.func,\r\n handleErrorMsg: PropTypes.func\r\n};\r\n\r\nfunction First({\r\n errors,\r\n setErrors,\r\n firstForm,\r\n setFirstForm,\r\n handleNextStep,\r\n errorMsgs,\r\n handleUploadedFile,\r\n handleErrorMsg\r\n}) {\r\n const handleChange = (e) => {\r\n const name = e.target.name;\r\n const value = e.target.value;\r\n\r\n setFirstForm(prev => ({ ...prev, [name]: value }));\r\n setErrors(prev => ({ ...prev, [name]: false }));\r\n };\r\n\r\n return (\r\n <div className={style.body}>\r\n <div>\r\n <Title />\r\n </div>\r\n <div>\r\n <div className={style.col}>\r\n <FormInput\r\n errorMsg={errorMsgs.legal_name}\r\n error={errors.legal_name}\r\n type='text'\r\n name={'legal_name'}\r\n value={firstForm.legal_name}\r\n onChange={handleChange}\r\n desc='We will be using those information to verify your identity.'\r\n placeHolder='Enter your full name'\r\n label='Full name as in your NRIC/FIN:' />\r\n </div>\r\n <div className={style.col}>\r\n <FormInput\r\n type='text'\r\n name={'alias_name'}\r\n errorMsg={errorMsgs.alias_name}\r\n error={errors.alias_name}\r\n value={firstForm.alias_name}\r\n onChange={handleChange}\r\n placeHolder='Enter your alias name'\r\n label='Alias name: ' />\r\n </div>\r\n <div className={style.col}>\r\n <FormInput\r\n type='text'\r\n name={'nric_fin'}\r\n errorMsg={errorMsgs.nric_fin}\r\n error={errors.nric_fin}\r\n value={firstForm.nric_fin}\r\n onChange={handleChange}\r\n placeHolder='Enter your NRIC/FIN Number'\r\n label='NRIC/FIN Number:' />\r\n </div>\r\n <div className={style.col}>\r\n <Uploader\r\n text='*Only PDF files are accepted'\r\n handleErrorMsg={handleErrorMsg}\r\n accept='application/pdf,application/vnd.ms-excel'\r\n maxSizeBytes={'3e+6'}\r\n multiple={false}\r\n maxFiles={1}\r\n label='Upload the front of your NRIC/FIN:'\r\n name='nric_fin_front_image'\r\n values={firstForm.nric_fin_front_image}\r\n error={errors.nric_fin_front_image}\r\n errorMsg={errorMsgs.nric_fin_front_image}\r\n handleUploadedFile={handleUploadedFile}/>\r\n </div>\r\n <div className={style.col}>\r\n <Uploader\r\n text='*Only PDF files are accepted'\r\n handleErrorMsg={handleErrorMsg}\r\n accept='application/pdf,application/vnd.ms-excel'\r\n maxSizeBytes={'3e+6'}\r\n multiple={false}\r\n maxFiles={1}\r\n label='Upload the back of your NRIC/FIN:'\r\n name='nric_fin_back_image'\r\n values={firstForm.nric_fin_back_image}\r\n error={errors.nric_fin_back_image}\r\n errorMsg={errorMsgs.nric_fin_back_image}\r\n handleUploadedFile={handleUploadedFile}/>\r\n </div>\r\n <div className={style.col}>\r\n <FormFooter\r\n prevLabel=''\r\n nextLabel='Next'\r\n nextClick={handleNextStep}/>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default First;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './Selector.scss';\r\nimport Select from 'react-select';\r\nimport { ReactComponent as Icon } from 'assets/images/general/exclamation.svg';\r\n\r\nFormSelcetion.propTypes = {\r\n options: PropTypes.array.isRequired,\r\n defaultValue: PropTypes.object,\r\n classNamePrefix: PropTypes.string,\r\n onChange: PropTypes.func,\r\n value: PropTypes.object,\r\n label: PropTypes.string,\r\n name: PropTypes.string,\r\n error: PropTypes.bool,\r\n errorMsg: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n isSearchable: PropTypes.bool\r\n};\r\n\r\nfunction FormSelcetion({\r\n options,\r\n defaultValue,\r\n classNamePrefix,\r\n onChange,\r\n value,\r\n label,\r\n name,\r\n error,\r\n errorMsg,\r\n isSearchable,\r\n placeholder\r\n}) {\r\n return (\r\n <div className={!error ? 'selection' : 'selection--error'} data-name={name}>\r\n {label && <div className='selection__label'>{label}</div>}\r\n <Select\r\n placeholder={placeholder || 'Select an option'}\r\n defaultValue={defaultValue}\r\n classNamePrefix={classNamePrefix || 'select'}\r\n isSearchable={isSearchable}\r\n value={value}\r\n onChange={e => onChange({ target: { name, value: e.value } })}\r\n options={options}/>\r\n {error &&\r\n <div className='selection__error'>\r\n <Icon />\r\n {errorMsg}</div>\r\n }\r\n </div>\r\n );\r\n}\r\n\r\nexport default FormSelcetion;\r\n","export const gender = [\r\n { label: 'FEMALE', value: 'FEMALE' },\r\n { label: 'MALE', value: 'MALE' },\r\n { label: 'UNKNOWN', value: 'UNKNOWN' }\r\n];\r\n\r\nexport const martialStatus = [\r\n { label: 'SINGLE', value: 'SINGLE' },\r\n { label: 'MARRIED', value: 'MARRIED' },\r\n { label: 'WIDOWED', value: 'WIDOWED' },\r\n { label: 'DIVORCED', value: 'DIVORCED' }\r\n];\r\n\r\nexport const ethnicity = [\r\n { label: 'ANGLO BURMESE', value: 'ANGLO BURMESE' },\r\n { label: 'ANGLO CHINESE', value: 'ANGLO CHINESE' },\r\n { label: 'AMERINDIAN', value: 'AMERINDIAN' },\r\n { label: 'AFRICAN', value: 'AFRICAN' },\r\n { label: 'AFGHAN', value: 'AFGHAN' },\r\n { label: 'ANGLO THAI', value: 'ANGLO THAI' },\r\n { label: 'ANGLO INDIAN', value: 'ANGLO INDIAN' },\r\n { label: 'ACHEHNESE', value: 'ACHEHNESE' },\r\n { label: 'ALBANIAN', value: 'ALBANIAN' },\r\n { label: 'ARMENIAN', value: 'ARMENIAN' },\r\n { label: 'ANNAMITE', value: 'ANNAMITE' },\r\n { label: 'AMBONESE', value: 'AMBONESE' },\r\n { label: 'ANGLO FILIPINO', value: 'ANGLO FILIPINO' },\r\n { label: 'ARAB', value: 'ARAB' },\r\n { label: 'ASSAMI', value: 'ASSAMI' },\r\n { label: 'AUSTRIAN', value: 'AUSTRIAN' },\r\n { label: 'AUSTRALIAN', value: 'AUSTRALIAN' },\r\n { label: 'ANGLO SAXON', value: 'ANGLO SAXON' },\r\n { label: 'ARYAN', value: 'ARYAN' },\r\n { label: 'AZERI', value: 'AZERI' },\r\n { label: 'BATAK', value: 'BATAK' },\r\n { label: 'BULGARIAN', value: 'BULGARIAN' },\r\n { label: 'BUTONESE', value: 'BUTONESE' },\r\n { label: 'BANGLADESHI', value: 'BANGLADESHI' },\r\n { label: 'BELGIAN', value: 'BELGIAN' },\r\n { label: 'BAJAU', value: 'BAJAU' },\r\n { label: 'BUGIS', value: 'BUGIS' },\r\n { label: 'BURGHER', value: 'BURGHER' },\r\n { label: 'BENGALI', value: 'BENGALI' },\r\n { label: 'BANJARESE', value: 'BANJARESE' },\r\n { label: 'BAMAR', value: 'BAMAR' },\r\n { label: 'BANGALA', value: 'BANGALA' },\r\n { label: 'BALINESE', value: 'BALINESE' },\r\n { label: 'BHUTANESE', value: 'BHUTANESE' },\r\n { label: 'BANTEN', value: 'BANTEN' },\r\n { label: 'BASQUE', value: 'BASQUE' },\r\n { label: 'BRAHMIN', value: 'BRAHMIN' },\r\n { label: 'BISAYA', value: 'BISAYA' },\r\n { label: 'BRITISH', value: 'BRITISH' },\r\n { label: 'BURMESE', value: 'BURMESE' },\r\n { label: 'BOSNIAK', value: 'BOSNIAK' },\r\n { label: 'BETAWI', value: 'BETAWI' },\r\n { label: 'BOYANESE', value: 'BOYANESE' },\r\n { label: 'BRAZILIAN', value: 'BRAZILIAN' },\r\n { label: 'CAUCASIAN', value: 'CAUCASIAN' },\r\n { label: 'CANADIAN', value: 'CANADIAN' },\r\n { label: 'CAPE COLOURED', value: 'CAPE COLOURED' },\r\n { label: 'CAMBODIAN', value: 'CAMBODIAN' },\r\n { label: 'CEYLONESE', value: 'CEYLONESE' },\r\n { label: 'CORNISH', value: 'CORNISH' },\r\n { label: 'CREOLE', value: 'CREOLE' },\r\n { label: 'SWISS', value: 'SWISS' },\r\n { label: 'CROAT', value: 'CROAT' },\r\n { label: 'CHAMORRO', value: 'CHAMORRO' },\r\n { label: 'CEYLON MOOR', value: 'CEYLON MOOR' },\r\n { label: 'CHINESE', value: 'CHINESE' },\r\n { label: 'COCOS', value: 'COCOS' },\r\n { label: 'CARIBBEAN', value: 'CARIBBEAN' },\r\n { label: 'CZECHOSLOVAK', value: 'CZECHOSLOVAK' },\r\n { label: 'CZECH', value: 'CZECH' },\r\n { label: 'DANE', value: 'DANE' },\r\n { label: 'DUTCH BURGHER', value: 'DUTCH BURGHER' },\r\n { label: 'BIDAYUH', value: 'BIDAYUH' },\r\n { label: 'DUSUN', value: 'DUSUN' },\r\n { label: 'DUTCH', value: 'DUTCH' },\r\n { label: 'DAYAK', value: 'DAYAK' },\r\n { label: 'ENGLISH', value: 'ENGLISH' },\r\n { label: 'EUROPEAN', value: 'EUROPEAN' },\r\n { label: 'SPANISH', value: 'SPANISH' },\r\n { label: 'ETHIOPIAN', value: 'ETHIOPIAN' },\r\n { label: 'EURASIAN', value: 'EURASIAN' },\r\n { label: 'EGYPTIAN', value: 'EGYPTIAN' },\r\n { label: 'FINN', value: 'FINN' },\r\n { label: 'FIJIAN', value: 'FIJIAN' },\r\n { label: 'FLEMISH', value: 'FLEMISH' },\r\n { label: 'FRENCH', value: 'FRENCH' },\r\n { label: 'GOAN', value: 'GOAN' },\r\n { label: 'GUJARATI', value: 'GUJARATI' },\r\n { label: 'GHANAIAN', value: 'GHANAIAN' },\r\n { label: 'GURKHA', value: 'GURKHA' },\r\n { label: 'GERMAN', value: 'GERMAN' },\r\n { label: 'GOANESE', value: 'GOANESE' },\r\n { label: 'GREEK', value: 'GREEK' },\r\n { label: 'HAITIAN', value: 'HAITIAN' },\r\n { label: 'HISPANIC', value: 'HISPANIC' },\r\n { label: 'HOLLANDER', value: 'HOLLANDER' },\r\n { label: 'HINDUSTANI', value: 'HINDUSTANI' },\r\n { label: 'HUNGARIAN', value: 'HUNGARIAN' },\r\n { label: 'HAWAIIAN', value: 'HAWAIIAN' },\r\n { label: 'IRANIAN', value: 'IRANIAN' },\r\n { label: 'IBAN', value: 'IBAN' },\r\n { label: 'INDONESIAN', value: 'INDONESIAN' },\r\n { label: 'ISOKO', value: 'ISOKO' },\r\n { label: 'ISRAELI', value: 'ISRAELI' },\r\n { label: 'INDIAN', value: 'INDIAN' },\r\n { label: 'IRAQI', value: 'IRAQI' },\r\n { label: 'IRISH', value: 'IRISH' },\r\n { label: 'ICELANDER', value: 'ICELANDER' },\r\n { label: 'ITALIAN', value: 'ITALIAN' },\r\n { label: 'INUIT', value: 'INUIT' },\r\n { label: 'JAVANESE', value: 'JAVANESE' },\r\n { label: 'JAKUN', value: 'JAKUN' },\r\n { label: 'JAMAICAN', value: 'JAMAICAN' },\r\n { label: 'JORDANIAN', value: 'JORDANIAN' },\r\n { label: 'JAPANESE', value: 'JAPANESE' },\r\n { label: 'JEW', value: 'JEW' },\r\n { label: 'KACHIN', value: 'KACHIN' },\r\n { label: 'KHASI', value: 'KHASI' },\r\n { label: 'KAYAH', value: 'KAYAH' },\r\n { label: 'KAYIN', value: 'KAYIN' },\r\n { label: 'KENYAN', value: 'KENYAN' },\r\n { label: 'KINH', value: 'KINH' },\r\n { label: 'KYRGYZ', value: 'KYRGYZ' },\r\n { label: 'KHMER', value: 'KHMER' },\r\n { label: 'KENYAH', value: 'KENYAH' },\r\n { label: 'KAZAKH', value: 'KAZAKH' },\r\n { label: 'KELABIT', value: 'KELABIT' },\r\n { label: 'KAMPUCHEAN', value: 'KAMPUCHEAN' },\r\n { label: 'KAREN', value: 'KAREN' },\r\n { label: 'KOREAN', value: 'KOREAN' },\r\n { label: 'KAYAN', value: 'KAYAN' },\r\n { label: 'KADAZAN', value: 'KADAZAN' },\r\n { label: 'LAO', value: 'LAO' },\r\n { label: 'LEBANESE', value: 'LEBANESE' },\r\n { label: 'LITHUANIAN', value: 'LITHUANIAN' },\r\n { label: 'SRI LANKAN', value: 'SRI LANKAN' },\r\n { label: 'LATIN', value: 'LATIN' },\r\n { label: 'LATVIAN', value: 'LATVIAN' },\r\n { label: 'LUXEMBOURGER', value: 'LUXEMBOURGER' },\r\n { label: 'LIBYAN', value: 'LIBYAN' },\r\n { label: 'MADURESE', value: 'MADURESE' },\r\n { label: 'MALABARI', value: 'MALABARI' },\r\n { label: 'MAGYARS', value: 'MAGYARS' },\r\n { label: 'MOLDAVIAN', value: 'MOLDAVIAN' },\r\n { label: 'MINANGKABAU', value: 'MINANGKABAU' },\r\n { label: 'MANX', value: 'MANX' },\r\n { label: 'MALAGASY', value: 'MALAGASY' },\r\n { label: 'MAHRATTA', value: 'MAHRATTA' },\r\n { label: 'MAORI', value: 'MAORI' },\r\n { label: 'MURUT', value: 'MURUT' },\r\n { label: 'MAKASARESE', value: 'MAKASARESE' },\r\n { label: 'MALDIVIAN', value: 'MALDIVIAN' },\r\n { label: 'MALAYALEE', value: 'MALAYALEE' },\r\n { label: 'MELANESIAN', value: 'MELANESIAN' },\r\n { label: 'MONGOLIAN', value: 'MONGOLIAN' },\r\n { label: 'MANIPURI', value: 'MANIPURI' },\r\n { label: 'MESTIZO', value: 'MESTIZO' },\r\n { label: 'MARATHI', value: 'MARATHI' },\r\n { label: 'METIS', value: 'METIS' },\r\n { label: 'MALTESE', value: 'MALTESE' },\r\n { label: 'MAURITIAN', value: 'MAURITIAN' },\r\n { label: 'MON', value: 'MON' },\r\n { label: 'MOROCCAN', value: 'MOROCCAN' },\r\n { label: 'MEXICAN', value: 'MEXICAN' },\r\n { label: 'MALAY', value: 'MALAY' },\r\n { label: 'MELANAU', value: 'MELANAU' },\r\n { label: 'NAGA', value: 'NAGA' },\r\n { label: 'NEGRO', value: 'NEGRO' },\r\n { label: 'NIGERIAN', value: 'NIGERIAN' },\r\n { label: 'NETHERLANDER', value: 'NETHERLANDER' },\r\n { label: 'NORWEGIAN', value: 'NORWEGIAN' },\r\n { label: 'NEPALESE', value: 'NEPALESE' },\r\n { label: 'NAURUAN', value: 'NAURUAN' },\r\n { label: 'NEWAR', value: 'NEWAR' },\r\n { label: 'NEW ZEALANDER', value: 'NEW ZEALANDER' },\r\n { label: 'PENAN', value: 'PENAN' },\r\n { label: 'PALESTINE', value: 'PALESTINE' },\r\n { label: 'POLISH', value: 'POLISH' },\r\n { label: 'PERSIAN', value: 'PERSIAN' },\r\n { label: 'FILIPINO', value: 'FILIPINO' },\r\n { label: 'PUNJABI', value: 'PUNJABI' },\r\n { label: 'PAKISTANI', value: 'PAKISTANI' },\r\n { label: 'POLE', value: 'POLE' },\r\n { label: 'PATHAN', value: 'PATHAN' },\r\n { label: 'PORTUGUESE', value: 'PORTUGUESE' },\r\n { label: 'PERUVIAN', value: 'PERUVIAN' },\r\n { label: 'PARSEE', value: 'PARSEE' },\r\n { label: 'PUNAN', value: 'PUNAN' },\r\n { label: 'POLYNESIAN', value: 'POLYNESIAN' },\r\n { label: 'RAJPUT', value: 'RAJPUT' },\r\n { label: 'RAKHINE', value: 'RAKHINE' },\r\n { label: 'ROMANIAN', value: 'ROMANIAN' },\r\n { label: 'RUSSIAN', value: 'RUSSIAN' },\r\n { label: 'SINO KADAZAN', value: 'SINO KADAZAN' },\r\n { label: 'SAMMARINESE', value: 'SAMMARINESE' },\r\n { label: 'SCOT', value: 'SCOT' },\r\n { label: 'SINDHI', value: 'SINDHI' },\r\n { label: 'SWEDE', value: 'SWEDE' },\r\n { label: 'SERBIA/MONTENGERIN', value: 'SERBIA/MONTENGERIN' },\r\n { label: 'SAMOAN', value: 'SAMOAN' },\r\n { label: 'SHAN', value: 'SHAN' },\r\n { label: 'SINHALESE', value: 'SINHALESE' },\r\n { label: 'SINO JAPANESE', value: 'SINO JAPANESE' },\r\n { label: 'SIKH', value: 'SIKH' },\r\n { label: 'SLOVAK', value: 'SLOVAK' },\r\n { label: 'SUMATRAN', value: 'SUMATRAN' },\r\n { label: 'SINO INDIAN', value: 'SINO INDIAN' },\r\n { label: 'SOMALI', value: 'SOMALI' },\r\n { label: 'SLAVIC', value: 'SLAVIC' },\r\n { label: 'SERANI', value: 'SERANI' },\r\n { label: 'SUNDANESE', value: 'SUNDANESE' },\r\n { label: 'SUDANESE', value: 'SUDANESE' },\r\n { label: 'SWEDISH', value: 'SWEDISH' },\r\n { label: 'SEYCHELLOIS', value: 'SEYCHELLOIS' },\r\n { label: 'TELUGU', value: 'TELUGU' },\r\n { label: 'THAI', value: 'THAI' },\r\n { label: 'TIBETAN', value: 'TIBETAN' },\r\n { label: 'TAJIK', value: 'TAJIK' },\r\n { label: 'TAMIL', value: 'TAMIL' },\r\n { label: 'TURKMEN', value: 'TURKMEN' },\r\n { label: 'TONGAN', value: 'TONGAN' },\r\n { label: 'TIMOR', value: 'TIMOR' },\r\n { label: 'TURK', value: 'TURK' },\r\n { label: 'UNKNOWN', value: 'UNKNOWN' },\r\n { label: 'UKRAINIAN', value: 'UKRAINIAN' },\r\n { label: 'AMERICAN', value: 'AMERICAN' },\r\n { label: 'UYGHUR', value: 'UYGHUR' },\r\n { label: 'UZBEK', value: 'UZBEK' },\r\n { label: 'VENEZUELAN', value: 'VENEZUELAN' },\r\n { label: 'VIETNAMESE', value: 'VIETNAMESE' },\r\n { label: 'WELSH', value: 'WELSH' },\r\n { label: 'OTHER INDONESIAN', value: 'OTHER INDONESIAN' },\r\n { label: 'OTHER EURASIAN', value: 'OTHER EURASIAN' },\r\n { label: 'OTHER INDIAN', value: 'OTHER INDIAN' },\r\n { label: 'OTHERS', value: 'OTHERS' },\r\n { label: 'YUGOSLAV', value: 'YUGOSLAV' },\r\n { label: 'ZIMBABWEAN', value: 'ZIMBABWEAN' }\r\n];\r\n\r\nexport const residency = [\r\n { label: 'Employment Pass', value: 'Employment Pass' },\r\n { label: 'Permanent Resident', value: 'Permanent Resident' },\r\n { label: 'Citizen', value: 'Citizen' },\r\n { label: 'Other', value: 'Other' }\r\n];\r\n\r\nexport const housing = [\r\n { label: 'DETACHED HOUSE', value: 'DETACHED HOUSE' },\r\n { label: 'SEMI-DETACHED HOUSE', value: 'SEMI-DETACHED HOUSE' },\r\n { label: 'TERRACE HOUSE', value: 'TERRACE HOUSE' },\r\n { label: 'CONDOMINIUM', value: 'CONDOMINIUM' },\r\n { label: 'EXECUTIVE CONDOMINIUM', value: 'EXECUTIVE CONDOMINIUM' },\r\n { label: 'APARTMENT', value: 'APARTMENT' }\r\n];\r\n\r\nexport const passType = [\r\n { label: 'Work Permit', value: 'Work Permit' },\r\n { label: 'S Pass', value: 'S Pass' },\r\n { label: 'Employment Pass', value: 'Employment Pass' },\r\n { label: 'Personalised Employment Pass', value: 'Personalised Employment Pass' },\r\n { label: 'Work Holiday Pass', value: 'Work Holiday Pass' },\r\n { label: 'Training Employment Pass', value: 'Training Employment Pass' },\r\n { label: 'EntrePass', value: 'EntrePass' },\r\n { label: 'Overseas Networks & Expertise Pass', value: 'Overseas Networks & Expertise Pass' },\r\n { label: 'Dependent Pass', value: 'Dependent Pass' },\r\n { label: 'Long Term Visit Pass', value: 'Long Term Visit Pass' },\r\n { label: 'Letter of Consent', value: 'Letter of Consent' },\r\n { label: 'Miscellaneous Work Pass', value: 'Miscellaneous Work Pass' },\r\n { label: 'Student Pass', value: 'Student Pass' },\r\n { label: 'Long Term Visit Pass +', value: 'Long Term Visit Pass +' },\r\n { label: 'Immigration Exemption Order', value: 'Immigration Exemption Order' }\r\n];\r\n\r\nexport const occupation = [\r\n { label: 'SINGAPORE TOURISM BOARD', value: 'SINGAPORE TOURISM BOARD' },\r\n { label: 'ECONOMIC DEVELOPMENT BOARD', value: 'ECONOMIC DEVELOPMENT BOARD' },\r\n { label: 'INFO-COMMUNICATIONS MEDIA DEVELOPMENT AUTHORITY', value: 'INFO-COMMUNICATIONS MEDIA DEVELOPMENT AUTHORITY' },\r\n { label: 'MINISTRY OF TRADE AND INDUSTRY', value: 'MINISTRY OF TRADE AND INDUSTRY' },\r\n { label: 'MINISTRY OF HOME AFFAIRS', value: 'MINISTRY OF HOME AFFAIRS' },\r\n { label: 'SINGAPORE PHARMACY COUNCIL', value: 'SINGAPORE PHARMACY COUNCIL' },\r\n { label: 'GOVERNMENT TECHNOLOGY AGENCY', value: 'GOVERNMENT TECHNOLOGY AGENCY' },\r\n { label: 'SINGAPORE POLICE FORCE', value: 'SINGAPORE POLICE FORCE' },\r\n { label: 'SINGAPORE LAND AUTHORITY', value: 'SINGAPORE LAND AUTHORITY' },\r\n { label: 'SINGAPORE LABOUR FOUNDATION', value: 'SINGAPORE LABOUR FOUNDATION' },\r\n { label: 'CIVIL AVIATION AUTHORITY OF SINGAPORE', value: 'CIVIL AVIATION AUTHORITY OF SINGAPORE' },\r\n { label: 'TCM PRACTITIONERS BOARD', value: 'TCM PRACTITIONERS BOARD' },\r\n { label: 'SINGAPORE DENTAL COUNCIL', value: 'SINGAPORE DENTAL COUNCIL' },\r\n { label: 'BOARD OF ARCHITECTS', value: 'BOARD OF ARCHITECTS' },\r\n { label: 'HEALTH SCIENCES AUTHORITY', value: 'HEALTH SCIENCES AUTHORITY' },\r\n { label: 'ENERGY MARKET AUTHORITY', value: 'ENERGY MARKET AUTHORITY' },\r\n { label: 'LAND SURVEYORS BOARD', value: 'LAND SURVEYORS BOARD' },\r\n { label: 'DEFENCE SCIENCE AND TECHNOLOGY AGENCY', value: 'DEFENCE SCIENCE AND TECHNOLOGY AGENCY' },\r\n { label: 'COUNCIL FOR ESTATE AGENCIES', value: 'COUNCIL FOR ESTATE AGENCIES' },\r\n { label: 'MINISTRY OF LAW', value: 'MINISTRY OF LAW' },\r\n { label: 'BUILDING AND CONSTRUCTION AUTHORITY', value: 'BUILDING AND CONSTRUCTION AUTHORITY' },\r\n { label: 'PUBLIC SERVICE COMMISSION', value: 'PUBLIC SERVICE COMMISSION' },\r\n { label: 'THE CABINET', value: 'THE CABINET' },\r\n { label: 'MINISTRY OF CULTURE, COMMUNITY AND YOUTH', value: 'MINISTRY OF CULTURE, COMMUNITY AND YOUTH' },\r\n { label: 'SINGAPORE MEDICAL COUNCIL', value: 'SINGAPORE MEDICAL COUNCIL' },\r\n { label: 'INDUSTRIAL ARBITRATION COURT', value: 'INDUSTRIAL ARBITRATION COURT' },\r\n { label: 'AGRI-FOOD AND VETERINARY AUTHORITY OF SINGAPORE', value: 'AGRI-FOOD AND VETERINARY AUTHORITY OF SINGAPORE' },\r\n { label: 'JUDICIARY, SUPREME COURT', value: 'JUDICIARY, SUPREME COURT' },\r\n { label: 'CASINO REGULATORY AUTHORITY OF SINGAPORE', value: 'CASINO REGULATORY AUTHORITY OF SINGAPORE' },\r\n { label: 'SINGAPORE ACCOUNTANCY COMMISSION', value: 'SINGAPORE ACCOUNTANCY COMMISSION' },\r\n { label: 'REGISTRY OF SOCIETIES', value: 'REGISTRY OF SOCIETIES' },\r\n { label: 'JTC CORPORATION', value: 'JTC CORPORATION' },\r\n { label: 'LAND TRANSPORT AUTHORITY', value: 'LAND TRANSPORT AUTHORITY' },\r\n { label: 'INLAND REVENUE AUTHORITY OF SINGAPORE', value: 'INLAND REVENUE AUTHORITY OF SINGAPORE' },\r\n { label: 'AGENCY FOR SCIENCE, TECHNOLOGY AND RESEARCH', value: 'AGENCY FOR SCIENCE, TECHNOLOGY AND RESEARCH' },\r\n { label: 'HEALTH PROMOTION BOARD', value: 'HEALTH PROMOTION BOARD' },\r\n { label: 'NATIONAL PARKS BOARD', value: 'NATIONAL PARKS BOARD' },\r\n { label: 'SPORT SINGAPORE', value: 'SPORT SINGAPORE' },\r\n { label: 'MONETARY AUTHORITY OF SINGAPORE', value: 'MONETARY AUTHORITY OF SINGAPORE' },\r\n { label: 'PUBLIC TRANSPORT COUNCIL', value: 'PUBLIC TRANSPORT COUNCIL' },\r\n { label: 'REPUBLIC POLYTECHNIC', value: 'REPUBLIC POLYTECHNIC' },\r\n { label: 'HOTELS LICENSING BOARD', value: 'HOTELS LICENSING BOARD' },\r\n { label: 'ISTANA', value: 'ISTANA' },\r\n { label: 'MINISTRY OF NATIONAL DEVELOPMENT', value: 'MINISTRY OF NATIONAL DEVELOPMENT' },\r\n { label: 'NGEE ANN POLYTECHNIC', value: 'NGEE ANN POLYTECHNIC' },\r\n { label: 'SINGAPORE CORPORATION OF REHABILITATIVE ENTERPRISES', value: 'SINGAPORE CORPORATION OF REHABILITATIVE ENTERPRISES' },\r\n { label: 'NATIONAL LIBRARY BOARD', value: 'NATIONAL LIBRARY BOARD' },\r\n { label: 'URBAN REDEVELOPMENT AUTHORITY', value: 'URBAN REDEVELOPMENT AUTHORITY' },\r\n { label: 'SINGAPORE NURSING BOARD', value: 'SINGAPORE NURSING BOARD' },\r\n { label: 'HOUSING & DEVELOPMENT BOARD', value: 'HOUSING & DEVELOPMENT BOARD' },\r\n { label: 'SMART NATION AND DIGITAL GOVERNMENT', value: 'SMART NATION AND DIGITAL GOVERNMENT' },\r\n { label: 'MINISTRY OF FOREIGN AFFAIRS', value: 'MINISTRY OF FOREIGN AFFAIRS' },\r\n { label: 'NATIONAL HERITAGE BOARD', value: 'NATIONAL HERITAGE BOARD' },\r\n { label: 'PARLIAMENT OF SINGAPORE', value: 'PARLIAMENT OF SINGAPORE' },\r\n { label: 'ACCOUNTING AND CORPORATE REGULATORY AUTHORITY', value: 'ACCOUNTING AND CORPORATE REGULATORY AUTHORITY' },\r\n { label: 'COMPETITION AND CONSUMER COMMISSION OF SINGAPORE', value: 'COMPETITION AND CONSUMER COMMISSION OF SINGAPORE' },\r\n { label: 'SINGAPORE FOOD AGENCY', value: 'SINGAPORE FOOD AGENCY' },\r\n { label: 'CIVIL SERVICE COLLEGE', value: 'CIVIL SERVICE COLLEGE' },\r\n { label: 'SINGAPORE EXAMINATIONS AND ASSESSMENT BOARD', value: 'SINGAPORE EXAMINATIONS AND ASSESSMENT BOARD' },\r\n { label: 'MINISTRY OF THE ENVIRONMENT AND WATER RESOURCES', value: 'MINISTRY OF THE ENVIRONMENT AND WATER RESOURCES' },\r\n { label: 'ENTERPRISE SINGAPORE', value: 'ENTERPRISE SINGAPORE' },\r\n { label: 'TOTE BOARD', value: 'TOTE BOARD' },\r\n { label: 'PUB, Singapore\\'s National Water Agency', value: 'PUB, Singapore\\'s National Water Agency' },\r\n { label: 'JUDICIARY, STATE COURTS', value: 'JUDICIARY, STATE COURTS' },\r\n { label: 'ATTORNEY-GENERAL\\'S CHAMBERS', value: 'ATTORNEY-GENERAL\\'S CHAMBERS' },\r\n { label: 'SINGAPORE POLYTECHNIC', value: 'SINGAPORE POLYTECHNIC' },\r\n { label: 'MINISTRY OF SOCIAL AND FAMILY DEVELOPMENT', value: 'MINISTRY OF SOCIAL AND FAMILY DEVELOPMENT' },\r\n { label: 'MINISTRY OF EDUCATION', value: 'MINISTRY OF EDUCATION' },\r\n { label: 'NANYANG POLYTECHNIC', value: 'NANYANG POLYTECHNIC' },\r\n { label: 'MINISTRY OF FINANCE', value: 'MINISTRY OF FINANCE' },\r\n { label: 'ISEAS-YUSOF ISHAK INSTITUTE', value: 'ISEAS-YUSOF ISHAK INSTITUTE' },\r\n { label: 'SKILLSFUTURE SINGAPORE', value: 'SKILLSFUTURE SINGAPORE' },\r\n { label: 'MINISTRY OF HEALTH', value: 'MINISTRY OF HEALTH' },\r\n { label: 'AUDITOR-GENERAL\\'S OFFICE', value: 'AUDITOR-GENERAL\\'S OFFICE' },\r\n { label: 'INTELLECTUAL PROPERTY OFFICE OF SINGAPORE', value: 'INTELLECTUAL PROPERTY OFFICE OF SINGAPORE' },\r\n { label: 'MINISTRY OF MANPOWER', value: 'MINISTRY OF MANPOWER' },\r\n { label: 'WORKFORCE SINGAPORE', value: 'WORKFORCE SINGAPORE' },\r\n { label: 'NATIONAL ENVIRONMENT AGENCY', value: 'NATIONAL ENVIRONMENT AGENCY' },\r\n { label: 'PROFESSIONAL ENGINEERS BOARD, SINGAPORE', value: 'PROFESSIONAL ENGINEERS BOARD, SINGAPORE' },\r\n { label: 'NATIONAL ARTS COUNCIL', value: 'NATIONAL ARTS COUNCIL' },\r\n { label: 'NATIONAL COUNCIL OF SOCIAL SERVICE', value: 'NATIONAL COUNCIL OF SOCIAL SERVICE' },\r\n { label: 'PEOPLE\\'S ASSOCIATION', value: 'PEOPLE\\'S ASSOCIATION' },\r\n { label: 'MINISTRY OF COMMUNICATIONS AND INFORMATION', value: 'MINISTRY OF COMMUNICATIONS AND INFORMATION' },\r\n { label: 'MINISTRY OF TRANSPORT', value: 'MINISTRY OF TRANSPORT' },\r\n { label: 'PRIME MINISTER\\'S OFFICE', value: 'PRIME MINISTER\\'S OFFICE' },\r\n { label: 'SCIENCE CENTRE BOARD', value: 'SCIENCE CENTRE BOARD' },\r\n { label: 'CENTRAL PROVIDENT FUND BOARD', value: 'CENTRAL PROVIDENT FUND BOARD' },\r\n { label: 'MAJLIS UGAMA ISLAM, SINGAPURA', value: 'MAJLIS UGAMA ISLAM, SINGAPURA' },\r\n { label: 'JUDICIARY, FAMILY JUSTICE COURTS', value: 'JUDICIARY, FAMILY JUSTICE COURTS' },\r\n { label: 'INSTITUTE OF TECHNICAL EDUCATION', value: 'INSTITUTE OF TECHNICAL EDUCATION' },\r\n { label: 'TEMASEK POLYTECHNIC', value: 'TEMASEK POLYTECHNIC' },\r\n { label: 'MINISTRY OF DEFENCE', value: 'MINISTRY OF DEFENCE' },\r\n { label: 'MARITIME AND PORT AUTHORITY OF SINGAPORE', value: 'MARITIME AND PORT AUTHORITY OF SINGAPORE' }\r\n];\r\n\r\nexport const incomeNoa = [\r\n { label: 'Less than $25,000', value: 'Less than $25,000' },\r\n { label: 'From $25,000 to $ 50,000', value: 'From $25,000 to $ 50,000' },\r\n { label: 'From $ 50,000 to $80,000', value: 'From $ 50,000 to $80,000' },\r\n { label: 'More than $80,000', value: 'More than $80,000' }\r\n];\r\n\r\nexport const employmentSector = [\r\n { label: 'Private', value: 'Private' },\r\n { label: 'Public', value: 'Public' },\r\n { label: 'Unknown', value: 'Unknown' }\r\n];\r\n\r\nexport const samplePostCode = [\r\n { label: '18906', value: '18906' },\r\n { label: '18907', value: '18907' },\r\n { label: '18910', value: '18910' },\r\n { label: '18915', value: '18915' },\r\n { label: '18916', value: '18916' },\r\n { label: '18925', value: '18925' },\r\n { label: '18926', value: '18926' },\r\n { label: '18927', value: '18927' },\r\n { label: '18928', value: '18928' },\r\n { label: '18929', value: '18929' },\r\n { label: '18930', value: '18930' },\r\n { label: '18935', value: '18935' },\r\n { label: '18936', value: '18936' },\r\n { label: '18937', value: '18937' },\r\n { label: '18940', value: '18940' },\r\n { label: '18946', value: '18946' },\r\n { label: '18947', value: '18947' },\r\n { label: '18948', value: '18948' },\r\n { label: '18951', value: '18951' },\r\n { label: '18953', value: '18953' },\r\n { label: '18955', value: '18955' },\r\n { label: '18956', value: '18956' },\r\n { label: '18957', value: '18957' },\r\n { label: '18958', value: '18958' },\r\n { label: '18959', value: '18959' },\r\n { label: '18960', value: '18960' },\r\n { label: '18961', value: '18961' },\r\n { label: '18962', value: '18962' },\r\n { label: '18965', value: '18965' },\r\n { label: '18969', value: '18969' },\r\n { label: '18971', value: '18971' },\r\n { label: '18972', value: '18972' },\r\n { label: '18973', value: '18973' },\r\n { label: '18974', value: '18974' },\r\n { label: '18978', value: '18978' },\r\n { label: '18979', value: '18979' },\r\n { label: '18980', value: '18980' },\r\n { label: '18981', value: '18981' },\r\n { label: '18982', value: '18982' }\r\n];\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport FormInput from '../FormInput';\r\nimport FormFooter from '../FormFooter';\r\nimport FormSelcetion from '../FormSelection';\r\nimport { gender, martialStatus } from 'screens/SingpassManualForm/options';\r\n\r\nimport style from './Form.module.scss';\r\n\r\nSecond.propTypes = {\r\n errors: PropTypes.object.isRequired,\r\n setErrors: PropTypes.func.isRequired,\r\n secondForm: PropTypes.object.isRequired,\r\n setSecondForm: PropTypes.func.isRequired,\r\n handleNextStep: PropTypes.func.isRequired,\r\n handlePrevStep: PropTypes.func.isRequired,\r\n errorMsgs: PropTypes.object\r\n};\r\n\r\nfunction Second({\r\n errors,\r\n setErrors,\r\n secondForm,\r\n setSecondForm,\r\n handleNextStep,\r\n handlePrevStep,\r\n errorMsgs\r\n}) {\r\n const handleChange = (e) => {\r\n const name = e.target.name;\r\n const value = e.target.value;\r\n\r\n setSecondForm(prev => ({ ...prev, [name]: value }));\r\n setErrors(prev => ({ ...prev, [name]: false }));\r\n };\r\n\r\n return (\r\n <div className={style.body}>\r\n <div>\r\n <div className={style.col}>\r\n <FormSelcetion\r\n name='sex'\r\n value={secondForm.sex ? ({ label: secondForm.sex, value: secondForm.sex }) : null}\r\n error={errors.sex}\r\n errorMsg={errorMsgs.sex}\r\n onChange={handleChange}\r\n options={gender}\r\n placeholder='Select an option'\r\n label='Gender:'/>\r\n </div>\r\n <div className={style.col}>\r\n <FormSelcetion\r\n name='martial_status'\r\n value={secondForm.martial_status ? ({ label: secondForm.martial_status, value: secondForm.martial_status }) : null}\r\n errorMsg={errorMsgs.martial_status}\r\n error={errors.martial_status}\r\n onChange={handleChange}\r\n options={martialStatus}\r\n placeholder='Select an option'\r\n label='Marital status:'/>\r\n </div>\r\n <div className={style.col}>\r\n <FormInput\r\n type='text'\r\n name={'maried_name'}\r\n errorMsg={errorMsgs.maried_name}\r\n value={secondForm.maried_name}\r\n error={errors.maried_name}\r\n onChange={handleChange}\r\n label='What is your marital name?' />\r\n </div>\r\n <div className={style.col}>\r\n <FormInput\r\n type='phone'\r\n name={'mobile'}\r\n errorMsg={errorMsgs.mobile}\r\n error={errors.mobile}\r\n value={secondForm.mobile}\r\n onChange={handleChange}\r\n label='Mobile number:' />\r\n </div>\r\n <div className={style.colEmail}>\r\n <FormInput\r\n type='email'\r\n name={'email_address'}\r\n errorMsg={errorMsgs.email_address}\r\n error={errors.email_address}\r\n value={secondForm.email_address}\r\n onChange={handleChange}\r\n placeHolder='Enter your email address'\r\n label='Email address:' />\r\n </div>\r\n\r\n <div className={style.col}>\r\n <FormFooter\r\n prevLabel='Previous'\r\n nextLabel='Next'\r\n prevClick={handlePrevStep}\r\n nextClick={handleNextStep}/>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Second;\r\n","export const countryList = [\r\n { label: 'ARUBA', value: 'ARUBA' },\r\n { label: 'ANDORRA', value: 'ANDORRA' },\r\n { label: 'UNITED ARAB EMIRATES', value: 'UNITED ARAB EMIRATES' },\r\n { label: 'AFGHANISTAN', value: 'AFGHANISTAN' },\r\n { label: 'ANTIGUA', value: 'ANTIGUA' },\r\n { label: 'ANGUILLA', value: 'ANGUILLA' },\r\n { label: 'ALBANIA', value: 'ALBANIA' },\r\n { label: 'ARMENIA', value: 'ARMENIA' },\r\n { label: 'NETHERLANDS ANTILILLES', value: 'NETHERLANDS ANTILILLES' },\r\n { label: 'ANGOLA', value: 'ANGOLA' },\r\n { label: 'ARGENTINA', value: 'ARGENTINA' },\r\n { label: 'AMERICAN SAMOA', value: 'AMERICAN SAMOA' },\r\n { label: 'AUSTRIA', value: 'AUSTRIA' },\r\n { label: 'AUSTRALIA', value: 'AUSTRALIA' },\r\n { label: 'AZERBAIJAN', value: 'AZERBAIJAN' },\r\n { label: 'BOSNIA-HERZEGOVINA', value: 'BOSNIA-HERZEGOVINA' },\r\n { label: 'BARBADOS', value: 'BARBADOS' },\r\n { label: 'BANGLADESH', value: 'BANGLADESH' },\r\n { label: 'BELGIUM', value: 'BELGIUM' },\r\n { label: 'BURKINA FASO', value: 'BURKINA FASO' },\r\n { label: 'BULGARIA', value: 'BULGARIA' },\r\n { label: 'BAHRAIN', value: 'BAHRAIN' },\r\n { label: 'BURUNDI', value: 'BURUNDI' },\r\n { label: 'BENIN', value: 'BENIN' },\r\n { label: 'BELARUS', value: 'BELARUS' },\r\n { label: 'BERMUDA', value: 'BERMUDA' },\r\n { label: 'BRUNEI', value: 'BRUNEI' },\r\n { label: 'BOLIVIA', value: 'BOLIVIA' },\r\n { label: 'BRITISH ANTARCTIC TERRITORY', value: 'BRITISH ANTARCTIC TERRITORY' },\r\n { label: 'BRAZIL', value: 'BRAZIL' },\r\n { label: 'BAHAMAS', value: 'BAHAMAS' },\r\n { label: 'BHUTAN', value: 'BHUTAN' },\r\n { label: 'MYANMAR', value: 'MYANMAR' },\r\n { label: 'BOTSWANA', value: 'BOTSWANA' },\r\n { label: 'BELIZE', value: 'BELIZE' },\r\n { label: 'CANADA', value: 'CANADA' },\r\n { label: 'CROATIA', value: 'CROATIA' },\r\n { label: 'COCOS KEELING ISLAND', value: 'COCOS KEELING ISLAND' },\r\n { label: 'CHANNEL ISLANDS', value: 'CHANNEL ISLANDS' },\r\n { label: 'CENTRAL AFRICAN REPUBLIC', value: 'CENTRAL AFRICAN REPUBLIC' },\r\n { label: 'CONGO', value: 'CONGO' },\r\n { label: 'SWITZERLAND', value: 'SWITZERLAND' },\r\n { label: 'IVORY COAST', value: 'IVORY COAST' },\r\n { label: 'COOK ISLANDS', value: 'COOK ISLANDS' },\r\n { label: 'CHILE', value: 'CHILE' },\r\n { label: 'CAMEROON', value: 'CAMEROON' },\r\n { label: 'CHINA', value: 'CHINA' },\r\n { label: 'COLOMBIA', value: 'COLOMBIA' },\r\n { label: 'COSTA RICA', value: 'COSTA RICA' },\r\n { label: 'CANTON & ENDERBURY ISLANDS', value: 'CANTON & ENDERBURY ISLANDS' },\r\n { label: 'CUBA', value: 'CUBA' },\r\n { label: 'CAPE VERDE', value: 'CAPE VERDE' },\r\n { label: 'CHRISTMAS ISLAND', value: 'CHRISTMAS ISLAND' },\r\n { label: 'CYPRUS', value: 'CYPRUS' },\r\n { label: 'CZECH REPUBLIC', value: 'CZECH REPUBLIC' },\r\n { label: 'GERMANY', value: 'GERMANY' },\r\n { label: 'DJIBOUTI', value: 'DJIBOUTI' },\r\n { label: 'DENMARK', value: 'DENMARK' },\r\n { label: 'DOMINICA', value: 'DOMINICA' },\r\n { label: 'DOMINICAN REPUBLIC', value: 'DOMINICAN REPUBLIC' },\r\n { label: 'ALGERIA', value: 'ALGERIA' },\r\n { label: 'ECUADOR', value: 'ECUADOR' },\r\n { label: 'EGYPT', value: 'EGYPT' },\r\n { label: 'WESTERN SAHARA', value: 'WESTERN SAHARA' },\r\n { label: 'ESTONIA', value: 'ESTONIA' },\r\n { label: 'ERITREA', value: 'ERITREA' },\r\n { label: 'SPAIN', value: 'SPAIN' },\r\n { label: 'ETHIOPIA', value: 'ETHIOPIA' },\r\n { label: 'ESWATINI', value: 'ESWATINI' },\r\n { label: 'FINLAND', value: 'FINLAND' },\r\n { label: 'FIJI', value: 'FIJI' },\r\n { label: 'FALKLAND ISLANDS', value: 'FALKLAND ISLANDS' },\r\n { label: 'FAEROE ISLANDS', value: 'FAEROE ISLANDS' },\r\n { label: 'FRENCH SOUTHERN & ANTARCTIC TERRITORIES', value: 'FRENCH SOUTHERN & ANTARCTIC TERRITORIES' },\r\n { label: 'FRANCE', value: 'FRANCE' },\r\n { label: 'GABON', value: 'GABON' },\r\n { label: 'UNITED KINGDOM', value: 'UNITED KINGDOM' },\r\n { label: 'GRENADA', value: 'GRENADA' },\r\n { label: 'FRENCH GUIANA', value: 'FRENCH GUIANA' },\r\n { label: 'GHANA', value: 'GHANA' },\r\n { label: 'GIBRALTAR', value: 'GIBRALTAR' },\r\n { label: 'GUERNSEY', value: 'GUERNSEY' },\r\n { label: 'GREENLAND', value: 'GREENLAND' },\r\n { label: 'GAMBIA', value: 'GAMBIA' },\r\n { label: 'GUINEA', value: 'GUINEA' },\r\n { label: 'GEORGIA', value: 'GEORGIA' },\r\n { label: 'GUADELOUPE', value: 'GUADELOUPE' },\r\n { label: 'EQUATORIAL GUINEA', value: 'EQUATORIAL GUINEA' },\r\n { label: 'GREECE', value: 'GREECE' },\r\n { label: 'GUATEMALA', value: 'GUATEMALA' },\r\n { label: 'GUAM', value: 'GUAM' },\r\n { label: 'GUINEA-BISSAU', value: 'GUINEA-BISSAU' },\r\n { label: 'GUYANA', value: 'GUYANA' },\r\n { label: 'GAZA', value: 'GAZA' },\r\n { label: 'HONG KONG', value: 'HONG KONG' },\r\n { label: 'HEARD ISLAND & MCDONALD ISLANDS', value: 'HEARD ISLAND & MCDONALD ISLANDS' },\r\n { label: 'HONDURAS', value: 'HONDURAS' },\r\n { label: 'HONG KONG SAR', value: 'HONG KONG SAR' },\r\n { label: 'HAITI', value: 'HAITI' },\r\n { label: 'HUNGARY', value: 'HUNGARY' },\r\n { label: 'UPPER VOLTA', value: 'UPPER VOLTA' },\r\n { label: 'INDONESIA', value: 'INDONESIA' },\r\n { label: 'IRELAND', value: 'IRELAND' },\r\n { label: 'ISRAEL', value: 'ISRAEL' },\r\n { label: 'INDIA', value: 'INDIA' },\r\n { label: 'BRITISH INDIAN OCEAN TERRITORY', value: 'BRITISH INDIAN OCEAN TERRITORY' },\r\n { label: 'IRAQ', value: 'IRAQ' },\r\n { label: 'IRAN', value: 'IRAN' },\r\n { label: 'ICELAND', value: 'ICELAND' },\r\n { label: 'ITALY', value: 'ITALY' },\r\n { label: 'JAMAICA', value: 'JAMAICA' },\r\n { label: 'JORDAN', value: 'JORDAN' },\r\n { label: 'JAPAN', value: 'JAPAN' },\r\n { label: 'JOHNSTON ISLAND', value: 'JOHNSTON ISLAND' },\r\n { label: 'CAMBODIA', value: 'CAMBODIA' },\r\n { label: 'KENYA', value: 'KENYA' },\r\n { label: 'KIRGHIZIA', value: 'KIRGHIZIA' },\r\n { label: 'KIRIBATI', value: 'KIRIBATI' },\r\n { label: 'COMOROS', value: 'COMOROS' },\r\n { label: 'ST. KITTS-NEVIS', value: 'ST. KITTS-NEVIS' },\r\n { label: 'D.P.R. KOREA', value: 'D.P.R. KOREA' },\r\n { label: 'KOREA, SOUTH', value: 'KOREA, SOUTH' },\r\n { label: 'KYRGYZSTAN', value: 'KYRGYZSTAN' },\r\n { label: 'KOSOVO', value: 'KOSOVO' },\r\n { label: 'KUWAIT', value: 'KUWAIT' },\r\n { label: 'CAYMAN ISLANDS', value: 'CAYMAN ISLANDS' },\r\n { label: 'KAZAKHSTAN', value: 'KAZAKHSTAN' },\r\n { label: 'LAOS', value: 'LAOS' },\r\n { label: 'LEBANON', value: 'LEBANON' },\r\n { label: 'ST. LUCIA', value: 'ST. LUCIA' },\r\n { label: 'LITHUANIA', value: 'LITHUANIA' },\r\n { label: 'LIECHTENSTEIN', value: 'LIECHTENSTEIN' },\r\n { label: 'SRI LANKA', value: 'SRI LANKA' },\r\n { label: 'LIBERIA', value: 'LIBERIA' },\r\n { label: 'LESOTHO', value: 'LESOTHO' },\r\n { label: 'LUXEMBOURG', value: 'LUXEMBOURG' },\r\n { label: 'LATVIA', value: 'LATVIA' },\r\n { label: 'LIBYA', value: 'LIBYA' },\r\n { label: 'MOROCCO', value: 'MOROCCO' },\r\n { label: 'MACEDONIA', value: 'MACEDONIA' },\r\n { label: 'MONACO', value: 'MONACO' },\r\n { label: 'MOLDOVA', value: 'MOLDOVA' },\r\n { label: 'MAYOTTE', value: 'MAYOTTE' },\r\n { label: 'MACAO SAR', value: 'MACAO SAR' },\r\n { label: 'MADAGASCAR', value: 'MADAGASCAR' },\r\n { label: 'MARSHALL ISLANDS', value: 'MARSHALL ISLANDS' },\r\n { label: 'MIDWAY ISLANDS', value: 'MIDWAY ISLANDS' },\r\n { label: 'MONTENEGRO', value: 'MONTENEGRO' },\r\n { label: 'MALI', value: 'MALI' },\r\n { label: 'ISLE OF MAN', value: 'ISLE OF MAN' },\r\n { label: 'MONGOLIA', value: 'MONGOLIA' },\r\n { label: 'MACAO', value: 'MACAO' },\r\n { label: 'MARTINIQUE', value: 'MARTINIQUE' },\r\n { label: 'MAURITANIA', value: 'MAURITANIA' },\r\n { label: 'MONTSERRAT', value: 'MONTSERRAT' },\r\n { label: 'MALTA', value: 'MALTA' },\r\n { label: 'MAURITIUS', value: 'MAURITIUS' },\r\n { label: 'MALDIVES', value: 'MALDIVES' },\r\n { label: 'MALAWI', value: 'MALAWI' },\r\n { label: 'MEXICO', value: 'MEXICO' },\r\n { label: 'MALAYSIA', value: 'MALAYSIA' },\r\n { label: 'MOZAMBIQUE', value: 'MOZAMBIQUE' },\r\n { label: 'NAMIBIA', value: 'NAMIBIA' },\r\n { label: 'NEW CALEDONIA', value: 'NEW CALEDONIA' },\r\n { label: 'NIGER', value: 'NIGER' },\r\n { label: 'NORFOLK ISLAND', value: 'NORFOLK ISLAND' },\r\n { label: 'NIGERIA', value: 'NIGERIA' },\r\n { label: 'NICARAGUA', value: 'NICARAGUA' },\r\n { label: 'NETHERLANDS', value: 'NETHERLANDS' },\r\n { label: 'NORTH MACEDONIA', value: 'NORTH MACEDONIA' },\r\n { label: 'NORWAY', value: 'NORWAY' },\r\n { label: 'NEPAL', value: 'NEPAL' },\r\n { label: 'NAURU', value: 'NAURU' },\r\n { label: 'NIUE ISLAND', value: 'NIUE ISLAND' },\r\n { label: 'NEW ZEALAND', value: 'NEW ZEALAND' },\r\n { label: 'OMAN', value: 'OMAN' },\r\n { label: 'PANAMA', value: 'PANAMA' },\r\n { label: 'PALESTINE', value: 'PALESTINE' },\r\n { label: 'PACIFIC ISLAND TRUST TERRITORY', value: 'PACIFIC ISLAND TRUST TERRITORY' },\r\n { label: 'PERU', value: 'PERU' },\r\n { label: 'FRENCH POLYNESIA', value: 'FRENCH POLYNESIA' },\r\n { label: 'PAPUA NEW GUINEA', value: 'PAPUA NEW GUINEA' },\r\n { label: 'PHILIPPINES', value: 'PHILIPPINES' },\r\n { label: 'PAKISTAN', value: 'PAKISTAN' },\r\n { label: 'POLAND', value: 'POLAND' },\r\n { label: 'ST. PIERRE & MIQUELON', value: 'ST. PIERRE & MIQUELON' },\r\n { label: 'PITCAIRN ISLAND', value: 'PITCAIRN ISLAND' },\r\n { label: 'PUERTO RICO', value: 'PUERTO RICO' },\r\n { label: 'PORTUGAL', value: 'PORTUGAL' },\r\n { label: 'PALAU', value: 'PALAU' },\r\n { label: 'PARAGUAY', value: 'PARAGUAY' },\r\n { label: 'PANAMA CANAL ZONE', value: 'PANAMA CANAL ZONE' },\r\n { label: 'QATAR', value: 'QATAR' },\r\n { label: 'REUNION', value: 'REUNION' },\r\n { label: 'RUSSIA', value: 'RUSSIA' },\r\n { label: 'ROMANIA', value: 'ROMANIA' },\r\n { label: 'SERBIA', value: 'SERBIA' },\r\n { label: 'RWANDA', value: 'RWANDA' },\r\n { label: 'SAUDI ARABIA', value: 'SAUDI ARABIA' },\r\n { label: 'SOLOMON ISLANDS', value: 'SOLOMON ISLANDS' },\r\n { label: 'SEYCHELLES', value: 'SEYCHELLES' },\r\n { label: 'SUDAN', value: 'SUDAN' },\r\n { label: 'SWEDEN', value: 'SWEDEN' },\r\n { label: 'SERBIA/MONTENEGRO', value: 'SERBIA/MONTENEGRO' },\r\n { label: 'SINGAPORE', value: 'SINGAPORE' },\r\n { label: 'ST. HELENA', value: 'ST. HELENA' },\r\n { label: 'SLOVENIA', value: 'SLOVENIA' },\r\n { label: 'SLOVAK REPUBLIC', value: 'SLOVAK REPUBLIC' },\r\n { label: 'SIERRA LEONE', value: 'SIERRA LEONE' },\r\n { label: 'SAN MARINO', value: 'SAN MARINO' },\r\n { label: 'SENEGAL', value: 'SENEGAL' },\r\n { label: 'SOMALIA', value: 'SOMALIA' },\r\n { label: 'SURINAME', value: 'SURINAME' },\r\n { label: 'SAO TOME & PRINCIPE', value: 'SAO TOME & PRINCIPE' },\r\n { label: 'EL SALVADOR', value: 'EL SALVADOR' },\r\n { label: 'SOUTH SUDAN', value: 'SOUTH SUDAN' },\r\n { label: 'SYRIA', value: 'SYRIA' },\r\n { label: 'SWAZILAND', value: 'SWAZILAND' },\r\n { label: 'TURKS & CAICOS ISLANDS', value: 'TURKS & CAICOS ISLANDS' },\r\n { label: 'CHAD', value: 'CHAD' },\r\n { label: 'TIMOR', value: 'TIMOR' },\r\n { label: 'TOGO', value: 'TOGO' },\r\n { label: 'THAILAND', value: 'THAILAND' },\r\n { label: 'TAJIKISTAN', value: 'TAJIKISTAN' },\r\n { label: 'TOKELAU ISLANDS', value: 'TOKELAU ISLANDS' },\r\n { label: 'TURKMENISTAN', value: 'TURKMENISTAN' },\r\n { label: 'TUNISIA', value: 'TUNISIA' },\r\n { label: 'TONGA', value: 'TONGA' },\r\n { label: 'EAST TIMOR', value: 'EAST TIMOR' },\r\n { label: 'TURKEY', value: 'TURKEY' },\r\n { label: 'TRINIDAD & TOBAGO', value: 'TRINIDAD & TOBAGO' },\r\n { label: 'TUVALU', value: 'TUVALU' },\r\n { label: 'TAIWAN', value: 'TAIWAN' },\r\n { label: 'TANZANIA', value: 'TANZANIA' },\r\n { label: 'UGANDA', value: 'UGANDA' },\r\n { label: 'UNKNOWN', value: 'UNKNOWN' },\r\n { label: 'UKRAINE', value: 'UKRAINE' },\r\n { label: 'UNITED STATES', value: 'UNITED STATES' },\r\n { label: 'URUGUAY', value: 'URUGUAY' },\r\n { label: 'UZBEKISTAN', value: 'UZBEKISTAN' },\r\n { label: 'VATICAN CITY STATE', value: 'VATICAN CITY STATE' },\r\n { label: 'ST. VINCENT', value: 'ST. VINCENT' },\r\n { label: 'VENEZUELA', value: 'VENEZUELA' },\r\n { label: 'BRITISH VIRGIN ISLANDS', value: 'BRITISH VIRGIN ISLANDS' },\r\n { label: 'US VIRGIN ISLANDS', value: 'US VIRGIN ISLANDS' },\r\n { label: 'VIETNAM', value: 'VIETNAM' },\r\n { label: 'VANUATU', value: 'VANUATU' },\r\n { label: 'WALLIS AND FUTUNA', value: 'WALLIS AND FUTUNA' },\r\n { label: 'WAKE ISLAND', value: 'WAKE ISLAND' },\r\n { label: 'SAMOA', value: 'SAMOA' },\r\n { label: 'OTHERS', value: 'OTHERS' },\r\n { label: 'YEMEN', value: 'YEMEN' },\r\n { label: 'YUGOSLAVIA', value: 'YUGOSLAVIA' },\r\n { label: 'SOUTH AFRICA', value: 'SOUTH AFRICA' },\r\n { label: 'ZAMBIA', value: 'ZAMBIA' },\r\n { label: 'ZAIRE', value: 'ZAIRE' },\r\n { label: 'ZIMBABWE', value: 'ZIMBABWE' }\r\n];\r\n","import React from 'react';\r\nimport Picker from 'react-datepicker';\r\nimport PropTypes from 'prop-types';\r\nimport { ReactComponent as Icon } from 'assets/images/general/exclamation.svg';\r\n\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\nimport './DatePicker.scss';\r\n\r\nexport default function DatePicker({\r\n date,\r\n onChange,\r\n error,\r\n errorMsg,\r\n otherProps,\r\n label,\r\n classname,\r\n name\r\n}) {\r\n return (<div className={!classname ? 'date-picker' : `${classname} date-picker`} data-name={name}>\r\n {label && label !== '' &&\r\n <div className='date-picker__label'>\r\n {label}\r\n </div>\r\n }\r\n\r\n <div className={!error ? 'date-picker__picker' : 'date-picker__picker date-picker__picker--error'}>\r\n <Picker\r\n {...otherProps}\r\n selected={date}\r\n onChange={onChange} />\r\n </div>\r\n\r\n {error &&\r\n <div className='date-picker__error'>\r\n <Icon />\r\n {errorMsg}\r\n </div>\r\n }\r\n\r\n </div>);\r\n}\r\n\r\nDatePicker.propTypes = {\r\n date: PropTypes.any,\r\n onChange: PropTypes.func,\r\n error: PropTypes.bool,\r\n errorMsg: PropTypes.string,\r\n otherProps: PropTypes.object,\r\n label: PropTypes.string,\r\n classname: PropTypes.string,\r\n name: PropTypes.string\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport FormFooter from '../FormFooter';\r\nimport FormSelcetion from '../FormSelection';\r\nimport { countryList } from 'utils/countries';\r\nimport { ethnicity } from 'screens/SingpassManualForm/options';\r\nimport DatePicker from '../DatePicker';\r\n\r\nimport style from './Form.module.scss';\r\n\r\nThird.propTypes = {\r\n errors: PropTypes.object.isRequired,\r\n setErrors: PropTypes.func.isRequired,\r\n thirdForm: PropTypes.object.isRequired,\r\n setThirdForm: PropTypes.func.isRequired,\r\n handleNextStep: PropTypes.func.isRequired,\r\n handlePrevStep: PropTypes.func.isRequired,\r\n errorMsgs: PropTypes.object\r\n};\r\n\r\nfunction Third({\r\n errors,\r\n setErrors,\r\n thirdForm,\r\n setThirdForm,\r\n handleNextStep,\r\n handlePrevStep,\r\n errorMsgs\r\n}) {\r\n const handleChange = (e) => {\r\n const name = e.target.name;\r\n const value = e.target.value;\r\n\r\n setThirdForm(prev => ({ ...prev, [name]: value }));\r\n setErrors(prev => ({ ...prev, [name]: false }));\r\n };\r\n\r\n return (\r\n <div className={style.body}>\r\n <div>\r\n <div className={style.col}>\r\n <DatePicker\r\n date={thirdForm.dob ? new Date(thirdForm.dob) : ''}\r\n error={errors.dob}\r\n errorMsg={errorMsgs.dob}\r\n onChange={e => handleChange({ target: { name: 'dob', value: e } })}\r\n otherProps={{\r\n maxDate: new Date(),\r\n placeholderText: 'MM/DD/YYYY',\r\n showMonthDropdown: true,\r\n showYearDropdown: true,\r\n scrollableYearDropdown: true,\r\n yearDropdownItemNumber: 150\r\n }}\r\n label='Date of birth:'\r\n name={'dob'}/>\r\n\r\n {/* <FormInput\r\n type='date'\r\n name={'dob'}\r\n value={thirdForm.dob}\r\n error={errors.dob}\r\n errorMsg={errorMsgs.dob}\r\n onChange={handleChange}\r\n label='Date of birth:' /> */}\r\n </div>\r\n <div className={style.col}>\r\n <FormSelcetion\r\n isSearchable={true}\r\n name='birth_country'\r\n error={errors.birth_country}\r\n errorMsg={errorMsgs.birth_country}\r\n value={thirdForm.birth_country ? ({ label: thirdForm.birth_country, value: thirdForm.birth_country }) : null}\r\n onChange={handleChange}\r\n options={countryList}\r\n placeholder='Select an option'\r\n label='Country of birth:'/>\r\n </div>\r\n <div className={style.col}>\r\n <FormSelcetion\r\n isSearchable={true}\r\n name='ethnicity'\r\n error={errors.ethnicity}\r\n errorMsg={errorMsgs.ethnicity}\r\n value={thirdForm.ethnicity ? ({ label: thirdForm.ethnicity, value: thirdForm.ethnicity }) : null}\r\n onChange={handleChange}\r\n options={ethnicity}\r\n placeholder='Select an option'\r\n label='Race/Ethnicity:'/>\r\n </div>\r\n <div className={style.col}>\r\n <FormSelcetion\r\n isSearchable={true}\r\n name='secondary_race'\r\n error={errors.secondary_race}\r\n errorMsg={errorMsgs.secondary_race}\r\n value={thirdForm.secondary_race ? ({ label: thirdForm.secondary_race, value: thirdForm.secondary_race }) : null}\r\n onChange={handleChange}\r\n options={[\r\n { label: 'None', value: 'None' },\r\n ...ethnicity]}\r\n placeholder='Select an option'\r\n label='Secondary race:'/>\r\n </div>\r\n <div className={style.col}>\r\n <FormFooter\r\n prevLabel='Previous'\r\n nextLabel='Next'\r\n prevClick={handlePrevStep}\r\n nextClick={handleNextStep}/>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Third;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport FormInput from '../FormInput';\r\nimport FormFooter from '../FormFooter';\r\nimport FormSelcetion from '../FormSelection';\r\nimport { housing, passType, residency } from 'screens/SingpassManualForm/options';\r\n\r\nimport style from './Form.module.scss';\r\n\r\nFourth.propTypes = {\r\n errors: PropTypes.object.isRequired,\r\n setErrors: PropTypes.func.isRequired,\r\n fourthForm: PropTypes.object.isRequired,\r\n setFourthForm: PropTypes.func.isRequired,\r\n handleNextStep: PropTypes.func.isRequired,\r\n handlePrevStep: PropTypes.func.isRequired,\r\n errorMsgs: PropTypes.object\r\n};\r\n\r\nfunction Fourth({\r\n errors,\r\n setErrors,\r\n fourthForm,\r\n setFourthForm,\r\n handleNextStep,\r\n handlePrevStep,\r\n errorMsgs\r\n}) {\r\n const handleChange = (e) => {\r\n const name = e.target.name;\r\n const value = e.target.value;\r\n\r\n setFourthForm(prev => ({ ...prev, [name]: value }));\r\n setErrors(prev => ({ ...prev, [name]: false }));\r\n };\r\n\r\n return (\r\n <div className={style.body}>\r\n <div>\r\n <div className={style.col}>\r\n <FormSelcetion\r\n name='residency_status'\r\n error={errors.residency_status}\r\n errorMsg={errorMsgs.residency_status}\r\n value={fourthForm.residency_status ? ({ label: fourthForm.residency_status, value: fourthForm.residency_status }) : null}\r\n onChange={handleChange}\r\n options={residency}\r\n placeholder='Select an option'\r\n label='Singapore residency status:'/>\r\n </div>\r\n <div className={style.col}>\r\n {/* <FormSelcetion\r\n name='postal_code'\r\n error={errors.postal_code}\r\n errorMsg={errorMsgs.postal_code}\r\n value={fourthForm.postal_code ? ({ label: fourthForm.postal_code, value: fourthForm.postal_code }) : null}\r\n onChange={handleChange}\r\n options={samplePostCode}\r\n label='What is your postal code?'/> */}\r\n <FormInput\r\n maxLength={6}\r\n type='number'\r\n name={'postal_code'}\r\n error={errors.postal_code}\r\n errorMsg={errorMsgs.postal_code}\r\n value={fourthForm.postal_code}\r\n onChange={handleChange}\r\n placeHolder='Enter your postal code'\r\n label='Postal code:' />\r\n </div>\r\n <div className={style.col}>\r\n <FormInput\r\n type='text'\r\n name={'residential_address'}\r\n error={errors.residential_address}\r\n errorMsg={errorMsgs.residential_address}\r\n value={fourthForm.residential_address}\r\n onChange={handleChange}\r\n placeHolder='Enter your registered address'\r\n label='Registered full address:' />\r\n </div>\r\n <div className={style.col}>\r\n <FormSelcetion\r\n name='housing_type'\r\n error={errors.housing_type}\r\n errorMsg={errorMsgs.housing_type}\r\n value={fourthForm.housing_type ? ({ label: fourthForm.housing_type, value: fourthForm.housing_type }) : null}\r\n onChange={handleChange}\r\n options={housing}\r\n placeholder='Select an option'\r\n label='Housing type:'/>\r\n </div>\r\n <div className={style.col}>\r\n <FormSelcetion\r\n name='pass_type'\r\n error={errors.pass_type}\r\n errorMsg={errorMsgs.pass_type}\r\n value={fourthForm.pass_type ? ({ label: fourthForm.pass_type, value: fourthForm.pass_type }) : null}\r\n onChange={handleChange}\r\n options={passType}\r\n placeholder='Select an option'\r\n label='Pass type:'/>\r\n </div>\r\n {/* <div className={style.col}>\r\n <FormInput\r\n type='text'\r\n name='pass_status'\r\n error={errors.pass_status}\r\n errorMsg={errorMsgs.pass_status}\r\n value={fourthForm.pass_status}\r\n onChange={handleChange}\r\n label='What is your pass status?' />\r\n </div> */}\r\n\r\n <div className={style.col}>\r\n <FormInput\r\n type='date'\r\n name={'workpass_expiry_date'}\r\n errorMsg={errorMsgs.workpass_expiry_date}\r\n error={errors.workpass_expiry_date}\r\n value={fourthForm.workpass_expiry_date}\r\n onChange={handleChange}\r\n label='When is your pass expiring?' />\r\n </div>\r\n <div className={style.col}>\r\n <FormFooter\r\n prevLabel='Previous'\r\n nextLabel='Next'\r\n prevClick={handlePrevStep}\r\n nextClick={handleNextStep}/>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Fourth;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Modal } from 'reactstrap';\r\n\r\nimport FormFooter from '../FormFooter';\r\nimport FormSelcetion from '../FormSelection';\r\nimport Uploader from '../Uploader';\r\nimport FormMessage from '../FormMessage';\r\nimport FormInput from '../FormInput';\r\n\r\nimport style from './Form.module.scss';\r\n\r\nimport { employmentSector, incomeNoa, occupation } from 'screens/SingpassManualForm/options';\r\n\r\nFifth.propTypes = {\r\n errors: PropTypes.object.isRequired,\r\n setErrors: PropTypes.func.isRequired,\r\n fifthForm: PropTypes.object.isRequired,\r\n setFifthForm: PropTypes.func.isRequired,\r\n handleNextStep: PropTypes.func.isRequired,\r\n handlePrevStep: PropTypes.func.isRequired,\r\n errorMsgs: PropTypes.object,\r\n loading: PropTypes.bool,\r\n openModal: PropTypes.bool,\r\n handleUploadedFile: PropTypes.func,\r\n handleErrorMsg: PropTypes.func\r\n};\r\n\r\nfunction Fifth({\r\n errors,\r\n setErrors,\r\n fifthForm,\r\n setFifthForm,\r\n handleNextStep,\r\n handlePrevStep,\r\n errorMsgs,\r\n loading,\r\n openModal,\r\n handleUploadedFile,\r\n handleErrorMsg\r\n}) {\r\n const handleChange = (e) => {\r\n const name = e.target.name;\r\n const value = e.target.value;\r\n\r\n setFifthForm(prev => ({ ...prev, [name]: value }));\r\n setErrors(prev => ({ ...prev, [name]: false }));\r\n };\r\n\r\n return (\r\n <div className={style.body}>\r\n <div>\r\n <div className={style.col}>\r\n <FormSelcetion\r\n name='employment_sector'\r\n error={errors.employment_sector}\r\n errorMsg={errorMsgs.employment_sector}\r\n value={fifthForm.employment_sector ? ({ label: fifthForm.employment_sector, value: fifthForm.employment_sector }) : null}\r\n onChange={handleChange}\r\n options={employmentSector}\r\n label='What is your employment sector?'/>\r\n </div>\r\n <div className={style.col}>\r\n <FormSelcetion\r\n isSearchable={true}\r\n name='occupation'\r\n error={errors.occupation}\r\n errorMsg={errorMsgs.occupation}\r\n value={fifthForm.occupation ? ({ label: fifthForm.occupation, value: fifthForm.occupation }) : null}\r\n onChange={handleChange}\r\n options={occupation}\r\n label='What is your occupation? '/>\r\n </div>\r\n <div className={style.col}>\r\n <FormInput\r\n type='text'\r\n name={'employer_name'}\r\n error={errors.employer_name}\r\n errorMsg={errorMsgs.employer_name}\r\n value={fifthForm.employer_name}\r\n onChange={handleChange}\r\n label='What is the name of your employer?' />\r\n </div>\r\n <div className={style.col}>\r\n <FormInput\r\n type='number'\r\n name='income_noa'\r\n error={errors.income_noa}\r\n errorMsg={errorMsgs.income_noa}\r\n value={fifthForm.income_noa}\r\n onChange={handleChange}\r\n options={incomeNoa}\r\n label='What is your annual basic income?'/>\r\n\r\n </div>\r\n <div className={style.col}>\r\n <FormInput\r\n maxLength={4}\r\n placeHolder='YYYY'\r\n type='number'\r\n name={'assessed_year_income'}\r\n error={errors.assessed_year_income}\r\n errorMsg={errorMsgs.assessed_year_income}\r\n value={fifthForm.assessed_year_income}\r\n onChange={handleChange}\r\n label='What is your assessed year of assessable income?' />\r\n </div>\r\n <div className={style.col}>\r\n <Uploader\r\n text='*Only PDF files are accepted'\r\n handleErrorMsg={handleErrorMsg}\r\n accept='application/pdf,application/vnd.ms-excel'\r\n maxSizeBytes={'3e+6'}\r\n multiple={true}\r\n maxFiles={3}\r\n label='Please upload your latest 3 months salary crediting bank statement'\r\n name='last_3_slips'\r\n values={fifthForm.last_3_slips}\r\n error={errors.last_3_slips}\r\n errorMsg={errorMsgs.last_3_slips}\r\n handleUploadedFile={handleUploadedFile}/>\r\n </div>\r\n <div className={style.col}>\r\n <FormFooter\r\n loading={loading}\r\n prevLabel='Previous'\r\n nextLabel='Next'\r\n prevClick={handlePrevStep}\r\n nextClick={handleNextStep}/>\r\n </div>\r\n </div>\r\n\r\n <Modal\r\n className={style.modal}\r\n centered={true}\r\n isOpen={openModal}>\r\n <FormMessage />\r\n </Modal>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Fifth;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport FormHeader from './elements/FormHeader/FormHeader';\r\nimport First from './elements/forms/first';\r\nimport Second from './elements/forms/second';\r\nimport Third from './elements/forms/third';\r\nimport Fourth from './elements/forms/fourth';\r\nimport Fifth from './elements/forms/fifth';\r\n\r\nSingpassManualFormScreen.propTypes = {\r\n errors: PropTypes.object.isRequired,\r\n setErrors: PropTypes.func.isRequired,\r\n step: PropTypes.number.isRequired,\r\n firstForm: PropTypes.object.isRequired,\r\n setFirstForm: PropTypes.func.isRequired,\r\n secondForm: PropTypes.object.isRequired,\r\n setSecondForm: PropTypes.func.isRequired,\r\n thirdForm: PropTypes.object.isRequired,\r\n setThirdForm: PropTypes.func.isRequired,\r\n fourthForm: PropTypes.object.isRequired,\r\n setFourthForm: PropTypes.func.isRequired,\r\n fifthForm: PropTypes.object.isRequired,\r\n setFifthForm: PropTypes.func.isRequired,\r\n handleNextStep: PropTypes.func.isRequired,\r\n handlePrevStep: PropTypes.func.isRequired,\r\n myRef: PropTypes.object.isRequired,\r\n errorMsgs: PropTypes.object,\r\n loading: PropTypes.bool,\r\n openModal: PropTypes.bool,\r\n handleUploadFile: PropTypes.func,\r\n uploadLoading: PropTypes.bool,\r\n handleUploadedFile: PropTypes.func,\r\n handleErrorMsg: PropTypes.func\r\n};\r\n\r\nfunction SingpassManualFormScreen({\r\n errors,\r\n setErrors,\r\n step,\r\n firstForm,\r\n setFirstForm,\r\n secondForm,\r\n setSecondForm,\r\n thirdForm,\r\n setThirdForm,\r\n fourthForm,\r\n setFourthForm,\r\n fifthForm,\r\n setFifthForm,\r\n handleNextStep,\r\n handlePrevStep,\r\n myRef,\r\n errorMsgs,\r\n loading,\r\n openModal,\r\n handleUploadedFile,\r\n handleErrorMsg\r\n}) {\r\n return (\r\n <div className='container' ref={myRef}>\r\n <div><FormHeader title={step !== 1}/></div>\r\n <div>\r\n {step === 1 &&\r\n <First\r\n handleErrorMsg={handleErrorMsg}\r\n handleUploadedFile={handleUploadedFile}\r\n errorMsgs={errorMsgs}\r\n myRef={myRef}\r\n errors={errors}\r\n setErrors={setErrors}\r\n firstForm={firstForm}\r\n setFirstForm={setFirstForm}\r\n handleNextStep={handleNextStep}/>\r\n }\r\n {step === 2 &&\r\n <Second\r\n errorMsgs={errorMsgs}\r\n errors={errors}\r\n setErrors={setErrors}\r\n secondForm={secondForm}\r\n setSecondForm={setSecondForm}\r\n handleNextStep={handleNextStep}\r\n handlePrevStep={handlePrevStep}/>\r\n }\r\n {step === 3 &&\r\n <Third\r\n errorMsgs={errorMsgs}\r\n errors={errors}\r\n setErrors={setErrors}\r\n thirdForm={thirdForm}\r\n setThirdForm={setThirdForm}\r\n handleNextStep={handleNextStep}\r\n handlePrevStep={handlePrevStep}/>\r\n }\r\n {step === 4 &&\r\n <Fourth\r\n errorMsgs={errorMsgs}\r\n errors={errors}\r\n setErrors={setErrors}\r\n fourthForm={fourthForm}\r\n setFourthForm={setFourthForm}\r\n handleNextStep={handleNextStep}\r\n handlePrevStep={handlePrevStep}/>\r\n }\r\n {step === 5 &&\r\n <Fifth\r\n handleErrorMsg={handleErrorMsg}\r\n handleUploadedFile={handleUploadedFile}\r\n openModal={openModal}\r\n loading={loading}\r\n errorMsgs={errorMsgs}\r\n errors={errors}\r\n setErrors={setErrors}\r\n fifthForm={fifthForm}\r\n setFifthForm={setFifthForm}\r\n handleNextStep={handleNextStep}\r\n handlePrevStep={handlePrevStep}/>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default SingpassManualFormScreen;\r\n","import { singpassForm } from 'api/authorize';\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport { format } from 'date-fns';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport { validateEmail } from 'utils/helpers';\r\n\r\nimport SingpassManualFormScreen from 'screens/SingpassManualForm/SingpassManualFormScreen';\r\n\r\nconst SingpassManualFormContainer = () => {\r\n const myRef = useRef(null);\r\n\r\n useEffect(() => {\r\n window.document.title = 'Manual Form';\r\n }, []);\r\n\r\n const [step, setStep] = useState(1);\r\n const [firstForm, setFirstForm] = useState({\r\n legal_name: '',\r\n alias_name: '',\r\n nric_fin: '',\r\n nric_fin_front_image: [],\r\n nric_fin_back_image: []\r\n });\r\n const [secondForm, setSecondForm] = useState({\r\n sex: '',\r\n martial_status: '',\r\n maried_name: '',\r\n mobile: '',\r\n email_address: ''\r\n });\r\n const [thirdForm, setThirdForm] = useState({\r\n dob: '',\r\n birth_country: '',\r\n ethnicity: '',\r\n secondary_race: ''\r\n });\r\n const [fourthForm, setFourthForm] = useState({\r\n residency_status: '',\r\n postal_code: '',\r\n residential_address: '',\r\n housing_type: '',\r\n pass_type: '',\r\n // pass_status: '',\r\n workpass_expiry_date: ''\r\n });\r\n const [fifthForm, setFifthForm] = useState({\r\n occupation: '',\r\n employment_sector: '',\r\n employer_name: '',\r\n income_noa: '',\r\n assessed_year_income: '',\r\n last_3_slips: []\r\n });\r\n const [errors, setErrors] = useState({\r\n legal_name: false,\r\n alias_name: false,\r\n nric_fin: false,\r\n nric_fin_front_image: false,\r\n nric_fin_back_image: false,\r\n\r\n sex: false,\r\n martial_status: false,\r\n maried_name: false,\r\n mobile: false,\r\n email_address: false,\r\n\r\n dob: false,\r\n birth_country: false,\r\n ethnicity: false,\r\n secondary_race: false,\r\n\r\n residency_status: false,\r\n postal_code: false,\r\n residential_address: false,\r\n housing_type: false,\r\n pass_type: false,\r\n // pass_status: false,\r\n workpass_expiry_date: false,\r\n\r\n occupation: false,\r\n employment_sector: false,\r\n employer_name: false,\r\n income_noa: false,\r\n assessed_year_income: false,\r\n last_3_slips: false\r\n });\r\n const errorMsg = {\r\n legal_name: 'This field is required *',\r\n alias_name: 'This field is required *',\r\n nric_fin: 'This field is required *',\r\n nric_fin_front_image: 'This field is required *',\r\n nric_fin_back_image: 'This field is required *',\r\n\r\n sex: 'This field is required *',\r\n martial_status: 'This field is required *',\r\n maried_name: 'This field is required *',\r\n mobile: 'This field is required *',\r\n email_address: 'This field is required *',\r\n\r\n dob: 'This field is required *',\r\n birth_country: 'This field is required *',\r\n ethnicity: 'This field is required *',\r\n secondary_race: 'This field is required *',\r\n\r\n residency_status: 'This field is required *',\r\n postal_code: 'This field is required *',\r\n residential_address: 'This field is required *',\r\n housing_type: 'This field is required *',\r\n pass_type: 'This field is required *',\r\n // pass_status: 'This field is required *',\r\n workpass_expiry_date: 'This field is required *',\r\n\r\n occupation: 'This field is required *',\r\n employment_sector: 'This field is required *',\r\n employer_name: 'This field is required *',\r\n income_noa: 'This field is required *',\r\n assessed_year_income: 'This field is required *',\r\n last_3_slips: 'This field is required *'\r\n };\r\n const [errorMsgs, setErrorMsgs] = useState(errorMsg);\r\n const [loading, setLoading] = useState(false);\r\n const [openModal, setOpenModal] = useState(false);\r\n\r\n useEffect(() => {\r\n const getData = localStorage.getItem('manualForm');\r\n\r\n if (getData) {\r\n const manualForm = JSON.parse(getData);\r\n\r\n setFirstForm(manualForm.firstForm);\r\n setSecondForm(manualForm.secondForm);\r\n setThirdForm(manualForm.thirdForm);\r\n setFourthForm(manualForm.fourthForm);\r\n setFifthForm(manualForm.fifthForm);\r\n }\r\n }, []);\r\n\r\n const validateForm = () => {\r\n let check = false;\r\n\r\n const checkForm = fields => {\r\n const keys = Object.keys(fields);\r\n\r\n for (const field of keys) {\r\n // const ref = field;\r\n\r\n if (fields[field] === '' ||\r\n fields[field] === null ||\r\n (field === 'mobile' && fields[field].length < 10) ||\r\n (field === 'mobile' && fields[field] === '65') ||\r\n (field === 'nric_fin_front_image' && fields[field].length === 0) ||\r\n (field === 'nric_fin_back_image' && fields[field].length === 0) ||\r\n (field === 'last_3_slips' && fields[field].length === 0)\r\n ) {\r\n // check if fields are empty\r\n const elementPosition = myRef.current.querySelector(`[data-name=${field}]`).getBoundingClientRect().top + window.scrollY;\r\n\r\n const offsetPosition = elementPosition - 200;\r\n\r\n window.scrollTo({\r\n top: offsetPosition,\r\n behavior: 'smooth'\r\n });\r\n setErrors(prev => ({ ...prev, [field]: true }));\r\n setErrorMsgs(errorMsg);\r\n\r\n if (field === 'mobile' && fields[field].length < 10) {\r\n setErrorMsgs(prev => ({ ...prev, [field]: 'wrong format*' }));\r\n }\r\n\r\n check = true;\r\n\r\n return true;\r\n }\r\n\r\n if (field === 'email_address' && fields[field] !== '' && !validateEmail(fields[field])) {\r\n const elementPosition = myRef.current.querySelector(`[data-name=${field}]`).getBoundingClientRect().top + window.scrollY;\r\n\r\n const offsetPosition = elementPosition - 200;\r\n\r\n window.scrollTo({\r\n top: offsetPosition,\r\n behavior: 'smooth'\r\n });\r\n setErrors(prev => ({ ...prev, [field]: true }));\r\n setErrorMsgs(prev => ({ ...prev, [field]: 'Please enter the correct email address' }));\r\n check = true;\r\n\r\n return true;\r\n }\r\n\r\n if (field === 'postal_code' && fields[field].length !== 6) {\r\n const elementPosition = myRef.current.querySelector(`[data-name=${field}]`).getBoundingClientRect().top + window.scrollY;\r\n\r\n const offsetPosition = elementPosition - 200;\r\n\r\n window.scrollTo({\r\n top: offsetPosition,\r\n behavior: 'smooth'\r\n });\r\n setErrors(prev => ({ ...prev, [field]: true }));\r\n setErrorMsgs(prev => ({ ...prev, [field]: 'Please enter the correct postal code' }));\r\n check = true;\r\n\r\n return true;\r\n }\r\n }\r\n };\r\n\r\n switch (step) {\r\n case 1:\r\n checkForm(firstForm);\r\n break;\r\n case 2:\r\n checkForm(secondForm);\r\n break;\r\n case 3:\r\n checkForm(thirdForm);\r\n break;\r\n case 4:\r\n checkForm(fourthForm);\r\n break;\r\n case 5:\r\n checkForm(fifthForm);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return check;\r\n };\r\n\r\n const handleNextStep = async() => {\r\n const check = validateForm();\r\n\r\n if (check) {\r\n return true;\r\n }\r\n\r\n if (step !== 5) {\r\n let dob = '';\r\n\r\n if (thirdForm.dob) {\r\n const dobDate = new Date(thirdForm.dob);\r\n const year = dobDate.getFullYear();\r\n const month = dobDate.getMonth() + 1;\r\n const day = dobDate.getDate();\r\n\r\n dob = year + '-' + month + '-' + day;\r\n }\r\n\r\n const manualForm = JSON.stringify({\r\n firstForm,\r\n secondForm,\r\n thirdForm,\r\n fourthForm,\r\n fifthForm,\r\n dob,\r\n nric_fin_front_image: firstForm.nric_fin_front_image[0],\r\n nric_fin_back_image: firstForm.nric_fin_back_image[0]\r\n });\r\n\r\n window.scrollTo({\r\n top: 0,\r\n behavior: 'smooth'\r\n });\r\n\r\n localStorage.setItem('manualForm', manualForm);\r\n setStep(step + 1);\r\n } else {\r\n const tmp = [];\r\n\r\n const formattedDate = format(new Date(thirdForm.dob), 'yyyy-MM-dd');\r\n\r\n const formattedThirdForm = await reFormattedThirdForm(formattedDate);\r\n\r\n fifthForm.last_3_slips.map(url => tmp.push({ url }));\r\n\r\n setLoading(true);\r\n\r\n try {\r\n await singpassForm({\r\n ...firstForm,\r\n ...secondForm,\r\n ...formattedThirdForm,\r\n ...fourthForm,\r\n ...fifthForm,\r\n assessed_year_income: fifthForm.assessed_year_income + '-01-01',\r\n last_3_slips: tmp,\r\n nric_fin_front_image: firstForm.nric_fin_front_image[0],\r\n nric_fin_back_image: firstForm.nric_fin_back_image[0]\r\n });\r\n\r\n localStorage.removeItem('manualForm');\r\n setTimeout(() => {\r\n setOpenModal(true);\r\n setLoading(false);\r\n }, 8000);\r\n } catch (err) {\r\n //\r\n setLoading(false);\r\n }\r\n }\r\n };\r\n\r\n const handlePrevStep = () => setStep(step - 1);\r\n\r\n const reFormattedThirdForm = async(formattedDate) => {\r\n return {\r\n dob: formattedDate,\r\n birth_country: thirdForm.birth_country,\r\n ethnicity: thirdForm.ethnicity,\r\n secondary_race: thirdForm.secondary_race\r\n };\r\n };\r\n\r\n const handleUploadedFile = async(name, url, type) => {\r\n if (firstForm[name] !== undefined) {\r\n const tmp = firstForm[name];\r\n\r\n if (type === 'add') {\r\n tmp.push(url);\r\n setFirstForm(prev => ({ ...prev, [name]: tmp }));\r\n }\r\n\r\n if (type === 'remove') {\r\n const removeTmp = tmp.filter(i => i !== url);\r\n\r\n setFirstForm(prev => ({ ...prev, [name]: removeTmp }));\r\n }\r\n }\r\n\r\n if (fifthForm[name] !== undefined) {\r\n const tmp = fifthForm[name];\r\n\r\n if (type === 'add') {\r\n tmp.push(url);\r\n setFifthForm(prev => ({ ...prev, [name]: tmp }));\r\n }\r\n\r\n if (type === 'remove') {\r\n const removeTmp = tmp.filter(i => i !== url);\r\n\r\n setFifthForm(prev => ({ ...prev, [name]: removeTmp }));\r\n }\r\n }\r\n\r\n setErrors(prev => ({ ...prev, [name]: false }));\r\n };\r\n\r\n const handleErrorMsg = (msg, field) => {\r\n const elementPosition = myRef.current.querySelector(`[data-name=${field}]`).getBoundingClientRect().top + window.scrollY;\r\n\r\n const offsetPosition = elementPosition - 200;\r\n\r\n window.scrollTo({\r\n top: offsetPosition,\r\n behavior: 'smooth'\r\n });\r\n setErrors(prev => ({ ...prev, [field]: true }));\r\n setErrorMsgs(prev => ({ ...prev, [field]: msg }));\r\n };\r\n\r\n return (\r\n <>\r\n <SingpassManualFormScreen\r\n handleErrorMsg={handleErrorMsg}\r\n handleUploadedFile={handleUploadedFile}\r\n openModal={openModal}\r\n setOpenModal={setOpenModal}\r\n loading={loading}\r\n errorMsgs={errorMsgs}\r\n myRef={myRef}\r\n errors={errors}\r\n setErrors={setErrors}\r\n step={step}\r\n firstForm={firstForm}\r\n setFirstForm={setFirstForm}\r\n secondForm={secondForm}\r\n setSecondForm={setSecondForm}\r\n thirdForm={thirdForm}\r\n setThirdForm={setThirdForm}\r\n fourthForm={fourthForm}\r\n setFourthForm={setFourthForm}\r\n fifthForm={fifthForm}\r\n setFifthForm={setFifthForm}\r\n handleNextStep={handleNextStep}\r\n handlePrevStep={handlePrevStep}/>\r\n <Helmet>\r\n <title>Manual SingPass\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SingpassManualFormContainer;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"SignUpForm_modal__2torM\",\"section\":\"SignUpForm_section__1DMYi\",\"description\":\"SignUpForm_description__H2ZQC\",\"page__row\":\"SignUpForm_page__row__ciYHK\",\"row\":\"SignUpForm_row__1cbdn\",\"value\":\"SignUpForm_value__2WIlw\",\"value__input\":\"SignUpForm_value__input__2ufkM\",\"withIcon\":\"SignUpForm_withIcon__3l7Pa\",\"withIcon__img\":\"SignUpForm_withIcon__img__2JM7b\",\"withIcon__imgActive\":\"SignUpForm_withIcon__imgActive__3_nuw\",\"value__error\":\"SignUpForm_value__error__mFm1d\",\"row__fullCol\":\"SignUpForm_row__fullCol__EsNfr\",\"buttons\":\"SignUpForm_buttons__35WNr\",\"buttons__back\":\"SignUpForm_buttons__back__1gmW3\",\"buttons__submit\":\"SignUpForm_buttons__submit__1iqgW\",\"w_160\":\"SignUpForm_w_160__2-viu\",\"marketing_block_container\":\"SignUpForm_marketing_block_container__ZEXku\",\"marketing_block\":\"SignUpForm_marketing_block__1JpSw\"};","import { createAxiosInstance, getAuthToken } from 'utils/helpers';\r\nimport { trackKlaviyoEvent } from 'api/tracking';\r\n\r\nconst initialState = {\r\n address: {},\r\n otpInput: {},\r\n authData: {},\r\n isLoading: false,\r\n documents: null,\r\n supportingDocs: {\r\n studentIDCard: null,\r\n studentVisa: null,\r\n studentIDExpiryDate: null,\r\n studentVisaExpiryDate: null\r\n },\r\n guarantor: {\r\n guarantorName: '',\r\n guarantorRelation: '',\r\n guarantorEmail: '',\r\n guarantorMobile: ''\r\n },\r\n supportingDocsUploaded: false\r\n};\r\n\r\nconst FETCH_ADDRESS_START = 'FETCH_ADDRESS_START';\r\nconst FETCH_ADDRESS_SUCCESS = 'FETCH_ADDRESS_SUCCESS';\r\nconst FETCH_ADDRESS_FAILURE = 'FETCH_ADDRESS_FAILURE';\r\n\r\nconst CREATE_ADDRESS_START = 'CREATE_ADDRESS_START';\r\nconst CREATE_ADDRESS_SUCCESS = 'CREATE_ADDRESS_SUCCESS';\r\nconst CREATE_ADDRESS_FAILURE = 'CREATE_ADDRESS_FAILURE';\r\n\r\nconst UPDATE_ADDRESS_START = 'UPDATE_ADDRESS_START';\r\nconst UPDATE_ADDRESS_SUCCESS = 'UPDATE_ADDRESS_SUCCESS';\r\nconst UPDATE_ADDRESS_FAILURE = 'UPDATE_ADDRESS_FAILURE';\r\n\r\nconst UPLOAD_SUPPORT_DOCS_START = 'UPDATE_ADDRESS_START';\r\nconst UPLOAD_SUPPORT_DOCS_SUCCESS = 'UPLOAD_SUPPORT_DOCS_SUCCESS';\r\nconst UPLOAD_SUPPORT_DOCS_FAILURE = 'UPLOAD_SUPPORT_DOCS_FAILURE';\r\n\r\nconst UPDATE_GUARANTOR_INFORMATION = 'UPDATE_GUARANTOR_INFORMATION';\r\nconst UPDATE_GUARANTOR_INFORMATION_SUCCESS = 'UPDATE_GUARANTOR_INFORMATION_SUCCESS';\r\nconst UPDATE_GUARANTOR_INFORMATION_FAILURE = 'UPDATE_GUARANTOR_INFORMATION_FAILURE';\r\n\r\nconst UPDATE_USER_LOGIN_STATE_DATA = 'UPDATE_USER_LOGIN_STATE_DATA';\r\n\r\nconst UPDATE_USER_SUPPORTING_DOCUMENTS_DATA = 'UPDATE_USER_SUPPORTING_DOCUMENTS_DATA';\r\n\r\nconst UPDATE_GUARANTOR_INFORMATION_ON_CHECKOUT = 'UPDATE_GUARANTOR_INFORMATION_ON_CHECKOUT';\r\n\r\nconst UPDATE_OTP_INPUT_DATA = 'UPDATE_OTP_INPUT_DATA';\r\n\r\nconst UPDATE_USER_GURANTOR_INFORMATION_DATA = 'UPDATE_USER_GURANTOR_INFORMATION_DATA';\r\n\r\nconst UPDATED_ON_SUPPORT_UPLOADED_EVENT = 'UPDATED_ON_SUPPORT_UPLOADED_EVENT';\r\n\r\nconst fetchAddressStart = () => ({\r\n type: FETCH_ADDRESS_START\r\n});\r\n\r\nconst fetchAddressSuccess = (data) => ({\r\n type: FETCH_ADDRESS_SUCCESS,\r\n data\r\n});\r\n\r\nconst fetchAddressFailure = () => ({\r\n type: FETCH_ADDRESS_FAILURE\r\n});\r\n\r\nconst createAddressStart = () => ({\r\n type: CREATE_ADDRESS_START\r\n});\r\n\r\nconst createAddressSuccess = () => ({\r\n type: CREATE_ADDRESS_SUCCESS\r\n});\r\n\r\nconst createAddressFailure = () => ({\r\n type: CREATE_ADDRESS_FAILURE\r\n});\r\n\r\nconst updateAddressStart = () => ({\r\n type: UPDATE_ADDRESS_START\r\n});\r\n\r\nconst updateAddressSuccess = (data) => ({\r\n type: UPDATE_ADDRESS_SUCCESS,\r\n data\r\n});\r\n\r\nconst updateAddressFailure = () => ({\r\n type: UPDATE_ADDRESS_FAILURE\r\n});\r\n\r\nconst supportDocsStartUpload = () => ({\r\n type: UPLOAD_SUPPORT_DOCS_START\r\n});\r\n\r\nconst supportDocsStartUploadSuccess = (data) => ({\r\n type: UPLOAD_SUPPORT_DOCS_SUCCESS,\r\n data\r\n});\r\n\r\nconst supportDocsStartUploadFailure = () => ({\r\n type: UPLOAD_SUPPORT_DOCS_FAILURE\r\n});\r\n\r\nconst guarantorInformationUpdate = () => ({\r\n type: UPDATE_GUARANTOR_INFORMATION\r\n});\r\n\r\nconst guarantorInformationUpdateSuccess = (data) => ({\r\n type: UPDATE_GUARANTOR_INFORMATION_SUCCESS,\r\n data\r\n});\r\n\r\nconst guarantorInformationUpdateFailure = () => ({\r\n type: UPDATE_GUARANTOR_INFORMATION_FAILURE\r\n});\r\n\r\nexport const updateOTPDataFromStateToStore = (data) => ({\r\n type: UPDATE_OTP_INPUT_DATA,\r\n data\r\n});\r\n\r\nexport const updateAuthenticationDataFromStateToStore = (data) => ({\r\n type: UPDATE_USER_LOGIN_STATE_DATA,\r\n data\r\n});\r\n\r\nexport const updateSupportingDocumentsDatFromStateToStore = (key, value) => ({\r\n type: UPDATE_USER_SUPPORTING_DOCUMENTS_DATA,\r\n data: {\r\n key,\r\n value\r\n }\r\n});\r\n\r\nexport const guarantorInformationFromStateToStore = (keyG, valueG) => ({\r\n type: UPDATE_USER_GURANTOR_INFORMATION_DATA,\r\n data: {\r\n keyG,\r\n valueG\r\n }\r\n});\r\n\r\nexport const updateGurantorInformationFromStateToStore = (data) => ({\r\n type: UPDATE_GUARANTOR_INFORMATION_ON_CHECKOUT,\r\n data\r\n});\r\n\r\nexport const updatedOnSupportUploadedEvent = (data) => ({\r\n type: UPDATED_ON_SUPPORT_UPLOADED_EVENT,\r\n data\r\n});\r\n\r\nexport const handleFetchAddress = () => {\r\n return async (dispatch) => {\r\n dispatch(fetchAddressStart());\r\n\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n const { data } = await instance.get('/user/address?channel=samsung');\r\n\r\n dispatch(fetchAddressSuccess(data[0]));\r\n } catch (e) {\r\n dispatch(fetchAddressFailure());\r\n }\r\n };\r\n};\r\n\r\nexport const handleCreateAddress = (form, onSuccess = () => {}, onFailure = () => {}, profile, item) => {\r\n return async (dispatch) => {\r\n dispatch(createAddressStart());\r\n\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n if (form?.name !== 'billing') {\r\n trackKlaviyoEvent('shipping-added', {\r\n email: profile?.email,\r\n user_id: profile?.id,\r\n zip_code: form.postal_code,\r\n item: item\r\n });\r\n }\r\n\r\n try {\r\n const addressRes = await instance.post('/user/address?channel=samsung', form);\r\n\r\n if (addressRes?.data?.id || addressRes?.status === 201 || addressRes?.status === 204 || addressRes?.status === 200) {\r\n dispatch(handleFetchAddress());\r\n dispatch(createAddressSuccess());\r\n\r\n onSuccess(addressRes.data);\r\n } else {\r\n onFailure();\r\n }\r\n } catch (e) {\r\n dispatch(createAddressFailure());\r\n\r\n onFailure();\r\n }\r\n };\r\n};\r\n\r\nexport const handleUpdateAddress = (id, form, onSuccess = () => {}, onFailure = () => {}) => {\r\n return async (dispatch) => {\r\n dispatch(updateAddressStart());\r\n\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n const addressRes = await instance.put(`user/address/${id}?channel=samsung`, form);\r\n\r\n if (addressRes?.data?.status === true || addressRes?.status === 204) {\r\n dispatch(updateAddressSuccess(form));\r\n onSuccess();\r\n } else {\r\n onFailure();\r\n }\r\n } catch (e) {\r\n dispatch(updateAddressFailure());\r\n\r\n onFailure();\r\n }\r\n };\r\n};\r\n\r\nexport const handleSupportDocsUpload = (formData, onSuccess = () => {}, onFailure = () => {}) => {\r\n return async (dispatch) => {\r\n dispatch(supportDocsStartUpload());\r\n\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n const returnVal = await instance.post('user/insert-user-kyc-info', formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n });\r\n\r\n if (returnVal?.data?.status === true || returnVal?.data?.status === 200) {\r\n dispatch(supportDocsStartUploadSuccess(formData));\r\n onSuccess();\r\n } else {\r\n dispatch(supportDocsStartUploadFailure());\r\n\r\n onFailure();\r\n\r\n return false;\r\n }\r\n } catch (e) {\r\n dispatch(supportDocsStartUploadFailure());\r\n\r\n onFailure();\r\n }\r\n };\r\n};\r\n\r\nexport const handleGuarantorInformationUpdate = (form, onSuccess = () => {}, onFailure = () => {}) => {\r\n return async (dispatch) => {\r\n dispatch(guarantorInformationUpdate());\r\n\r\n const token = getAuthToken();\r\n const instance = createAxiosInstance(token);\r\n\r\n try {\r\n const returnVal = await instance.post('user/insert-user-guarantor-info', form, {\r\n headers: {\r\n 'Content-Type': 'application/x-www-form-urlencoded'\r\n }\r\n });\r\n\r\n if (returnVal?.data?.status === true || returnVal?.data?.status === 200) {\r\n dispatch(guarantorInformationUpdateSuccess(form));\r\n\r\n onSuccess();\r\n } else {\r\n dispatch(guarantorInformationUpdateFailure());\r\n\r\n onFailure();\r\n }\r\n } catch (e) {\r\n dispatch(guarantorInformationUpdateFailure());\r\n\r\n onFailure();\r\n }\r\n };\r\n};\r\n\r\nexport default function user(state = initialState, action) {\r\n switch (action.type) {\r\n case FETCH_ADDRESS_START:\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n\r\n case FETCH_ADDRESS_SUCCESS:\r\n return {\r\n ...state,\r\n address: action.data,\r\n isLoading: false\r\n };\r\n\r\n case FETCH_ADDRESS_FAILURE:\r\n return {\r\n ...state,\r\n isLoading: false\r\n };\r\n\r\n case UPDATE_ADDRESS_START:\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n\r\n case UPDATE_ADDRESS_SUCCESS:\r\n return {\r\n ...state,\r\n address: { ...state.address, ...action.data },\r\n isLoading: false\r\n };\r\n\r\n case UPDATE_ADDRESS_FAILURE:\r\n return {\r\n ...state,\r\n isLoading: false\r\n };\r\n\r\n case UPDATE_GUARANTOR_INFORMATION:\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n\r\n case UPDATE_GUARANTOR_INFORMATION_SUCCESS:\r\n return {\r\n ...state,\r\n guarantor: action.data?.userInfo,\r\n isLoading: false\r\n };\r\n\r\n case UPDATE_GUARANTOR_INFORMATION_FAILURE:\r\n return {\r\n ...state,\r\n isLoading: false\r\n };\r\n\r\n case UPLOAD_SUPPORT_DOCS_START:\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n\r\n case UPLOAD_SUPPORT_DOCS_SUCCESS:\r\n return {\r\n ...state,\r\n documents: action.data?.userInfo,\r\n isLoading: false\r\n };\r\n\r\n case UPLOAD_SUPPORT_DOCS_FAILURE:\r\n return {\r\n ...state,\r\n isLoading: false\r\n };\r\n\r\n case UPDATE_USER_LOGIN_STATE_DATA:\r\n return {\r\n ...state,\r\n authData: action.data\r\n };\r\n\r\n case UPDATE_USER_SUPPORTING_DOCUMENTS_DATA:\r\n // eslint-disable-next-line no-case-declarations\r\n const { key, value } = action.data;\r\n\r\n return {\r\n ...state,\r\n supportingDocs: {\r\n ...state.supportingDocs,\r\n [key]: value\r\n }\r\n };\r\n\r\n case UPDATE_USER_GURANTOR_INFORMATION_DATA:\r\n // eslint-disable-next-line no-case-declarations\r\n const { keyG, valueG } = action.data;\r\n\r\n return {\r\n ...state,\r\n guarantor: {\r\n ...state.guarantor,\r\n [keyG]: valueG\r\n }\r\n };\r\n\r\n case UPDATE_GUARANTOR_INFORMATION_ON_CHECKOUT:\r\n return {\r\n ...state,\r\n gurantorInformation: action.data\r\n };\r\n\r\n case UPDATE_OTP_INPUT_DATA:\r\n return {\r\n ...state,\r\n otpInput: action.data\r\n };\r\n\r\n case UPDATED_ON_SUPPORT_UPLOADED_EVENT:\r\n return {\r\n ...state,\r\n supportingDocsUploaded: action.data\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/media/success.6cee57bb.png\";","export default \"data:image/png;base64,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\"","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport error from 'assets/images/danger.png';\r\nimport warning from 'assets/images/warning.png';\r\nimport success from 'assets/images/success.png';\r\nimport info from 'assets/images/info.png';\r\nimport close from 'assets/images/toast_close.png';\r\n\r\nimport 'animate.css';\r\n\r\nexport const notifType = {\r\n SUCCESS: 0,\r\n DANGER: 1,\r\n WARN: 2\r\n};\r\n\r\nconst Notification = ({ message, type, duration }) => {\r\n const [progress, setProgress] = useState(100);\r\n const updateInterval = 100;\r\n let content;\r\n\r\n useEffect(() => {\r\n let intervalCount = 0;\r\n\r\n const interval = setInterval(() => {\r\n const remainingTime = duration - intervalCount * updateInterval;\r\n const calculatedProgress = (remainingTime / duration) * 100;\r\n\r\n setProgress(calculatedProgress);\r\n\r\n if (remainingTime <= 0) {\r\n clearInterval(interval);\r\n }\r\n\r\n intervalCount++;\r\n }, updateInterval);\r\n\r\n return () => clearInterval(interval);\r\n }, [duration]);\r\n\r\n const closeNotification = () => {\r\n setProgress(0);\r\n content = '';\r\n };\r\n\r\n switch (type) {\r\n case notifType.SUCCESS:\r\n content = (\r\n
\r\n
\r\n Success icon {message}\r\n close\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n break;\r\n case notifType.DANGER:\r\n content = (\r\n
\r\n
\r\n Error icon {message}\r\n close\r\n
\r\n
\r\n
\r\n );\r\n break;\r\n case notifType.WARN:\r\n content = (\r\n
\r\n
\r\n Warning icon {message}\r\n close\r\n
\r\n
\r\n
\r\n );\r\n break;\r\n default:\r\n content = (\r\n
\r\n
\r\n Info icon {message}\r\n close\r\n
\r\n
\r\n
\r\n );\r\n break;\r\n }\r\n\r\n return
{content}
;\r\n};\r\n\r\nNotification.propTypes = {\r\n message: PropTypes.string.isRequired,\r\n type: PropTypes.number.isRequired,\r\n duration: PropTypes.number.isRequired\r\n};\r\n\r\nexport default Notification;\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import React from 'react';\r\nimport { Store } from 'react-notifications-component';\r\n\r\nimport Notification from './Notification';\r\n\r\nimport 'animate.css';\r\n\r\nexport const notifType = {\r\n SUCCESS: 0,\r\n DANGER: 1,\r\n WARN: 2\r\n};\r\n\r\nexport function notify(message, type, duration = 5000) {\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n const content = (\r\n \r\n );\r\n\r\n const notificationConfig = {\r\n content,\r\n insert: 'top',\r\n container: 'top-right',\r\n animationIn: ['animate__animated', 'animate__fadeIn'],\r\n animationOut: ['animate__animated', 'animate__fadeOutRight'],\r\n dismiss: {\r\n duration: duration,\r\n waitForAnimation: true\r\n }\r\n };\r\n\r\n notificationConfig.width = !isMobile && 350;\r\n Store.addNotification(notificationConfig);\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttons\":\"OTPForm_buttons__1t_7j\",\"buttons__back\":\"OTPForm_buttons__back__F4WpD\",\"buttons__submit\":\"OTPForm_buttons__submit__20HkA\",\"w_160\":\"OTPForm_w_160__2OpHd\",\"account\":\"OTPForm_account__32UwM\",\"account__title\":\"OTPForm_account__title__1oKpS\",\"account__button\":\"OTPForm_account__button__pWugK\",\"section\":\"OTPForm_section__3s2DG\",\"title\":\"OTPForm_title__3amBL\",\"counter\":\"OTPForm_counter__kaTfh\",\"again\":\"OTPForm_again__usCLM\",\"resend\":\"OTPForm_resend__3QOd5\",\"container\":\"OTPForm_container__2Uy7q\",\"input\":\"OTPForm_input__2B2-W\",\"otpBox\":\"OTPForm_otpBox__1uKYR\",\"description\":\"OTPForm_description__2bp5T\"};","import {\r\n getAppLanguage as getAppLanguageCache,\r\n setAppLanguage as setAppLanguageCache\r\n} from 'utils/helpers';\r\n\r\nconst initialState = {\r\n language: getAppLanguageCache()\r\n};\r\n\r\nconst SET_APP_LANGUAGE = 'SET_APP_LANGUAGE';\r\n\r\nexport function setAppLanguage(language, i18n) {\r\n return {\r\n type: SET_APP_LANGUAGE,\r\n language,\r\n i18n\r\n };\r\n}\r\n\r\nexport default function i18n(state = initialState, action) {\r\n switch (action.type) {\r\n case SET_APP_LANGUAGE: {\r\n const { language, i18n } = action;\r\n\r\n setAppLanguageCache(language);\r\n i18n.changeLanguage(language);\r\n\r\n return {\r\n ...state,\r\n language\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","const initialState = {\r\n description: '',\r\n title: '',\r\n image: '',\r\n extraTags: null\r\n};\r\n\r\nconst HELMET_SET = 'HELMET_SET';\r\nconst HELMET_RESET = 'HELMET_RESET';\r\n\r\nexport function setHelmetData(data) {\r\n return {\r\n type: HELMET_SET,\r\n data\r\n };\r\n}\r\n\r\nexport function resetHelmet() {\r\n return {\r\n type: HELMET_RESET\r\n };\r\n}\r\n\r\nexport default function helmet(state = initialState, action) {\r\n switch (action.type) {\r\n case HELMET_SET:\r\n return {\r\n ...state,\r\n ...action.data\r\n };\r\n\r\n case HELMET_RESET:\r\n return {\r\n ...initialState\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","const ALERTS_PUSH = 'ALERTS_PUSH';\r\nconst ALERTS_DISMISS_BY_ID = 'ALERTS_DISMISS_BY_ID';\r\nconst ALERTS_DISMISS_ALL = 'ALERTS_DISMISS_ALL';\r\n\r\nconst initialState = {\r\n alerts: []\r\n};\r\n\r\nlet INCREMENT_ID = 1;\r\n\r\nexport const ALERTS_POSITION_ARRAY = ['TOP_CENTER', 'TOP_LEFT', 'TOP_RIGHT', 'BOTTOM_CENTER', 'BOTTOM_LEFT', 'BOTTOM_RIGHT'];\r\n\r\nexport const ALERTS_POSITION = {\r\n TOP_CENTER: 'TOP_CENTER',\r\n TOP_LEFT: 'TOP_LEFT',\r\n TOP_RIGHT: 'TOP_RIGHT',\r\n BOTTOM_CENTER: 'BOTTOM_CENTER',\r\n BOTTOM_LEFT: 'BOTTOM_LEFT',\r\n BOTTOM_RIGHT: 'BOTTOM_RIGHT'\r\n};\r\nexport const ALERT_TYPES_ARRAY = ['INFO', 'SUCCESS', 'WARNING', 'ERROR'];\r\n\r\nexport const ALERT_TYPES = {\r\n INFO: 'INFO',\r\n SUCCESS: 'SUCCESS',\r\n WARNING: 'WARNING',\r\n ERROR: 'ERROR'\r\n};\r\n\r\nexport function pushAlert(config) {\r\n return {\r\n type: ALERTS_PUSH,\r\n config\r\n };\r\n}\r\n\r\nexport function dismissAlert(id) {\r\n return {\r\n type: ALERTS_DISMISS_BY_ID,\r\n id\r\n };\r\n}\r\n\r\nexport function dismissAllAlerts() {\r\n return {\r\n type: ALERTS_DISMISS_ALL\r\n };\r\n}\r\n\r\nexport default function alerts(state = initialState, action) {\r\n switch (action.type) {\r\n case ALERTS_PUSH:\r\n return {\r\n ...state,\r\n alerts: state.alerts.concat({\r\n ...action.config,\r\n id: INCREMENT_ID++\r\n })\r\n };\r\n\r\n case ALERTS_DISMISS_BY_ID:\r\n {\r\n const { id } = action;\r\n\r\n const filterAlertById = item => item.id !== id;\r\n\r\n return {\r\n ...state,\r\n alerts: state.alerts.filter(filterAlertById)\r\n };\r\n }\r\n\r\n case ALERTS_DISMISS_ALL:\r\n {\r\n return {\r\n ...state,\r\n alerts: []\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { createStore, combineReducers, applyMiddleware, compose } from 'redux';\r\nimport { connectRouter, routerMiddleware } from 'connected-react-router';\r\nimport { createBrowserHistory } from 'history';\r\nimport thunk from 'redux-thunk';\r\nimport * as reducers from 'redux/reducers';\r\nimport { composeWithDevTools } from '@redux-devtools/extension';\r\n\r\nexport const history = createBrowserHistory();\r\n\r\n// to download extension - https://github.com/reduxjs/redux-devtools\r\nconst composeEnhancers = composeWithDevTools({});\r\n\r\nconst middleWaresWithoutDevTools = applyMiddleware(routerMiddleware(history), thunk);\r\n\r\nconst middleWares = process.env.REACT_APP_ENV === 'production' ? middleWaresWithoutDevTools : composeEnhancers(middleWaresWithoutDevTools);\r\n\r\nexport const store = createStore(\r\n combineReducers({\r\n router: connectRouter(history),\r\n ...reducers\r\n }),\r\n compose(middleWares, window.devToolsExtension ? window.devToolsExtension() : f => f)\r\n);\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport {\r\n ROUTE_REDIRECT_FROM_UNAUTHED_ROUTE,\r\n ROUTE_REDIRECT_FROM_AUTHED_ROUTE\r\n} from 'config/constants';\r\n\r\n/*\r\n * Route only for authed clients\r\n */\r\nexport class AuthedRoute extends Component {\r\n static propTypes = {\r\n component: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired,\r\n isAuthed: PropTypes.bool.isRequired,\r\n path: PropTypes.string.isRequired,\r\n location: PropTypes.object\r\n };\r\n\r\n shouldComponentUpdate(nextProps) {\r\n const { isAuthed, path } = this.props;\r\n\r\n if (isAuthed !== nextProps.isAuthed ||\r\n path !== nextProps.path) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n render() {\r\n const { isAuthed, location, ...props } = this.props;\r\n\r\n if (isAuthed) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\n/*\r\n * Route only for un-authed clients\r\n */\r\nexport class UnauthedRoute extends Component {\r\n static propTypes = {\r\n component: PropTypes.object.isRequired,\r\n isAuthed: PropTypes.bool.isRequired,\r\n path: PropTypes.string.isRequired,\r\n location: PropTypes.object\r\n };\r\n\r\n shouldComponentUpdate(nextProps) {\r\n const { isAuthed, path } = this.props;\r\n\r\n if (isAuthed !== nextProps.isAuthed ||\r\n path !== nextProps.path) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n render() {\r\n const { isAuthed, location, ...props } = this.props;\r\n\r\n if (!isAuthed) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/media/Samung-Cinc-Logo-Black.c1a6c347.png\";","export default \"data:image/png;base64,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\"","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { NavLink, UncontrolledAccordion, AccordionBody, AccordionItem, Button } from 'reactstrap';\r\nimport { connect, useSelector, useDispatch } from 'react-redux';\r\nimport { useHistory, NavLink as RRNavLink, useLocation } from 'react-router-dom';\r\nimport Box from '@mui/material/Box';\r\nimport { Collapse, Badge } from 'antd';\r\nimport SwipeableDrawer from '@mui/material/SwipeableDrawer';\r\nimport ElfsightWidget from 'components/ElfsightWidget/ElfsightWidget';\r\nimport { useQueryParam, StringParam } from 'use-query-params';\r\n\r\nimport { ROUTES } from 'config/constants';\r\n\r\nimport {\r\n handleLogout,\r\n loginModal,\r\n handleOpenSignUp\r\n} from 'redux/reducers/auth';\r\nimport { handleFetchingCart } from 'redux/reducers/cart';\r\n\r\nimport { useQuery, getAuthToken, setReferralParam } from 'utils/helpers';\r\nimport SearchInput from 'components/Search/Search';\r\n\r\nimport SamsungLogoDesktop from 'assets/images/Samung-Cinc-Logo-Black.png';\r\nimport Cart from 'assets/images/shopping-cart.png';\r\nimport mobileMenu from 'assets/images/menu.png';\r\n\r\nimport './Header.scss';\r\n\r\nconst Header = ({\r\n loginModal,\r\n token,\r\n handleLogout,\r\n profile\r\n}) => {\r\n const query = useQuery();\r\n const history = useHistory();\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n const { pathname } = useLocation();\r\n const [open, setOpen] = useState(false);\r\n const [searchQuery, setSearchQuery] = useQueryParam('search', StringParam);\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n const { segment } = useSelector(state => ({ segment: state.common.segment }));\r\n const segmentQuery = segment ? `?segment=${segment}` : '';\r\n const { products, isAuthed } = useSelector(state => ({\r\n products: state.cart.fetchedProducts,\r\n isAuthed: state.auth.isAuthed\r\n }));\r\n const cartLocalStorageJSON = localStorage.getItem('products');\r\n const cartLocalStorage = cartLocalStorageJSON ? JSON.parse(cartLocalStorageJSON) : [];\r\n const userCart = isAuthed ? products : cartLocalStorage;\r\n const [cartCount, setCartCount] = useState(userCart?.length ?? 0);\r\n const { orderPlaced } = useSelector(state => ({ orderPlaced: state.order.orderPlaced }));\r\n const isCheckoutPages = pathname.includes('checkout');\r\n const showSignInSignUpPaths = [\r\n ROUTES.HOME,\r\n ROUTES.FAQ,\r\n ROUTES.PRIVACY_POLICY,\r\n ROUTES.TERMS_AND_CONDITIONS,\r\n ROUTES.ABOUT_US,\r\n ROUTES.ORDERS,\r\n ROUTES.SUBSCRIPTIONS,\r\n ROUTES.INACTIVE_SUBSCRIPTIONS,\r\n ROUTES.KNOX_DISCLAIMER,\r\n ROUTES.Q6B6,\r\n ROUTES.Q6B6_flip6,\r\n ROUTES.Q6B6_fold6,\r\n ROUTES.GALAXY_Z_SEM,\r\n ROUTES.GALAXY_Z_AFF,\r\n ROUTES.GALAXY_Z_EDM,\r\n ROUTES.SEARCH\r\n ];\r\n const showSignInSignUpCta = (showSignInSignUpPaths.includes(pathname) || pathname.indexOf('product') > -1) && token === '';\r\n const showCartIconPaths = [\r\n ROUTES.ORDERS,\r\n ROUTES.MYINFORMATION,\r\n ROUTES.SUBSCRIPTIONS,\r\n ROUTES.INACTIVE_SUBSCRIPTIONS,\r\n ROUTES.HOME,\r\n ROUTES.FAQ,\r\n ROUTES.PRIVACY_POLICY,\r\n ROUTES.TERMS_AND_CONDITIONS,\r\n ROUTES.ABOUT_US,\r\n ROUTES.KNOX_DISCLAIMER,\r\n ROUTES.DOCUMENTSPROOF\r\n ];\r\n\r\n const showCartIcon = () => {\r\n if (token === '') return false;\r\n const q6b6Pages = [\r\n ROUTES.Q6B6,\r\n ROUTES.Q6B6_flip6,\r\n ROUTES.Q6B6_fold6,\r\n ROUTES.GALAXY_Z_SEM,\r\n ROUTES.GALAXY_Z_AFF,\r\n ROUTES.GALAXY_Z_EDM\r\n ];\r\n\r\n if (q6b6Pages.includes(pathname) && cartCount === 0) return false;\r\n if (!(showCartIconPaths.includes(pathname) || pathname.indexOf('product') > -1)) return false;\r\n\r\n return true;\r\n };\r\n\r\n useEffect(() => {\r\n if (!orderPlaced) setCartCount(products?.length || cartLocalStorage?.length);\r\n }, [products, cartLocalStorage]);\r\n\r\n useEffect(() => {\r\n if (!orderPlaced) setCartCount(userCart?.length);\r\n }, [userCart]);\r\n\r\n useEffect(() => {\r\n if (getAuthToken() && isAuthed && (location.pathname === ROUTES.CART || location.pathname === ROUTES.HOME || location.pathname === ROUTES.ORDER_SUMMARY || location.pathname === ROUTES.REVIEW_ORDER)) {\r\n dispatch(handleFetchingCart());\r\n }\r\n }, [profile]);\r\n\r\n useEffect(() => {\r\n if (orderPlaced === true) {\r\n setCartCount(0);\r\n }\r\n }, [orderPlaced]);\r\n\r\n const handleUrlChange = () => setOpen(false);\r\n\r\n useEffect(() => {\r\n handleUrlChange();\r\n const unlisten = history.listen(handleUrlChange);\r\n\r\n return () => unlisten();\r\n }, [location.pathname]);\r\n\r\n useEffect(() => {\r\n const forgot = query.get('forgot');\r\n\r\n if (forgot && forgot === 'true') {\r\n goToLogin();\r\n }\r\n }, [loginModal, query]);\r\n\r\n const onClose = () => setOpen(false);\r\n\r\n const goToLogin = () => history.push(ROUTES.SIGN_IN);\r\n\r\n const handleLogoutMobile = () => {\r\n setOpen(false);\r\n handleLogout();\r\n };\r\n\r\n const goToCart = () => history.push(ROUTES.CART);\r\n\r\n const pointoutTheSection = (hash) => {\r\n setOpen(false);\r\n\r\n const hashSection = document.getElementById(hash);\r\n\r\n if (location.pathname === ROUTES.HOME && hashSection) {\r\n const offset = 50;\r\n const topPos = hashSection.getBoundingClientRect().top + window.scrollY - offset;\r\n\r\n window.scroll({\r\n top: topPos,\r\n behavior: 'smooth'\r\n });\r\n } else {\r\n history.push(`${ROUTES.HOME}${segmentQuery}#${hash}`);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const queryParams = new URLSearchParams(window.location.search);\r\n const referralCode = queryParams.get('referral_code');\r\n\r\n if (referralCode !== null) {\r\n setReferralParam(referralCode);\r\n }\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n
\r\n Cinch Logo - Link to homepage\r\n
\r\n {(token !== '' && profile?.singpass_status && profile?.singpass_status !== 'rejected') && \r\n \r\n \r\n \r\n {'Products'}\r\n {'My Profile'}\r\n {'Subscriptions'}\r\n {'Payment Info'}\r\n {'Shipping Details'}\r\n {'Refer and Earn'}\r\n \r\n \r\n \r\n }\r\n {token !== '' && (!profile?.singpass_status || profile?.singpass_status === 'rejected') &&\r\n
\r\n
\r\n {'Products'}\r\n {'My Profile'}\r\n {'Refer and Earn'}\r\n
}\r\n
\r\n
\r\n pointoutTheSection('how_it_works_section')}>{'How it works'}\r\n pointoutTheSection('faq')}>{'FAQ'}\r\n {'Privacy Policy'}\r\n {'Terms and Conditions'}\r\n
\r\n {(token !== '' && profile?.singpass_status && profile?.singpass_status !== 'rejected') && }\r\n {(token !== '' && (!profile?.singpass_status || profile?.singpass_status === 'rejected')) &&\r\n <>\r\n {'Logout'}\r\n }\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n\r\n {/* */}\r\n \r\n );\r\n};\r\n\r\nHeader.propTypes = {\r\n loginModal: PropTypes.func.isRequired,\r\n handleLogout: PropTypes.func.isRequired,\r\n token: PropTypes.string,\r\n handleOpenSignUp: PropTypes.func,\r\n singpassStatus: PropTypes.any,\r\n profile: PropTypes.object\r\n};\r\n\r\nconst mapStateToProps = ({ auth }) => {\r\n const { token, profile } = auth;\r\n\r\n return {\r\n token,\r\n singpassStatus: profile.singpass_status\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n loginModal: openLogin => dispatch(loginModal(openLogin)),\r\n handleLogout: () => dispatch(handleLogout()),\r\n handleOpenSignUp: () => dispatch(handleOpenSignUp())\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Header);\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAB5jSURBVHgB7d0/dxzXnSbgV7YDT2T5E+gq20x0Nhu5nc1GQ2ezkeBsNzL9CQiHG0nONgOV7UaSPwGgbDJR2WZdyjYTlc1Emr7TDYsmQbCB7qp7q+p5zvmdBu0jCSQvbr11/yYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0gfp24e7Kof6MP0a3vh6CAB0rMcAUB/0f9zV5lBz9WpXLw+fXx++vv01AHBQH/wvdvX9rn5ccH2zq6tdPU3foxoAMLpnWf6D/111vauL7Kc5AGA1Psu8Hthj1lXmPe0BAEepD7w5PJinrm32owIAsDje/I8LAs9jrQAAC1Hn/OfwAO4pCFwEAGasZP9Am8ODt8cg8DQAMEMvMq+Hbo91FbsGAJiRknk9aHuubUwLADATF5nXQ3YO9VkAoHPXmdfDdS61jSkBAB5g6rsAfgxjGXb1++zvGwCAe/0s03kSxlSyv2fgWQDgPaYMAA6zmUZdE/A8AHCPn2c6m9jDPpXN4fPrAMAdpgwAZVf/EqayOXwKAQC8ZcoA8Mtd/Y8wpc3hUwgAoJm6BmAu2+qWVp8GABoaMq8H51Lq+9iFAcBrptwFUH0VWqijL1/GYUEAHAgA61Gyv0QIACZdBFgN2S9MK6GFcvi0KBCAyW0yr/nzJdYmANDA55nXA3NptY2TGQFWbeopgFv/mv2hQB5CbdQ/93/f1U0AYGIl+zfRObwxL7VsDQSgiRIhoGVdBwAaKdnvUZ/LQ3NptQkANHQRowEt6joA0IGLXb3MvB6ic69NAFiVD9Kvkv0itSfp++CgD1+rTzJPN7v6XQCAR6uB5SL7Y4/rJTxGAQBghS6yf8PuPQBcBwA4u036X+ToYCaAlWh1EuAaDbv6y65+2NU/7uqX6Y/TAQFgRCV9jgZsAwCMqg63f5P+QsAmACzez0Irr3b1m/Q35L4JAIvX8zkAa1FHAq7Tz8U89RCmPwXgeMPh89WhmAEBoA8l+xBQAjB/NQQMh89vD1/f1svQBQGgH5vYiw8sXw0FNQTUYHBz+HoIkxMA+vL5rv4YgHUZsg8DXx8+hzA6AaAvdT3ANg7kAdbtZld/zf5I9SGMwkFAffm37A/j+acArFfJvh98lv30aH1ZtcDwzIwA9McoAMDdXuzqizix9CyMAPSnjgL8Q+zHB3jT7W2rT7MfLbWj4ARGAPpU3/6/DwD3GXb15+xHBnggJwH2qc5z3QSA+5RdXWU/bXoRHkQA6Ne3AeAYJYLAg1kD0K96XfC/BIBj1enTuj6gZP8SZdfAPYwA9MviFoDHuch+NOB5eCeLAPv2YwA4xbCr38WBQm8xAtC37wLAKUqMBtxJAABgDS539U3cuvo3AgAAa1EPEqq3rj4NAgAAq1J29WVMCVgE2DmLAAHGU69grycJrnK7oADQL8cBA4yvbrn+fVa4S8AUQL9KABjb7bqAkpURAPrlOmCAaZSsMAQIAP0SAACmU7IPAU+yEgJAv0oAmFLJikKAANAvIwAA06t9b90mWLJwAkC/BACANkpWsCZAAOhXCQCtlOxDwGJfxgSAfv0qALRUsp8OWCQBoF+mAADa2+zqsyyQkwD7VU8BFAIA+nCxqy+yIAJAv9wDANCPel/Ab7KgI4NNAfTJmz9AX263By6mf/5F6FFJe38IwHE+PFQ5VP36kyxPPSCoXiP8p8BINtlPAbSqbQBOVx+YF7t6kX2/8uNCahMYydO0bdzfBOD8aiB4lv0VvD08yB9b25iqZST1B6Rl474JwLhK5j0ysMitgbR3mbYN+yoA07nIPIPAJjNmF0CfWg8t/RCA6bzY1cfZLz4eMh/PM2MCQJ9K2noVgOm9yH6v/Z8zD5vsp2zhbK7TdljrIgBtlcxjWmC2p7YaAehT68ZkBABobch+WqD30YDaXxsF4GxqomyZaDcB6EfdPrhNH2/8ixoFoD+tG3MJQF9K+g4Bl4ET1RTZuiFLskCPbs/j7+GB/2YZBeBkdairdUMG6NmL9PHQf7MuAyfYpG0D3gagfy/Sx0P/9ZrVKIBdAP2xAwDg/S529VX6Uvvvi8yEANCfkracAgjMRT058GX68s+ZCQGgP61HAEwBAHNRRyx/n76OD95kJlupBYD+uAcA4HhD9iGgJ08zAwJAf0rasgYAmJs6DfCn9OPTzGAxoADQn1+lrSEA8/P5rm7Sh/rwf5LOCQD9sQsA4HHqosBe+rBP0zkBoD8lbQkAwFwNu/pL+jCLdQD0pfVBFt0PWwHco46i1t1MrfvSWpt0zAhAX3pYNDIEYL7qKGYvVwgbBeBo7gEAOI/rtO9Pv0nHjAD0pfUIwBCAZfgi7dWXum63AwoAfbEDAOA8XqSPPq3baQABoC8lbTkFEFiSHnYEdLuwWgDoixEAgPP5PO19kk4JAH2xBgDgfOpLzU3aMgLAUUraMgIALM1f01Z9sSvpkADQF/cAAJzXV2lvkw4JAH2xBgDgvIZdfZe2SjokAPSlpC0BAFiim7T1UTokAPTFCADA+d2krS4XAgoA/XAPAMA4XqatLk8D/CD0oibE1udGaw/AUrW+66S7/tUIQD+cAQAwntYLAbsbBRAA+mH+H2A8pgHeIAD0o6Qt9wAAS9b6JaekMwJAP4wAAIxnCH9HAOiHNQAA42n9kmMKgHcqacsIALBkAsAbBIB+uAcAgMkIAP2wBgCAyQgA/ShpSwAAGE93fawA0A8jAADj0ce+QQDog3sAAMbV5Xn8LQkAfShpzwgAsGQCwBsEgD4YmgIYl7NW3iAA9EHDBBjXR2nLGgDuVNKWewAAxiUAcCdTAADjatnPdtnHCgB9MAUAMK5fpx0BgHcqacsIALB0LdcAfJcOCQB9aH0PgAAALJktgHf4ReiBKYBpldcKWL7Wfew2HRIA+lDS1tJHAOoP/2ZXnx4+vQ0AU+pyp5UA0Ae7AMbzbFfP46EPtNNlHysAtOcegHE82dXV4ROgpSEdsgiwvZL2ljYCUIf6r+PhD/TBNkDuZPj/vOpw/4sY8gf6IQBwJzsAzufpri4DwHsJAO2VtLWUewDKrj4LQH+GdEgAaM8UwHlcxr5+oE+mALiTKYDTbbJf+AfQIwGAO5W0tYQRgOcB6NOQTgkA7bkH4DQl+xEAgB5128cKAO2ZAjjNJgD96nahtQDQXklbcx8BeBoAHkwAaM8ugNO0vOMb4H26vAmwEgDacg/A6Rz3C/TMFAB3Kmlv6VcBA7RkESB3MvwPsGxDOiUAtGUHwOm+C0C/jABwp5K2lnAPQLcLbAAiAPAOpgBO920A+iUAcKfWAeD7zN9XAeiXAMCdStpawvz5TSxmBPo1pFMCQFvuATiPvwSABxEA2rIL4Dw+z3J+L8ByDOmYANBWSVtLGQGov48/BKAvXfexAkBbdgGcz01MBQB96XqrtQDQTg/3ACxt8dyzXX0RgD4YAeBOJe0NWZ6LCAFAH7reai0AtGP4fzwXu/pzANrqequ1ANCOHQDjutzVx7v6OgC8RQBop6StJdwD8D7Drja7+l1MCwDTG9KxX4RWTAFM5+ZQdZHgk0OV9LEQExjPJ9n/vLfSdT8rALTjHoDp1R/Gm0MBy3cZAeCdTAG0U9LWEu4BALiPkdZ7CADtuAcAYFwCwD0EgHbsAgAY10dpa0jHBIB2StoyAgCwYgJAO4amAMb1cdoZ0jkBoA33AACMr+Vaq+77WAGgjZL2hgAsW8uXre4PWxMA2jD8DzAu/ex7CABt2AEAMC6Hrb2HANBGSVtruAcAWLeStro/bE0AaMPQFABNCQBtGJoCGFdJW0M6JwC0UdKWewCApTPS+h4CQBvuAQAYlwDwHgJAG3YBAIxLAHgPAaCNkraMAABLV9KWAMCdJFOAcbWeah3SOQFgeu4BAKA5AWB6Je0NAVg2NwG+hwAwPcP/AONzE+B7CADTEwAAxucmwPcQAKZX0pZDgIClK2nLCAB3MgIAMC7HrR9BAJiehgkwrtb97CxGWgWA6ZW0ZQoAAAGgAfcAAIyrpK0hMyAATM8aAIBx6WePIABMr6StIQDLJgAcQQCYnoYJMK6StgQA3uIeAIDxedE6ggAwrZL2hgAsm5sAjyAATEsqBRhfy752Nv2sADAtAQBgfL9OOwIAdyppyyFAwBp8lHZm088KANMyAgBAFwSAabkHAGBcJW2ZAuBOJW2ZAgCWzovWkQSAabkHAGBcbgI8kgAwLWsAAMalnz2SADCtkraGACybAHAkAWBaGibAuEraGjITAsB03AMAQDcEgOmUtDcEYNlK2jIFwFsM/wOMT197JAFgOholwPjcBHgkAWA6JW05BAhYAzcBHkkAmE4PiwABls5NgEcSAKbTOgBsA7B8bgI8kgAwnZK2TAEA8DcCwHTcAwAwrpK2ZjXSKgBMxy4AgHG17md/yIwIANMpaWsIwLJ50XoAAWA6dgEAjEsAeAABYBo9PPyHACybAPAAAsA0StobArBsJW0NmREBYBpSKQBdEQCmIQAAjK+krSEzIgBMo6QthwABa+Bl6wEEgGnYAQAwPgeuPYAAMA33AACMz02ADyAATKOkLVMAwBq4CfABBIBpGJYCGJ+bAB9AAJiGhSkAdEUAmEZJW0MAlq2krdmttRIApmEXAMC43AT4QALA+NwDADA+U60PJACMr6S9IQDLJgA8kAAwPo0SYHz62gcSAManUQKMr6StITMjAIyvpC2HAAHwFgFgfHYAAIyvpK0hMyMAjM89AADjM936QALA+EraMgUArIEj1x9IABifRgkwPjcBPpAAMD7DUgDjcxPgAwkA4ytpawjA8rkJ8IEEgPHZBQBAdwSAcbkHAGB8JW3NcreVADCukvaGACxbSVuzuwmwEgDGZfgfYPksAuQtrQPAEIDls9vqEQSAcZW05RAgYA0EgEcQAMZlCgBgfCVtDZkhAWBc7gEAGJ+XrUcQAMZV0pYpAGANrLd6BAFgXK3vAQBYg5anAFbWAPAWqRRg+QQA3lLS1hCA5XMT4CMIAOOyMAVgfG4CfAQBYDzuAQCYhpsAH0EAGE9Je0MAls1I6yMJAOPRKAHG57yVRxIAxmMHAMD4Stqa5U2AlQAwnpK2HAIEMD6LAHmLKQCA8ZW0NWSmBIDxmJcCGJ+bAB9JABhPSVumAIA1EAAeSQAYj3sAAMZnuvWRBIDx2AUAMD597SMJAOMpaWsIwPK5CfCRBIDxGJYCWD4BgL/jHgCAaXycdobMmAAwjpL2hgAsX8sF17N9+68EgHEY/geYRsv+drbHAFcCwDisSgUYn5etEwgA4yhpyyFAwBo4cfUEAsA4pFKA8ZW0ZQqAt0ilAMtnESBvKWlr1qkU4EglbQ2ZMQFgHK3vAZh1KgU4kouATiAALNMQgOUTAE4gAIyj5clU1RCA5RMATiAAADBXAsAJBAAA5qr1TYBDZkwAWKYhAHAPAQCAuXIT4AkEgGVyEiGwBm4CPIEAsEwCALAGbgI8gQAwju/TlgAALJ0dACcSAMbRumEIAMDSPUlbrV/0TiYAjKP10FAJwLK1ftGZ/bXrAsA4Wo8AtN4bCzC21iMAsycAjGNIW34wgKX7bdoaMnMCwDiGtFUDgHUAwJK1ftEZMnMCwDh6WB1qFABYqh5ecuwC4E4v054AACxVD/1bD/08napbRH5sWNcBWKbav7XsX2e/BbAyAjCeIW1ZBwAsUdnVJm19mwUQAMbTuoHUh79pAGBpNmlvEcP/AsB4emggzwOwLJ+mvZssgAAwnl4WApoGAJaipI8RgCFwj/rgbb0QsNZlAJbhRdr3qYtYAMj4rtO+sW4DMH8l7fvTWjdZCFMA4+phpWhJH0NmAKe4TB++Chxhkz4S63UA5qukj760lt1VHKWXdQC1ngZgnl6kj350G3iA6/TTcO0IAObmIn30obWuAg9wkX4a72UA5qO+tGzTTx9qJJUHqQ24l8ZbpyNKAObhs/TVf8KDXaefRnwdgP7Vt+1e+s1aV4FHuEhfDflZAPpV0tfQf61N4BF62g2gMQO926av/nKbBXIQ0DRe7eqL9OUq1gMA/anz/iV9uQmcYJO+Eu1tqrU1EOjF8/TXT9YqgRNdp7+GfR2A9p6nv/6x1lXgDHpb1aqBAz14nj77xlqbwJn0thhQCABaep4++8RaN4Ezuky/jf061gQA0+npoJ+76iJwRj1uCXy9trHgBRhXSZ9rot7sC+HsLtN/w98E4Pw26W+f/111ERhBbxdcvKueB+B8ap/Se79X6yYwoovM4wdhG1MCwGme7OqbzKPPq1UCI7vOfH4gejydC+hbHe3sfaHfm3UVmMAm8/rB2Ma8GPB+9cH/PH0veH5XH1cCE/k88/oBeT0IlAD8ZK4P/tu6CEyo922B76ur2DEAa7fJ/mVmzn3ZTaCBXo8IfkhtIwzAmmyyf9uvP/s9903HVA0uJSvzQejFl9kHgSWo1x+/3NXXh8/h8AnMUx2pfHKo32b/8F/SqaF/yn4EY1UEgH7UH6a6TaZkuWoIePVa/XD4BPrx0eGz9knlUEs+IvzFrv6QFRIA+rKJ63kBpjLs6neHz9X5eejJkH0o2wSAsdWH///LSv0s9OYyVqMCjO3PWfnaJFMAfVrDegCAVv6yq2dZOQGgXyX7ELDkxTcAU6tv/b8JpgA6NmSlK1MBRjLs6vfhP1kE2Le6OKVulfunAHCKISte8X8XAaB//xo7AwBOMcTD/y0CwDzcRAgAeIx62Nh/y4q3+72LADAfNxECAB6iPvzrm7+jyO8gAMzLTYQAgGMMu/qv8eb/TgLA/NxECAC4zxBz/u8lAMzTTewOALhLHe6vc/5DuJcAMF91d8C32YeAXwaAr7Lf5///w3s5CXD+SvY3CJYArFc92/8yHM0IwPzVVa5/zT4A/JcArEvtA//nrj4PDyIALEP9Afi/sTgQWJc6318X+92EBzMFsDxPdvVlTAkAy1Zv9LvM/gWIRzACsDx18UudEvh19mEAYEmG7Bf6/e9d/Vt4NAFgmWoirqthv8s+BLhSGFiC+tb/3+Nwn7MQAJatzo99sat/2NU/BmCehnjrP7ufhaWrowHPdvVx9lMDAHNR+68/Zd9/3YSzMgKwHvUH6f/EtADQv9pf/a/sh/tvwijsAlivi109j90CQF9eZH+ozxBGJQBwEUEAaKu+8dcFfi/iwT8ZAYBbm+zDwKcBmMbtg//z2M8/OQGAN5X8FARKAM7v6+wP8bkJzQgA3GeTfRj4bYQB4DT1oV/PJ3kRb/tdEAA41ib7MFB3EHwSgPvVh3y9svyrQw2hKwIAj1GyDwS1BAKgun3g1wPIvjp8etPvmADAOdQzBZ4canP49Sdx1gAsVT1PZMj+IV8/bw6fHvgzIgAwpttgUJX8tI6gBJiDIfuH+m29fO1rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAPnwQ6FfZ1ebw+dHhs9aHh3rdq0MNh89vd/Xy8OuXgfHUtlh29eRQt231w9zdVof81F6/zU9t9OXhfwNYndpRPtvVl7v6flc/nqm+P/w7L7LvmOFUm10939V1zttWv9nV1a6e5u3gALAotw/92pH+OFHVTvYiwgAPs9nV5znvA/99dRtcARZjk2kf+u+qq8P3Au9ykfZtdZt9Wy0BmKlN+njwv1nXEQT4SR2Zep5p3/YfElpLAGaipM8Hv86VN9X59236b6vPo60CHbt9k+q9M72rc2VdSuYRUl+vbawRADq0yTzepO7rXEtYg7oQtcfh/mPrKtoq0Inaoc6l83xfPQ9LVUeorjOv9viu2mZ/DgFAE7VDrVuX5tJpHltfxr7spakPy23m1Q6PqecBmFjJMjvU29rGMOtSfJp5D/m/rz4LwERKlv3wFwKWY0nTU/fVVYxaASMrWcfDXwiYv+eZV1s7teqpl0IAMIqSdT38hYD5ep55tbFz1ZcBOLOSdT78hYD5+TTzalvnrqsAnEkdVtxmXp3gGGWItX8ly17wd2w9D8AZ1FXGc+n4xq6r0KsSQfX1ehqAE6xlFfVD6lno0RLPpDil6khICcAjlBhO1bHOw/PMqw1NVdcBeIRt5tXZ6VjXqWRebWfqMmIFPMhF5tXJ6VjX6zrzajdTlxEr4Ggl3v6P7VjtCmjrIvNqM63qOgBHeJF5dW4t6zK0tM282kvL2gTgHiXz6tRal1GAdi4yr7bSuq7Dav088H6fxz3jD/HLXf37rm7C1Fzb/DBlV1/vagjAG0rm9UbTSxkFmN5F5tVGeqnrsEo/C9xvEx6jPvztCJjWH8NjbGJHAHCHbeb1NtNTfR+mUqeo5tQ2eqvLsDpGALjPJt4MTlFHATZhCkZbTmP0ZIUEAO5zEU7l8pVp/DacQlhdIQGA++hUT/dpGNsmRqrOQVhdGQGAd6lzqiWcqr5Z2UI5rk04h38OqyIA8C6b9OfVrv6yq9/v6uNdfXCo+vXvdvVF+tzPvAlj6nGkqu6t/9OufrOrX+entlp//Ydd/TX9KbF1Fdj5Kv2sUK6r6S9zfOd02ej7fFddhTH19He9zfGBr6S/I7YvAqzeN+mjQ9rmcUPoJf1sYdyGsWzSx99xrceeQng50fd3TH0eYNVqJ9ZDZ7TNaesQSvoJAYZWx1G3//Xw9/tlTtPL7+OrAKu2SR+d0San22Tc7/HYshBwHPWNtfXf7TbnCXi9/F6AFavbgVp3RFc5nxfJJN/zfXURxtDDWpWLnEcNEd8nk3zP9xUrYRcAd+nhbfXPOZ8e5jVNAYzjV2lryD5gnsPtLpfWSlgFAYAevcx5t/PVf99N2iphDB+nrXM/sF+kPWF1JQQA7lLS1tc5v2/TVus31aVq/ef6Muc17Oq7tCUArIQAQI/O3amO9e+kvdYPqzHa1TZtlbAKAgDA473K+bUeAWAlBACAvnwUmIAAQI/GGNYtgfMrOb/W0xpDWAUBgLuMMaz5EGPcStZ6a+MPYQyth8s3OS+3RzIZAYC7tA4AtQM851tQSfurTlv/mTKOT3NeT9OetroSAgB3GdJWffg/y/ls0t4QxtB6d8cm550GeJ72hrAKAgB36eEN4I85T8daolNdsh7a6lXO4yLt16q8ihEAWLWS9ueR17rO6a4z7vd4bJUwhl5u0Tt1xKqkj5srbwKsXg+XktS6yuN8ePhne/g9fB/G0sPFVbf12BBQ0s+11VcBVu86fXRItbZ52Bt0XUT4TYPv8111E8ZSg14vf8+1PsvD2moNDb2E7R9z3rU3wEzVG/R66ZRu6yr3L+ir/9+LDr7PN+syjGlIX3/f2+zXnZR3fL81tFykr5B9W7YgrsgHgbttcp45+DHURUov89OCpdpplfR7icnvYhRgTDWs/jF9Gl6r2j5L+n3I1p+lXwdYvdpZ9TQ0Odcy/z++ntYBzLmuwqrYBsi73L5lc5oxrjbm793E1rVz0FZXRgDgPl+EU30Vxiasnoe2CvyNaYDTyvD/dDaZV9vora7C6hgB4D71zcoowON5o5rOTUwDnMLPOfCWTeb1JtNTlTCly8yrffRS2wC8w3Xm1aH1UDdhaqasHlcXAXiHTebVofVQm9DCZebVTlrXNgDvcZ15dWwt6ya0YhTgYXURgPfYZF4dW8sqoaXLzKu9tKptAI7U4/0AvdVVaK2OAmwzr3bToi4CcCTDq/fXNt7+e+F44PvrKgAPpGN9d12EnnyZebWfqWobQRV4JFMBb9dV6I2pgLvrIgCPpGP9+9qm36uI126TebWlsesyACcqsR7gx8OfQQk9e5Z5tamx6psAnMkm8+oAx6inYQ7WPm21jaAKnNma366ehTl5kXm1Lw9/oHuXmVeHeI66DHNT12nUYfA5tTMPf6B7l5lXx+jhv041BKxle+A2Hv7ARNYwHXARlmDpawK28fAHJvYky9wiWFf7b8KSXGZebfDYuomHP9BIybJCwDfRoS5V3cWxzbza4331eQA6cJl5dZ461HUqmf/iwDpCZUsq0JW5TglsY8h/bS4zz8Ot6qJGJ1EC3brMPDrX7w/fqw51nUrmc17ANkIqMBMl/XauHvy8bpP9Yrpe26pDqIBZKtkHgW366Ewv48HP3Ta7+ip9PPjrOoX64NdWgdmrHdlF2rxp1f+mzpRjlbQJrTWg1gCyCcBClewfyDcZryO9Ofw3SuDxNtnvDnmZ8drqi+zDsYDKaD4I9Kd2enX3wObwWXb1yfH/eF7t6ofsH/gvX6tXgfMqebutfnT8P/6fbfK7/NRGbw6fMDoBgDmpwaDkp7eicvh89UYNgbZKfmqfH+anNju89nnbXgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABW6D8Ah6KDpv+/vj0AAAAASUVORK5CYII=\"","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { ROUTES } from 'config/constants';\r\n\r\nimport Header from 'containers/App/components/Header/Header';\r\n\r\nimport { ReactComponent as CrossIcon } from 'assets/images/general/close.svg';\r\n\r\nimport './Layout.scss';\r\n\r\nconst Layout = ({ children, profile }) => {\r\n const history = useHistory();\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n const [isOpenOnceSessionTimeout, setIsOpenOnceSessionTimeout] = useState(false);\r\n const { segment } = useSelector(state => ({ segment: state.common.segment }));\r\n const segmentQuery = segment ? `?segment=${segment}` : '';\r\n\r\n useEffect(() => {\r\n const storageKey = 'sk-authToken';\r\n\r\n const handleStorageChange = (event) => {\r\n if (event.key === storageKey) {\r\n if (window.location.pathname !== ROUTES.SIGN_UP || window.location.pathname !== ROUTES.SIGN_IN) {\r\n setIsOpenOnceSessionTimeout(true);\r\n }\r\n }\r\n };\r\n\r\n window.addEventListener('storage', handleStorageChange);\r\n\r\n return () => {\r\n window.removeEventListener('storage', handleStorageChange);\r\n };\r\n }, []);\r\n\r\n const triggerPageRedirect = () => {\r\n setIsOpenOnceSessionTimeout(false);\r\n\r\n if (\r\n (window.location.pathname === ROUTES.SINGPASS) ||\r\n (window.location.pathname === ROUTES.DOCUMENTSPROOF) ||\r\n (window.location.pathname === ROUTES.ORDER_SUMMARY) ||\r\n (window.location.pathname === ROUTES.MYINFORMATION) ||\r\n (window.location.pathname === ROUTES.SINGPASS_MANUALL_FORM) ||\r\n (window.location.pathname === ROUTES.SUBSCRIPTIONS)\r\n ) {\r\n history.push({ pathname: ROUTES.HOME + segmentQuery });\r\n }\r\n\r\n window.location.reload();\r\n };\r\n\r\n return (\r\n
\r\n {(isMobile && window.location.pathname === ROUTES.SEARCH) ? null :
}\r\n {children}\r\n \r\n \r\n Session Timeout\r\n\r\n \r\n \r\n\r\n \r\n

Your session has been time out! Please login again!

\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nLayout.propTypes = {\r\n children: PropTypes.any.isRequired,\r\n profile: PropTypes.object\r\n};\r\n\r\nexport default Layout;\r\n","export default __webpack_public_path__ + \"static/media/SamsungCinchLogo.80ff2421.png\";","export default __webpack_public_path__ + \"static/media/footer_icon-instagram.5c001b3a.png\";","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Link } from 'react-router-dom';\r\nimport { Button } from '@mui/material';\r\n\r\nimport { ROUTES } from 'config/constants';\r\n\r\nimport SamsungCinchLogo from 'assets/images/SamsungCinchLogo.png';\r\nimport FacebookIcon from 'assets/images/footer_icon-facebook.png';\r\nimport InstagramIcon from 'assets/images/footer_icon-instagram.png';\r\nimport LinkedInIcon from 'assets/images/footer_icon-linkedin.png';\r\n\r\nimport './Footer.scss';\r\n\r\nexport default function Footer() {\r\n const currentRoute = window.location.pathname.split('/')[1];\r\n const noShowPages = [\r\n 'sign-up',\r\n 'sign-in',\r\n 'checkout',\r\n 'forgot-password'\r\n ];\r\n\r\n const footerClass = () => {\r\n let className = 'footer';\r\n\r\n switch (currentRoute) {\r\n case 'product':\r\n className += ' marginAlways';\r\n break;\r\n case 'sign-in':\r\n case 'sign-up':\r\n className += ' marginOnMobile';\r\n break;\r\n case 'checkout':\r\n className += ' marginCheckout';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return className;\r\n };\r\n\r\n if (noShowPages.includes(currentRoute)) return null;\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst ScrollToID = ({ id, name }) => {\r\n const scrollToElement = () => {\r\n const element = document.querySelector(`#${id}`);\r\n\r\n if (element) {\r\n const offsetVal = id === 'faq' ? 3.5 : 5.5;\r\n const offset = offsetVal * parseFloat(getComputedStyle(document.documentElement).fontSize);\r\n const elementPosition = element.getBoundingClientRect().top + window.pageYOffset - offset;\r\n\r\n window.scrollTo({\r\n top: elementPosition,\r\n behavior: 'smooth'\r\n });\r\n } else {\r\n setTimeout(scrollToElement, 1000);\r\n }\r\n };\r\n\r\n return (\r\n \r\n {name}\r\n \r\n );\r\n};\r\n\r\nScrollToID.propTypes = {\r\n id: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired\r\n};\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import { lazy } from 'react';\r\n\r\nexport const HomeContainer = lazy(() => import('containers/Home/HomeContainer'));\r\nexport const PageNotFoundContainer = lazy(() => import('containers/PageNotFound/PageNotFoundContainer'));\r\nexport const ProductContainer = lazy(() => import('containers/Product/ProductContainer'));\r\nexport const OrderedProductContainer = lazy(() => import('containers/OrderedProduct/OrderedProductContainer'));\r\nexport const CartContainer = lazy(() => import('containers/Cart/CartContainer'));\r\nexport const OrderSummaryContainer = lazy(() => import('containers/OrderSummary/OrderSummaryContainer'));\r\nexport const AboutUsContainer = lazy(() => import('containers/AboutUs/AboutUsContainer'));\r\nexport const TermsAndConditionsContainer = lazy(() => import('containers/TermsAndConditions/TermsAndConditionsContainer'));\r\nexport const FAQContainer = lazy(() => import('containers/FAQ/FAQContainer'));\r\nexport const PrivacyPolicyContainer = lazy(() => import('containers/PrivacyPolicy/PrivacyPolicyContainer'));\r\nexport const HowItWorksContainer = lazy(() => import('containers/HowItWorks/HowItWorksContainer'));\r\nexport const MyAccountContainer = lazy(() => import('containers/MyAccount/MyAccountContainer'));\r\nexport const SingPassContainer = lazy(() => import('containers/SingPass/SingPassContainer'));\r\nexport const SingpassManualFormContainer = lazy(() => import('containers/SingpassManualForm/SingpassManualFormContainer'));\r\nexport const SingpassResultContainer = lazy(() => import('containers/SingpassResult/SingpassResultContainer'));\r\nexport const MyInformationContainer = lazy(() => import('containers/MyInformation/MyInformationContainer'));\r\nexport const OrdersContainer = lazy(() => import('containers/Orders/OrdersContainer'));\r\nexport const CheckoutContainer = lazy(() => import('containers/Checkout/CheckoutContainer'));\r\nexport const KnoxDisclaimerContainer = lazy(() => import('containers/KnoxDisclaimer/KnoxDisclaimerContainer'));\r\nexport const PurchaseSalesRestrictionsContainer = lazy(() => import('containers/PurchaseSalesRestrictions/PurchaseSalesRestrictionsContainer'));\r\nexport const SubscriptionsContainer = lazy(() => import('containers/Subscriptions/SubscriptionsContainer'));\r\nexport const OtpVerificationContainer = lazy(() => import('containers/OtpVerification/OtpVerificationContainer'));\r\nexport const SignInContainer = lazy(() => import('containers/SignIn/SignInContainer'));\r\nexport const SignUpContainer = lazy(() => import('containers/SignUp/SignUpContainer'));\r\nexport const ResetPasswordContainer = lazy(() => import('containers/ResetPassword/ResetPasswordContainer'));\r\nexport const ReferAndEarnContainer = lazy(() => import('containers/ReferAndEarn/ReferAndEarnContainer'));\r\nexport const BuyingOrderSummaryContainer = lazy(() => import('containers/BuyingOrderSummary/BuyingOrderSummaryContainer'));\r\nexport const PaymentInfoContainer = lazy(() => import('containers/PaymentInfo/PaymentInfoContainer'));\r\nexport const ShippingInfoContainer = lazy(() => import('containers/ShippingInfo/ShippingInfoContainer'));\r\nexport const OrderSummaryScreenConfirmationContainer = lazy(() => import('containers/OrderSummaryConfirmation/OrderSummaryConfirmationContainer'));\r\nexport const ProductsContainer = lazy(() => import('containers/Products/ProductsContainer'));\r\nexport const LuckyDrawContainer = lazy(() => import('containers/LuckyDraw/LuckyDrawContainer'));\r\nexport const TradeInCalculatorContainer = lazy(() => import('containers/TradeInCalculator/TradeInCalculatorContainer'));\r\nexport const NafaContainer = lazy(() => import('containers/Nafa/NafaContainer'));\r\nexport const WaitListContainer = lazy(() => import('containers/WaitList/WaitListContainer'));\r\nexport const ContactUsContainer = lazy(() => import('containers/ContactUs/ContactUsContainer'));\r\nexport const Q6B6Container = lazy(() => import('containers/Q6B6/Q6B6Container'));\r\nexport const EAWContainer = lazy(() => import('containers/Q6B6/EAWContainer'));\r\nexport const EAWTNCContainer = lazy(() => import('containers/Q6B6/EAWTNCContainer'));\r\nexport const InvoiceContainer = lazy(() => import('containers/Invoice/InvoiceContainer'));\r\nexport const SocialAuthHandlerContainer = lazy(() => import('containers/SocialAuthHandler/SocialAuthHandlerContainer'));\r\nexport const ReviewOrderContainer = lazy(() => import('containers/ReviewOrder/ReviewOrderContainer'));\r\nexport const SearchContainer = lazy(() => import('containers/SearchContainer/SearchContainer'));\r\nexport const DealsContainer = lazy(() => import('containers/Deals/DealsContainer'));\r\nexport const UnpackedContainer = lazy(() => import('containers/Unpacked/UnpackedContainer'));\r\n","import React, { useState, useMemo, Suspense } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Switch, Route, useHistory } from 'react-router-dom';\r\nimport { QueryParamProvider } from 'use-query-params';\r\n\r\nimport { ROUTES, PDP_FLIP6, REDIRECT_ROUTES_OLD_Q6B6_TO_PDP_FLIP6 } from 'config/constants';\r\n\r\nimport CustomLinearProgress from 'containers/App/components/Loading/CustomLinearProgress';\r\nimport { AuthedRoute } from './components/RouteWrappers';\r\nimport Layout from '../Layout/Layout';\r\nimport CheckoutContainer from 'containers/Checkout/CheckoutContainer';\r\nimport Footer from '../Footer/Footer.js';\r\n\r\nimport {\r\n HomeContainer,\r\n ProductsContainer,\r\n PageNotFoundContainer,\r\n ProductContainer,\r\n OrderedProductContainer,\r\n CartContainer,\r\n OrderSummaryContainer,\r\n AboutUsContainer,\r\n TermsAndConditionsContainer,\r\n FAQContainer,\r\n PrivacyPolicyContainer,\r\n SingPassContainer,\r\n MyInformationContainer,\r\n OrdersContainer,\r\n KnoxDisclaimerContainer,\r\n SubscriptionsContainer,\r\n SignInContainer,\r\n SignUpContainer,\r\n OtpVerificationContainer,\r\n ResetPasswordContainer,\r\n ReferAndEarnContainer,\r\n BuyingOrderSummaryContainer,\r\n PaymentInfoContainer,\r\n ShippingInfoContainer,\r\n OrderSummaryScreenConfirmationContainer,\r\n LuckyDrawContainer,\r\n TradeInCalculatorContainer,\r\n NafaContainer,\r\n WaitListContainer,\r\n ContactUsContainer,\r\n Q6B6Container,\r\n InvoiceContainer,\r\n SocialAuthHandlerContainer,\r\n SearchContainer,\r\n EAWContainer,\r\n EAWTNCContainer,\r\n ReviewOrderContainer,\r\n DealsContainer,\r\n UnpackedContainer\r\n} from './config/routes';\r\n\r\nconst AppRouter = ({ isAuthed, profile }) => {\r\n const [sidePanelOpen] = useState(false);\r\n const isMobile = window.matchMedia('(max-width: 1024px)').matches;\r\n const history = useHistory();\r\n\r\n const layoutProps = useMemo(() => ({\r\n profile,\r\n sidePanelOpen\r\n }), [sidePanelOpen, profile]);\r\n\r\n const currentPath = window.location.pathname;\r\n\r\n if (REDIRECT_ROUTES_OLD_Q6B6_TO_PDP_FLIP6[currentPath]) {\r\n // Redirect to the destination URL\r\n history.push(REDIRECT_ROUTES_OLD_Q6B6_TO_PDP_FLIP6[currentPath]);\r\n }\r\n\r\n return (\r\n }>\r\n \r\n \r\n \r\n (\r\n \r\n )} />\r\n (\r\n \r\n )} />\r\n (\r\n \r\n )} />\r\n (\r\n \r\n )} />\r\n \r\n \r\n \r\n \r\n (\r\n \r\n )}\r\n isAuthed={isAuthed} />\r\n (\r\n \r\n )}\r\n isAuthed={isAuthed} />\r\n (\r\n \r\n )}\r\n isAuthed={isAuthed} />\r\n (\r\n \r\n )}\r\n isAuthed={isAuthed} />\r\n (\r\n \r\n )}\r\n isAuthed={isAuthed} />\r\n (\r\n \r\n )}\r\n isAuthed={isAuthed} />\r\n (\r\n \r\n )}\r\n isAuthed={isAuthed} />\r\n \r\n \r\n \r\n \r\n \r\n (\r\n \r\n )}\r\n isAuthed={isAuthed} />\r\n (\r\n \r\n )}\r\n isAuthed={isAuthed} />\r\n (\r\n \r\n )}\r\n isAuthed={isAuthed} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n window.location.href = PDP_FLIP6;\r\n\r\n return null;\r\n }}/>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {(isMobile && window.location.pathname === ROUTES.SEARCH) ? null :