{"version":3,"sources":["components/Header.js","components/Footer.js","services/ValidateInput.js","components/Login.js","components/RenewToken.js","components/LoginCheck.js","components/widgets/MyPageCard.js","services/SubscriptionClass.js","components/widgets/StripeWidget.js","components/widgets/StrexWidget.js","images/mc_symbol.svg","images/Visa_2021.svg","images/strexlogo.jpg","images/vipps-logo.jpg","components/widgets/PaymentCard.js","components/widgets/BookCard.js","components/widgets/utils.js","components/widgets/SubscriptionCard.js","components/MyPage.js","components/Books.js","services/ClientService.js","components/ForgottenPassword.js","components/ResetPassword.js","components/TerminateSubscripton.js","components/YesToNewsletter.js","images/loading.gif","components/VippsSuccess.js","components/Receipt.js","components/Spesialtilbud.js","App.js","index.js","services/UserService.js","services/AuthService.js"],"names":["Header","h","o","a","r","topBanner","window","document","hj","q","push","arguments","_hjSettings","hjid","hjsv","getElementsByTagName","createElement","async","src","appendChild","useState","authenticated","setAuthenticated","useEffect","currentLocalTime","Date","toLocaleTimeString","currentToken","AuthService","getCurrentToken","console","log","expiration","logout","history","refreshAccessToken","refresh_token","then","response","error","useHistory","handleClick","linkReference","location","href","reload","className","Container","Navbar","expand","alt","Button","variant","onClick","Footer","ValidateInput","msisdn","password","submitted","isError","message","length","Login","setToken","callback","Cookies","setMsisdn","username","setUserName","setPassword","loginCredError","setloginCredError","submitState","setSubmitState","handleChange","e","name","currentTarget","value","id","class","role","style","cursor","color","sessionStorage","setItem","Form","onSubmit","preventDefault","stateUpdate","login","UserService","getSubscription","access_token","subscription","replace","catch","FormGroup","FormControl","placeholder","onChange","type","RenewToken","LoginCheck","to","MyPageCard","title","currentUser","setCurrentUser","email","setEmail","redirect","setRedirect","setCurrentPassword","newPassword","setNewPassword","smsCode","setSmsCode","confirmNewPassword","setConfirmNewPassword","emailExpand","setEmailExpand","passwordExpand","setPasswordExpand","firstname","setFirstname","lastname","setLastname","smsCodeSent","setSmsCodeSent","showMessage","messageType","userMessageEmail","setUserMessageEmail","userMessagePassword","setUserMessagePassword","userMessageName","setUserMessageName","toggle","toggleReference","msisdn_string","mobile","substring","Card","Body","Text","as","Row","Col","lg","xs","md","Check","label","checked","newsletter","userData","changeUser","ListGroup","Item","InputGroup","userdata","getUserFromToken","user","userGetLog","data","errorMsg","includes","JSON","stringify","code","changePassword","readOnly","sendSMSCode","subscriptions","price","priceMonths","concurrentStreams","profiles","state","main","campaign","campaignExpiry","slogan","saleprice","nameLarge","text1","text2","text3","text4","text5","subscriptionState","exceptionProduct","campaignPosition","startDate","endDate","season","seasonTagLine","allowedProduct","renewButton","renewCondition","correspond","spesialtilbud","textbelowbutton","welcomeBack","plainName","seasonTagLineTwo","seasonTagLineThree","seasonTagLineFour","expirycheck","selectedName","salepriceTag","stripePromise","loadStripe","process","StripeChild","currentProduct","currentState","userMessage","setUserMessage","subState","setSubState","productID","setProductId","product_id","elements","useElements","stripe","useStripe","stripeSetupIntent","clientSecret","client_secret","cardElement","getElement","CardNumberElement","confirmCardSetup","payment_method","card","result","paymentSwitchLogging","status","setupIntent","stripePaymentMethod","payment_type","StripeWidget","setCurrentProduct","setCurrentState","StrexWidget","currProduct","Title","changeStrexProduct","VippsWidget","lazy","PaymentCard","setSubscription","currentDate","campaignAvsluttProduct","filter","subscriptionobject","expiry_date","getTime","campaignAvsluttStartDate","campaignAvsluttEndDate","campaignAvsluttExceptionProductt","split","toString","paymentExpand","setPaymentExpand","orderExpand","setOrderExpand","giftcardExpand","setGiftcardExpand","terminateSubExpand","setTerminateSubExpand","setCampaignExpiry","selectedID","setSelectedID","popupChangeSub","setPopupChangeSub","setChosenProd","disableMode","setDisableMode","setChangeSubState","setPopupForny","setPopupRenewSub","setPopupChangeSubKvitering","setPopupFornyKvitering","offer601Widget","handleCloseM","vippsData","campaign_code","redirect_url","origin","dateString","expiryDateObje","err","formatDateString","string","Modal","show","onHide","disabled","closeButton","vippsIntent","vipps","reference","confirmation_url","dataLayer","event","changeStripeProduct","strexlogo","visalogo","msclogo","vippslogo","renderSwitch","fontSize","next_billing_date","Tabs","defaultActiveKey","Tab","eventKey","setUserState","currState","fallback","currentProductId","display","width","textAlign","margin","fontWeight","String","pathname","BookCard","books","setBooks","booksReady","setBooksReady","getBooks","bookshelf","reversedArray","reverse","slice","map","book","Image","image","thumbnail","author","link","downloadBook","download_url","download","isbn","goToPurchasedBooks","SubscriptionCard","setTopBanner","expiryDate","setExpiryDate","newSubscriptionID","setNewSubscriptionID","popupChangeSubKvitering","popupForny","popupRenewSub","popupFornyKvitering","setProductID","setCampaign","setCampaignPrice","changeSubState","subname","setSubName","setShowPopup","popupMigrationFailed","setPopUpMsg","campaignState","fornyKnapp","forEach","subscriptionelement","campaignProduct","getItem","winbackMainCampaignProduct","handleFornyKampanje","handleClose","handleRadioChange","handleChangeSub","handleActivateSubscription","changeInvoiceProduct","activateSubscription","baseProducts","sub","campaignProducts","subRenewalPOST","sub_id","indexOf","resumeSubscription","key","campaignExceptionProduct","campaignExceptionProductt","campaignAllowedProduct","campaignAllowedProductt","float","lineHeight","Radio","backgroundColor","top","minWidth","MyPage","userReady","setUserReady","date_joined","subscriptionReady","setSubscriptionReady","marginTop","target","clear","Books","useLocation","booksRendered","setBooksRendered","booksCopy","Control","searchString","toLowerCase","searchResult","join","API_URL","options","method","headers","qs","grant_type","client_id","url","axios","ForgottenPassword","isDisabled","setIsDisabled","confirmPassword","setConfirmPassword","step","setStep","accessToken","setAccessToken","smsCode1","setSmsCode1","smsCode2","setSmsCode2","smsCode3","setSmsCode3","smsCode4","setSmsCode4","sms1","useRef","sms2","sms3","sms4","pwdRef","backToLogin","handleChangeSms","handleFocus","current","focus","select","handleFocuss","ClientService","getAccessToken","sendSMS","smsCodeConcatinated","encryptedUserPass","getEncryptedCredentials","ref","onKeyUp","onFocus","ResetPassword","usernameParam","TerminateSubscripton","otherText","setOtherText","otherTextKomplisert","setOtherTextKomplisert","checkedRadio","setCheckedRadio","checkedRadioKomplisert","setCheckedRadioKomplisert","showPopup","popMsg","handleRadioChangeKomplisert","parseInt","getElementById","goToMyPage","comment","commentK","comments","terminateSubscription","cancelSubscriptionLog","YesToNewsletter","VippsSuccess","vippsMessage","setVippsMessage","vippsLoading","setVippsLoading","URLSearchParams","search","get","delayTimeout","setTimeout","vippsSubscription","clearTimeout","loadingImage","Receipt","recieptList","setRecieptList","showDetails","setShowDetails","receiptDetails","setReceiptDetails","getReceiptList","receipt","val","receipt_number","payment_date","vat","total","Spesialtilbud","App","exact","path","component","ReactDOM","render","StrictMode","Authorization","fabel_id","utm_campaign","transaction_id","coupon","produckt_id","fromandto","responseText","currUser","Params","text","product","param","page","today","setMinutes","getMinutes","updatedLocalTime","maxTokenExpireTime","responseWithExpiry","maxtime","removeItem","refreshToken","parse","this","pass"],"mappings":"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","file":"static/js/main.35362984.chunk.js","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport \"../styles/header.css\";\nimport { Container, Navbar, Button } from \"react-bootstrap\";\nimport AuthService from \"../services/AuthService\";\nconst Header = ({ topBanner }) => {\n (function (h, o, t, j, a, r) {\n h.hj =\n h.hj ||\n function () {\n (h.hj.q = h.hj.q || []).push(arguments);\n };\n h._hjSettings = { hjid: 2838386, hjsv: 6 };\n a = o.getElementsByTagName(\"head\")[0];\n r = o.createElement(\"script\");\n r.async = 1;\n r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;\n a.appendChild(r);\n })(window, document, \"https://static.hotjar.com/c/hotjar-\", \".js?sv=\");\n\n const [authenticated, setAuthenticated] = useState(false);\n\n useEffect(() => {\n let today = new Date();\n let currentLocalTime = today.toLocaleTimeString();\n\n const currentToken = AuthService.getCurrentToken();\n console.log(\n \"currentToken Expiration\",\n currentToken.expiration,\n currentLocalTime,\n );\n if (currentToken.expiration > currentToken.expiration) {\n console.log(\"token expired\");\n AuthService.logout();\n history.push(\"/logg-inn\");\n } else if (currentLocalTime > currentToken.expiration) {\n AuthService.refreshAccessToken(currentToken.refresh_token).then(\n (response) => {\n console.log(response);\n setAuthenticated(true);\n history.push(\"/min-side\");\n //window.location.reload();\n },\n (error) => {\n console.log(error);\n history.push(\"/logg-inn\");\n },\n );\n } else {\n console.log(\"token is active\");\n }\n if (currentToken) {\n setAuthenticated(true);\n }\n }, []);\n\n let history = useHistory();\n const handleClick = (linkReference) => {\n switch (linkReference) {\n case \"kundeservice\":\n window.location.href = \"https://fabel.no/kundeservice/\";\n break;\n case \"registrering\":\n window.location.href =\n \"https://fabel.no/#frontpage-subscriptions-section\";\n break;\n case \"log-out\":\n AuthService.logout();\n //window.location.href = '/'\n //window.location.replace(\n // process.env.REACT_APP_FABEL_WP_URL + \"SSO/sso_login_v2.php?url=\" + process.env.REACT_APP_FABEL_WP_URL\n //);\n window.location.href = \"/logg-inn\";\n //history.push(\"logg-inn\");\n break;\n case \"min-side\":\n window.location.reload();\n break;\n default:\n break;\n }\n };\n return (\n <>\n {topBanner ?
{topBanner}
: null}\n \n \n
\n \n \n \n
\n
\n
\n
\n handleClick(\"kundeservice\")}\n >\n KUNDESERVICE\n \n {authenticated ? (\n handleClick(\"log-out\")}\n >\n LOGG UT\n \n ) : (\n handleClick(\"registrering\")}\n >\n REGISTRERING\n \n )}\n
\n
\n
\n
\n \n );\n};\n\nexport default Header;\n","import React from 'react'\nimport '../styles/footer.css'\n\nconst Footer = () => {\n return (\n\t\t\n\t\t\n\t\t\n )\n}\n\nexport default Footer","const ValidateInput = ( msisdn, password) => {\n let stateUpdate = {\n \n submitted: true,\n isError: true,\n message: \"Begge felt må være fylt ut\",\n \n }\n if (msisdn === \"\" && password === \"\") {\n stateUpdate = {\n submitted: true,\n isError: true,\n message: \"Begge felt må være fylt ut\",\n }\n } else if (msisdn === \"\") {\n stateUpdate = {\n submitted: true,\n isError: true,\n message: \"Mobilnummer må være fylt ut\",\n }\n } else if (password === \"\") {\n stateUpdate = {\n submitted: true,\n isError: true,\n message: \"Passord må være fylt ut\",\n }\n } else if (msisdn.length === 7) {\n stateUpdate = {\n submitted: true,\n isError: true,\n message: \"Mobilnummer må være 8 siffer.\",\n }\n } else {\n stateUpdate = {\n submitted: true,\n isError: false,\n message: \"Informasjon validert\",\n }\n }\n\n\n return stateUpdate\n\n}\n\nexport default ValidateInput","import React, { useState } from \"react\";\nimport \"../styles/login.css\";\nimport {\n Container,\n Form,\n FormGroup,\n FormControl,\n Button,\n} from \"react-bootstrap\";\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport ValidateInput from \"../services/ValidateInput\";\nimport { useHistory } from \"react-router-dom\";\nimport AuthService from \"../services/AuthService\";\nimport UserService from \"../services/UserService\";\nimport Cookies from \"universal-cookie\";\n\nconst Login = ({ setToken, callback }) => {\n //define state\n //const irow = useState(\"\");\n const cookies = new Cookies();\n const [msisdn, setMsisdn] = useState(\"\");\n const [username, setUserName] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [encryptUserPass, setEncUserPass] = useState(\"\");\n const [loginCredError, setloginCredError] = useState(false);\n const [submitState, setSubmitState] = useState({\n submitted: false,\n isError: false,\n message: \"\",\n });\n\n //access useHistory\n let history = useHistory();\n //handle input change\n const handleChange = (e) => {\n const name = e.currentTarget.name;\n if (name === \"msisdn\") {\n setMsisdn(47 + e.currentTarget.value);\n setUserName(e.currentTarget.value);\n } else if (name === \"password\") {\n setPassword(e.currentTarget.value);\n }\n };\n\n //handlesubmit\n const handleSubmit = (e) => {\n e.preventDefault();\n const stateUpdate = ValidateInput(msisdn, password);\n setSubmitState(stateUpdate);\n if (stateUpdate.isError === false && stateUpdate.submitted === true) {\n AuthService.login(msisdn, password).then(\n () => {\n setSubmitState(stateUpdate);\n setloginCredError(false);\n const currentToken = AuthService.getCurrentToken();\n //const encryptedUserPass = AuthService.getEncryptedCredentials(username, password);\n\n //console.log('encryptedUserPass', encryptedUserPass);\n //return;\n const userSubscription = UserService.getSubscription(\n currentToken.access_token,\n ).then(\n (subscription) => {},\n (error) => {},\n );\n const dataPromise = userSubscription\n .then((response) => {\n window.location.replace(\"/min-side\");\n //history.push(\"min-side\");\n //window.location.reload();\n //const encryptedData = encryptedUserPass\n //.then((response) => {\n //const link = process.env.REACT_APP_FABEL_WP_URL+\"SSO/sso_login_v2.php?secret=fabel_sso_key&url=\"+process.env.REACT_APP_FABEL_WP_URL+\"lydbok&cred=\" +encodeURI(response)\n //const link = process.env.REACT_APP_FABEL_WP_URL+\"SSO/sso_login_v2.php?secret=fabel_sso_key&url=\"+process.env.REACT_APP_FABEL_WP_URL+\"lydbok&username=\" +btoa(username) +\"&password=\" +btoa(password)\n //cookies.set('link', link, { path: '/' });\n //history.push(\"min-side\");\n // window.location.reload();\n // })\n })\n .catch((error) => {\n console.log(\"error: \" + error);\n window.location.replace(\"/min-side\");\n //history.push(\"/min-side\");\n //window.location.reload();\n //console.log(\"fabel_connect_token_v22\", window.sessionStorage.getItem('fabel_connect_token_v2'));\n //const encryptedData = encryptedUserPass\n //.then((response) => {\n //const link = process.env.REACT_APP_FABEL_WP_URL+\"SSO/sso_login_v2.php?secret=fabel_sso_key&url=\"+process.env.REACT_APP_FABEL_WP_URL+\"lydbok&cred=\" +encodeURI(response)\n //const link = process.env.REACT_APP_FABEL_WP_URL+\"SSO/sso_login_v2.php?secret=fabel_sso_key&url=\"+process.env.REACT_APP_FABEL_WP_URL+\"lydbok&username=\" +btoa(username) +\"&password=\" +btoa(password)\n //cookies.set('link', link, { path: '/' });\n //})\n });\n },\n (error) => {\n setloginCredError(true);\n /*const resMessage = 'Glemt passordet ditt, klikk her for å tilbakestille.';\n setSubmitState({\n submitted: true,\n isError: true,\n message: resMessage,\n });*/\n },\n );\n }\n };\n\n const goToPasswordRecovery = () => {\n window.sessionStorage.setItem(\"usernameParam\", username);\n history.push(\"/tilbakestille-passord\");\n //history.push(\"/sms-kode\");\n };\n\n const goToResetPassword = () => {\n history.push(\"/sms-kode\");\n };\n return (\n <>\n \n
\n

LOGG INN

\n
\n {loginCredError ? (\n
\n Glemt passordet ditt, klikk{\" \"}\n \n her\n {\" \"}\n for å tilbakestille.\n
\n ) : null}\n\n {submitState.isError ? (\n
\n {submitState.message}\n
\n ) : null}\n\n
\n Mobilnummer\n \n \n \n Passord\n \n \n \n \n
\n \n
\n
\n
\n \n );\n};\n\nexport default Login;\n","import React, { useState, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport AuthService from \"../services/AuthService\";\nimport UserService from \"../services/UserService\";\n\nconst RenewToken = () => {\n\tlet history = useHistory();\n\t useEffect(() => {\n\t const currentToken = AuthService.getCurrentToken();\n\t AuthService.refreshAccessToken(currentToken.refresh_token).then(\n\t \t(response) => {\n\t \t\tconsole.log(response)\n\t \t\thistory.push(\"/min-side\");\n\t //window.location.reload();\n\t \t},\n\t \t(error) => {\n\t \t\tconsole.log(error)\n\t \t\thistory.push(\"/logg-inn\");\n\t \t})\n\t }, []);\n\n return (\n <>\n \n \n );\n};\n\nexport default RenewToken;\n","import React, { useState, useEffect } from \"react\";\nimport AuthService from \"../services/AuthService\";\nimport { Redirect } from 'react-router-dom'\n\nconst LoginCheck = () => {\n const currentToken = AuthService.getCurrentToken();\n\n if (currentToken) {\n return \n }else{\n return \n }\n};\n\nexport default LoginCheck;\n","import React, { useState } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport \"./styles/card.css\";\nimport {\n Card,\n InputGroup,\n ListGroup,\n FormControl,\n Button,\n Form,\n Row,\n Col,\n} from \"react-bootstrap\";\nimport AuthService from \"../../services/AuthService\";\nimport UserService from \"../../services/UserService\";\nimport { faArrowAltCircleDown } from \"@fortawesome/free-solid-svg-icons\";\n\nconst MyPageCard = ({ title, currentUser, setCurrentUser }) => {\n const [email, setEmail] = useState(\"\");\n const [redirect, setRedirect] = useState(null);\n const [currentPassword, setCurrentPassword] = useState(\"\");\n const [newPassword, setNewPassword] = useState(\"\");\n const [smsCode, setSmsCode] = useState(\"\");\n const [confirmNewPassword, setConfirmNewPassword] = useState(\"\");\n const [emailExpand, setEmailExpand] = useState(false);\n const [passwordExpand, setPasswordExpand] = useState(false);\n const [firstname, setFirstname] = useState(\"\");\n const [lastname, setLastname] = useState(\"\");\n const [smsCodeSent, setSmsCodeSent] = useState(false);\n const [userMessageEmail, setUserMessageEmail] = useState({\n showMessage: false,\n message: \"\",\n messageType: \"danger\",\n });\n const [userMessagePassword, setUserMessagePassword] = useState({\n showMessage: false,\n message: \"\",\n messageType: \"danger\",\n });\n\n const [userMessageName, setUserMessageName] = useState({\n showMessage: false,\n message: \"\",\n messageType: \"danger\",\n });\n\n const toggle = (toggleReference) => {\n switch (toggleReference) {\n case \"email\":\n setEmailExpand(!emailExpand);\n setUserMessageEmail({\n showMessage: false,\n message: \"\",\n messageType: \"danger\",\n });\n setUserMessageName({\n showMessage: false,\n message: \"\",\n messageType: \"danger\",\n });\n break;\n case \"password\":\n setPasswordExpand(!passwordExpand);\n setSmsCodeSent(false);\n setUserMessagePassword({\n showMessage: false,\n message: \"\",\n messageType: \"danger\",\n });\n break;\n default:\n break;\n }\n };\n\n const msisdn_string =\n \"+\" +\n currentUser.mobile.substring(0, 2) +\n \" \" +\n currentUser.mobile.substring(2, 4) +\n \" \" +\n currentUser.mobile.substring(4, 6) +\n \" \" +\n currentUser.mobile.substring(6, 8) +\n \" \" +\n currentUser.mobile.substring(8, 10);\n\n const handleChange = (e) => {\n const name = e.currentTarget.name;\n switch (name) {\n case \"email\":\n setEmail(e.currentTarget.value);\n break;\n case \"firstname\":\n setFirstname(e.currentTarget.value);\n break;\n case \"lastname\":\n setLastname(e.currentTarget.value);\n break;\n case \"currentPassword\":\n setCurrentPassword(e.currentTarget.value);\n break;\n case \"newPassword\":\n setNewPassword(e.currentTarget.value);\n break;\n case \"smsCode\":\n setSmsCode(e.currentTarget.value);\n break;\n case \"confirmNewPassword\":\n setConfirmNewPassword(e.currentTarget.value);\n break;\n default:\n break;\n }\n };\n\n const handleSubmitEmail = () => {\n if (email == \"\" || email == \" \") {\n setUserMessageEmail({\n showMessage: true,\n message: \"E-postadresse kreves\",\n messageType: \"alert-danger\",\n });\n } else {\n const userdata = { ...currentUser, email: email };\n\n const currentToken = AuthService.getCurrentToken();\n\n UserService.changeUser(currentToken.access_token, userdata).then(\n (response) => {\n //setCurrentUser(response);\n setUserMessageEmail({\n showMessage: true,\n message: \"E-post endret til \" + email + \".\",\n messageType: \"alert-success\",\n });\n },\n () => {\n setUserMessageEmail({\n showMessage: true,\n message: \"Noe gikk galt i endring av E-post.\",\n messageType: \"alert-danger\",\n });\n },\n );\n }\n };\n\n const handleSendSmsCode = () => {\n UserService.sendSMSCode(currentUser.mobile).then(\n (response) => {\n setSmsCodeSent(true);\n //setCurrentUser(response);\n setUserMessagePassword({\n showMessage: true,\n message: \"sms-kode sendt til din mobil\",\n messageType: \"alert-success\",\n });\n },\n () => {\n setUserMessagePassword({\n showMessage: true,\n message: \"Noe gikk galt i endring av E-post.\",\n messageType: \"alert-danger\",\n });\n },\n );\n };\n\n const handleSubmitPassword = () => {\n if (newPassword === confirmNewPassword) {\n const userdata = {\n mobile: currentUser.mobile,\n code: smsCode,\n password: newPassword,\n };\n //const currentToken = AuthService.getCurrentToken();\n UserService.changePassword(userdata).then(\n (response) => {\n //setCurrentUser(response);\n setUserMessagePassword({\n showMessage: true,\n message: \"Passord endret.\",\n messageType: \"alert-success\",\n });\n },\n () => {\n setUserMessagePassword({\n showMessage: true,\n message: \"Noe gikk galt i endring av Passord\",\n messageType: \"alert-danger\",\n });\n },\n );\n\n /*AuthService.login(currentUser.mobile, currentPassword).then(\n () => {\n const userdata = {mobile: currentUser.mobile, code: smsCode, password: newPassword };\n //const currentToken = AuthService.getCurrentToken();\n UserService.changePassword(userdata).then(\n (response) => {\n //setCurrentUser(response);\n setUserMessagePassword({\n showMessage: true,\n message: \"Passord endret.\",\n messageType: \"alert-success\",\n });\n },\n () => {\n setUserMessagePassword({\n showMessage: true,\n message: \"Noe gikk galt i endring av Passord\",\n messageType: \"alert-danger\",\n });\n }\n );\n },\n () => {\n setUserMessagePassword({\n showMessage: true,\n message: \"Nåværende passord stemmer ikke.\",\n messageType: \"alert-danger\",\n });\n }\n );*/\n } else {\n setUserMessagePassword({\n showMessage: true,\n message: \"Passordene matcher ikke.\",\n messageType: \"alert-danger\",\n });\n }\n };\n const handleChangeCheck = () => {\n const userData = { ...currentUser, newsletter: !currentUser.newsletter };\n setCurrentUser(userData);\n const currentToken = AuthService.getCurrentToken();\n UserService.changeUser(currentToken.access_token, userData);\n };\n\n const handleSubmitName = () => {\n /*const userdata = {\n firstname: firstname,\n lastname: lastname,\n email: currentUser.email,\n newsletter: currentUser.new,\n\n };*/\n const userdata = {\n ...currentUser,\n firstname: firstname,\n lastname: lastname,\n };\n //console.log(userdata);\n const currentToken = AuthService.getCurrentToken();\n\n UserService.changeUser(currentToken.access_token, userdata).then(\n (response) => {\n UserService.getUserFromToken(currentToken.access_token)\n .then((user) => {\n UserService.userGetLog(\"MyPage Card Page 1\", user, currentUser);\n setCurrentUser(user);\n })\n .catch((error) => {\n if (\n error.response &&\n error.response.data &&\n error.response.data.message\n ) {\n const errorMsg = error.response.data.message;\n if (\n errorMsg.includes(\"Token not found\") ||\n errorMsg.includes(\"Token expired\") ||\n errorMsg.includes(\"Invalid Token\")\n ) {\n UserService.userGetLog(\n \"error MyPage Card Page: \" + currentToken.access_token,\n errorMsg,\n JSON.stringify(currentUser),\n );\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n console.log(\"new error mypage 1\", error.response.data.message); // Handle error message here\n } else {\n console.log(\"An unexpected error occurred\");\n }\n });\n setUserMessageName({\n showMessage: true,\n message: \"Ditt navn har blitt oppdatert\",\n messageType: \"alert-success\",\n });\n },\n () => {\n setUserMessageName({\n showMessage: true,\n message: \"Noe gikk galt, prøv igjen senere.\",\n messageType: \"alert-danger\",\n });\n },\n );\n };\n if (redirect) {\n return ;\n }\n return (\n <>\n \n \n
{title}
\n
\n \n \n {currentUser.firstname || currentUser.lastname ? (\n \n \n Navn:\n \n \n {currentUser.firstname} {currentUser.lastname}\n \n \n ) : null}\n \n \n Mobilnummer:\n \n \n
{msisdn_string}
\n \n
\n \n \n E-post:\n \n \n {currentUser.email}\n \n \n\n \n

\n
\n\n \n
\n
\n\n \n \n Endre brukeropplysninger\n toggle(\"email\")}\n >\n \n \n {userMessageEmail.showMessage && emailExpand ? (\n \n {userMessageEmail.message}\n \n ) : null}\n {userMessageName.showMessage && emailExpand ? (\n \n {userMessageName.message}\n \n ) : null}\n {emailExpand ? (\n
\n \n \n \n Bekreft\n \n \n \n \n \n \n \n \n \n Bekreft\n \n
\n ) : null}\n
\n \n Endre passord\n toggle(\"password\")}\n >\n \n \n {userMessagePassword.showMessage && passwordExpand ? (\n \n {userMessagePassword.message}\n \n ) : null}\n {passwordExpand ? (\n
\n {smsCodeSent ? (\n <>\n \n \n \n \n \n
\n
\n \n \n \n \n \n Bekreft\n \n \n \n ) : (\n <>\n \n \n \n \n \n Send SMS-kode\n \n \n \n )}\n
\n ) : null}\n
\n
\n
\n
\n \n );\n};\n\nexport default MyPageCard;\n","const subscriptions = [\n {\n id: 1,\n name: \"Fabel Basis\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n campaignExpiry: \"01.03.2022\",\n },\n {\n id: 101,\n name: \"Standard: \",\n price: 189,\n priceMonths: \"kr/mnd\",\n concurrentStreams: 1,\n profiles: 1,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker.\",\n },\n {\n id: 102,\n name: \"Fabel Basis\",\n price: 149,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 1,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker, bortsett fra til barn og ungdom\",\n },\n {\n id: 201,\n name: \"Standard: \",\n price: 189,\n priceMonths: \"kr/mnd\",\n concurrentStreams: 1,\n profiles: 1,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker.\",\n },\n {\n id: 104,\n name: \"Fabel Familie Pluss\",\n slogan: \"Ubegrenset tilgang til alle lydbøker og -serier\",\n price: 239,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 4,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 103,\n name: \"Fabel Familie\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n slogan: \"Ubegrenset tilgang til alle lydbøker og -serier\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 109,\n name: \"Fabel Familie\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n slogan: \"Ubegrenset tilgang til alle lydbøker og -serier\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 654,\n name: \"Fabel Familie\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n slogan: \"Ubegrenset tilgang til alle lydbøker og -serier\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 655,\n name: \"Fabel Familie\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n slogan: \"Ubegrenset tilgang til alle lydbøker og -serier\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 202,\n name: \"Fabel Basis\",\n price: 159,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 1,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker, bortsett fra til barn og ungdom\",\n },\n\n {\n id: 701,\n name: \"Fabel Familie\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 702,\n name: \"Fabel Familie\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 1501,\n name: \"Fabel Familie\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 2501,\n name: \"Fabel Familie\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 3501,\n name: \"Fabel Familie\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 3502,\n name: \"Fabel Familie\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 551,\n name: \"Fabel Familie\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 651,\n name: \"Fabel Familie\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 3503,\n name: \"Fabel Familie\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n\n {\n id: 105,\n name: \"Fabel Familie 15% rabatt\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n saleprice: 160,\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 106,\n name: \"Fabel Familie 15% rabatt\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n saleprice: 160,\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 3002,\n name: \"Fabel Familie 15% rabatt\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n saleprice: 160,\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 3003,\n name: \"Fabel Familie 15% rabatt\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n saleprice: 160,\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n\n {\n id: 1002,\n name: \"Fabel Familie 50% rabatt\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n saleprice: 95,\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 4001,\n name: \"Fabel Familie 60% rabatt\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n saleprice: 75,\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 4002,\n name: \"Fabel Familie 60% rabatt\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n saleprice: 75,\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 4003,\n name: \"Fabel Familie 50% rabatt\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n saleprice: 95,\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 107,\n name: \"Fabel Familie 15% rabatt\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n saleprice: 160,\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 110,\n name: \"Fabel Familie\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n\n {\n id: 603,\n name: \"Fabel Familie i 10 uker til kun 95 kroner\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n\n {\n id: 604,\n name: \"Fabel Familie\",\n nameLarge: \"Fabel Familie\",\n\n slogan: \"Tilgang til alle lydbøker\",\n text1:\n \"Er du sikker? Å avslutte abonnementet nå vil begrense tilgangen din til underholdning og kunnskap i rolige perioder som vinterferie og påskeferie. Akkurat når du har tid til å slappe av og fordype deg i lesingen.\",\n text2: \"Ombestemmer du deg, byr vi i en begrenset periode på: \",\n text3: \"Fabel Familie i 2 måneder for kun 99 kroner.\",\n text4:\n \"Etter to måneder fortsetter abonnementet til ordinær pris, 189 kroner per måned.\",\n text5: \"Du kan når som helst stoppe abonnementet.\",\n price: 99,\n priceMonths: \"2 måneder til 99 kroner\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 4,\n subscriptionState: \"\",\n exceptionProduct: \"604\",\n campaignPosition: \"avslutt\",\n startDate: \"2024-02-15\",\n endDate: \"2024-03-01\",\n },\n {\n id: 703,\n name: \"Fabel Familie til prisen for Fabel Basis i 2 måneder\",\n nameLarge: \"Fabel Familie til prisen for Fabel Basis i 2 måneder\",\n season: \"Back to school! \",\n seasonTagLine:\n \"Nå kan du prøve vårt mest populære abonnement til prisen for Fabel Basis\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 149,\n priceMonths: \"kr/mnd i 2 måneder, deretter ordinær pris (189 kr/mnd)\",\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n concurrentStreams: 2,\n subscriptionState:\n \"ACTIVE, TRIALING, RENEW_FAILURE, UNPAID, INCOMPLETE, STOPPED\",\n exceptionProduct: \"all\",\n allowedProduct: \"102, 202\",\n campaignPosition: \"productselector\",\n startDate: \"2023-08-15\",\n endDate: \"2023-10-01\",\n },\n {\n id: 605,\n name: \"Fabel Familie i to måneder til kr 99\",\n slogan: \"Tilgang til alle lydbøker\",\n text1:\n \"Er du helt sikker på at du ikke vil ha ubegrenset mulighet for lydboklytting?\",\n text2: \"Vi har forlenget sommertilbudet:\",\n price: 99,\n priceMonths: \"kr for 2 måneder, deretter ordinær pris (189 kr/mnd)\",\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n concurrentStreams: 2,\n subscriptionState: \"\",\n exceptionProduct: \"\",\n campaignPosition: \"avslutt\",\n startDate: \"2023-07-28\",\n endDate: \"2023-10-01\",\n },\n {\n id: 1502,\n name: \"Fabel Familie\",\n season: \"Tilbud\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n concurrentStreams: 2,\n subscriptionState: \"\",\n exceptionProduct: \"\",\n campaignPosition: \"productselector\",\n startDate: \"2023-07-28\",\n endDate: \"2023-09-01\",\n },\n\n {\n id: 502,\n name: \"Fabel Familie i hele ti uker til kun 95 kroner.\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n renewButton: true,\n renewCondition: \"STOPPED\",\n\n slogan: \"Tilgang til alle lydbøker\",\n },\n {\n id: 11,\n name: \"Fabel Familie\",\n price: 189,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n slogan: \"Tilgang til alle lydbøker\",\n },\n\n {\n id: 21,\n name: \"Fabel Pluss\",\n price: 199,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 4,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n correspond: \"Fabel Familie Pluss\",\n saleprice: 229,\n },\n {\n id: 31,\n name: \"Fabel Premium\",\n price: 239,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 6,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n correspond: \"Fabel Familie Pluss\",\n saleprice: 229,\n },\n {\n id: 44,\n name: \"Nyttårstilbud\",\n price: 149,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 1,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n campaignExpiry: \"30.06.2022\",\n },\n {\n id: 41,\n name: \"Sommerkampanje\",\n price: 139,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n campaignExpiry: \"31.12.2021\",\n },\n {\n id: 42,\n name: \"Høstkampanje\",\n price: 139,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n campaignExpiry: \"01.03.2022\",\n },\n {\n id: 410,\n name: \"Sommerkampanje - forny\",\n price: 139,\n priceMonths: \"kr pr måneder\",\n concurrentStreams: 2,\n profiles: 6,\n state: true,\n main: false,\n campaign: false,\n campaignExpiry: \"01.06.2022\",\n },\n {\n id: 99,\n name: \"No subscription\",\n price: 0,\n campaign: false,\n },\n {\n id: 606,\n name: \"Kampanje: Fabel Familie 95 kr pr måned i 1 måned.\",\n nameLarge: \"Kampanje: Fabel Familie 95 kr pr måned i 1 måned.\",\n season: \"Høstkampanje! \",\n seasonTagLine: \"Fabel Familie til halv pris i 2 måneder\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 95,\n priceMonths: \"\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"STOPPED\",\n exceptionProduct: \"1003, 607, 503\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: \"true\",\n startDate: \"2024-03-15\",\n endDate: \"2024-04-02\",\n },\n {\n id: 607,\n name: \"Kampanje: Fabel Familie 95 kr pr måned i 1 måned.\",\n nameLarge: \"Kampanje: Fabel Familie 95 kr pr måned i 1 måned.\",\n season: \"Høstkampanje! \",\n seasonTagLine: \"Fabel Familie til halv pris i 2 måneder\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"I en begrenset periode tilbyr vi deg påskekampanjen:\",\n text2: \"Fabel Familie til 50 % rabatt i 1 måned.\",\n text3:\n \"95 kroner pr måned i 1 måned, deretter Fabel Familie til standard pris 189 kroner pr måned. Løpende abonnement.\",\n text4: \"\",\n price: 95,\n priceMonths: \"\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"\",\n exceptionProduct: \"1003, 606, 503\",\n allowedProduct: \"\",\n campaignPosition: \"avslutt\",\n spesialtilbud: \"null\",\n startDate: \"2024-03-15\",\n endDate: \"2024-04-02\",\n },\n {\n id: 608,\n name: \"Fabel Familie i 2 måneder til prisen for Fabel Én Bok\",\n nameLarge: \"Fabel Familie i 2 måneder til prisen for Fabel Én Bok\",\n season: \"Ut året-kampanje 2023 \",\n seasonTagLine: \"Fabel Familie til kun 89 kroner per mnd i 2 måneder!\",\n slogan: \"Tilgang til alle lydbøker\",\n\n text1: \"Er du helt sikker på at du vil forlate oss?\",\n text2: \"Bli, og få Fabel Familie til prisen for Fabel Én Bok i to måneder.\",\n text3: \"Ubegrenset lytting for hele familien i førjulstiden og juleferien.\",\n text4: \"Kun 89 kroner per mnd, deretter 189 kr/mnd.\",\n textbelowbutton: \"\",\n price: 89,\n priceMonths: \"kr/mnd i 2 måneder, deretter ordinær pris (189 kr/mnd)\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"\",\n exceptionProduct: \"608\",\n allowedProduct: \"\",\n campaignPosition: \"avslutt\",\n spesialtilbud: \"null\",\n startDate: \"2023-11-14\",\n endDate: \"2023-12-01\",\n },\n {\n id: 503,\n name: \"Kampanje: Fabel Familie 95 kr pr måned i 1 måned.\",\n nameLarge: \"Kampanje: Fabel Familie 95 kr pr måned i 1 måned.\",\n season: \"Høstkampanje! \",\n seasonTagLine: \"Fabel Familie til halv pris i 2 måneder\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 95,\n priceMonths: \"\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: \"true\",\n startDate: \"2024-03-15\",\n endDate: \"2024-04-02\",\n },\n {\n id: 504,\n welcomeBack: \"Takk for sist og velkommen tilbake!\",\n name: \"Fabel Familie i 1 mnd for kun 9 kroner\",\n nameLarge: \"Fabel Familie i 1 mnd for kun 9 kroner\",\n season: \"Kom tilbake \",\n seasonTagLine: \"Få Fabel Familie i 1 mnd for kun 9 kroner\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 9,\n priceMonths: \"kr/mnd i 1 mnd, deretter ordinær pris (189 kr/mnd)\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: \"null\",\n startDate: \"2023-11-23\",\n endDate: \"2023-12-12\",\n },\n {\n id: 609,\n welcomeBack: \"Takk for sist og velkommen tilbake!\",\n name: \"Fabel Familie i 1 mnd til kun 9 kroner\",\n nameLarge: \"Fabel Familie i 1 mnd til kun 9 kroner\",\n season: \"Hva annet for du til 9 kroner nå for tiden? \",\n seasonTagLine: \"Bli, og hør på lydbok i julestria\",\n slogan: \"Ubegrenset tilgang til alle lydbøker og -serier\",\n text1: \"\",\n text2: \"\",\n price: 9,\n priceMonths: \"kr/mnd i 1 mnd, deretter 189 kr/mnd\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"STOPPED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2023-12-15\",\n endDate: \"2024-01-31\",\n },\n {\n id: 1001,\n welcomeBack: \"\",\n name: \"\",\n nameLarge: \"60 % rabatt på Fabel Familie i 2 måneder\",\n season: \"Lytt til oss\",\n seasonTagLine: \"60 % rabatt på Fabel Familie i 2 måneder\",\n slogan: \"Ubegrenset tilgang til alle lydbøker og -serier\",\n text1: \"\",\n text2: \"\",\n price: 75,\n priceMonths: \"kr/mnd i 2 mnd, deretter ordinær pris (189 kr/mnd)\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2023-12-15\",\n endDate: \"2024-01-31\",\n },\n {\n id: 2001,\n welcomeBack: \"\",\n name: \"\",\n nameLarge: \"60 % rabatt på Fabel Familie i 2 måneder\",\n season: \"Lytt til oss\",\n seasonTagLine: \"60 % rabatt på Fabel Familie i 2 måneder\",\n slogan: \"Ubegrenset tilgang til alle lydbøker og -serier\",\n text1: \"\",\n text2: \"\",\n price: 75,\n priceMonths: \"kr/mnd i 2 mnd, deretter ordinær pris (189 kr/mnd)\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: \"true\",\n startDate: \"2023-12-15\",\n endDate: \"2024-01-22\",\n },\n {\n id: 505,\n welcomeBack: \"\",\n name: \"\",\n nameLarge: \"Ubegrenset lytting en hel måned for kun 9 kroner\",\n season: \"\",\n seasonTagLine: \"60 % rabatt på Fabel Familie 1 mndr\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 9,\n priceMonths: \"kr/mnd i 1 mnd, deretter ordinær pris (189 kr/mnd)\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: \"null\",\n startDate: \"2023-12-15\",\n endDate: \"2023-01-30\",\n },\n {\n id: 610,\n welcomeBack: \"Takk for sist og velkommen tilbake!\",\n name: \"Fabel Familie til 60 % rabatt i 2 mnd\",\n nameLarge: \"Fabel Familie til 60 % rabatt i 2 mnd\",\n season: \"Hva annet for du til 9 kroner nå for tiden? \",\n seasonTagLine: \"Bli, og hør på lydbok i julestria\",\n slogan: \"Ubegrenset tilgang til alle lydbøker og -serier\",\n text1: \"Er du helt sikker på at du vil forlate oss?\",\n text2: \"Bli, og få Fabel Familie i to måneder til 60 % rabatt!\",\n text3: \"Ubegrenset lytting for hele familien i førjulstiden og juleferien.\",\n text4: \"Kun 75 kroner per mnd, deretter 189 kr/mnd.\",\n price: 75,\n priceMonths: \"kr/mnd i 2 mnd, deretter 189 kr/mnd\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"\",\n exceptionProduct: \"610\",\n allowedProduct: \"all\",\n campaignPosition: \"avslutt\",\n spesialtilbud: null,\n startDate: \"2023-12-15\",\n endDate: \"2024-01-31\",\n },\n\n {\n id: 1003,\n name: \"Kampanje: Fabel Familie 95 kr pr måned i 1 måned.\",\n nameLarge: \"Kampanje: Fabel Familie 95 kr pr måned i 1 måned.\",\n season: \"Høstkampanje! \",\n seasonTagLine: \"Fabel Familie til halv pris i 2 måneder\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 95,\n priceMonths: \"\",\n profiles: 6,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState:\n \"DEACTIVATED, RENEW_FAILURE, UNPAID, INCOMPLETE, STOPPED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-03-15\",\n endDate: \"2024-04-02\",\n },\n {\n id: 501,\n name: \"Kampanje: Standard i 10 uker for 99 kroner. \",\n nameLarge: \"Kampanje: Standard i 10 uker for 99 kroner. \",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 99,\n priceMonths: \"\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 1,\n subscriptionState:\n \"ACTIVE, TRIALING, DEACTIVATED, RENEW_FAILURE, UNPAID, INCOMPLETE, STOPPED\",\n exceptionProduct: \"601, 501\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: \"true\",\n startDate: \"2024-05-07\",\n endDate: \"2024-06-10\",\n },\n {\n id: 601,\n name: \"Kampanje: Standard i 10 uker for 99 kroner. \",\n nameLarge: \"Kampanje: Standard i 10 uker for 99 kroner. \",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 99,\n priceMonths: \"\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 1,\n subscriptionState: \"STOPPED\",\n exceptionProduct: \"601, 501\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-05-07\",\n endDate: \"2024-06-10\",\n },\n {\n id: 1004,\n name: \"Standard 50 % rabatt i 2 mnd : \",\n nameLarge: \"Standard 50 % rabatt i 2 mnd : \",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 199,\n priceMonths: \"kr/mnd\",\n saleprice: 99,\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 1,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n {\n id: 1005,\n name: \"Duo 50 % rabatt i 2 mnd : \",\n nameLarge: \"Duo 50 % rabatt i 2 mnd : \",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 239,\n priceMonths: \"kr/mnd\",\n saleprice: 119,\n profiles: 2,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n {\n id: 1006,\n name: \"Familie 50 % rabatt i 2 mnd : \",\n nameLarge: \"Familie 50 % rabatt i 2 mnd : \",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 269,\n priceMonths: \"kr/mnd\",\n saleprice: 134,\n profiles: 3,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n {\n id: 506,\n name: \"Standard 50 % rabatt i 2 mnd : \",\n nameLarge: \"Standard 50 % rabatt i 2 mnd : \",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 199,\n priceMonths: \"kr/mnd\",\n saleprice: 99,\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 1,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: \"true\",\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n {\n id: 507,\n name: \"Duo 50 % rabatt i 2 mnd : \",\n nameLarge: \"Duo 50 % rabatt i 2 mnd : \",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 239,\n priceMonths: \"kr/mnd\",\n saleprice: 119,\n profiles: 2,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: \"true\",\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n {\n id: 508,\n name: \"Familie 50 % rabatt i 2 mnd : \",\n nameLarge: \"Familie 50 % rabatt i 2 mnd : \",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 269,\n priceMonths: \"kr/mnd\",\n saleprice: 134,\n profiles: 3,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: \"true\",\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n {\n id: 614,\n name: \"Standard 50 % rabatt i 2 mnd : \",\n nameLarge: \"Standard 50 % rabatt i 2 mnd : \",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 199,\n priceMonths: \"kr/mnd\",\n saleprice: 99,\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 1,\n subscriptionState: \"STOPPED\",\n exceptionProduct: \"614\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n {\n id: 615,\n name: \"Duo 50 % rabatt i 2 mnd : \",\n nameLarge: \"Duo 50 % rabatt i 2 mnd : \",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 239,\n priceMonths: \"kr/mnd\",\n saleprice: 119,\n profiles: 2,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"STOPPED\",\n exceptionProduct: \"615\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n {\n id: 616,\n name: \"Familie 50 % rabatt i 2 mnd : \",\n nameLarge: \"Familie 50 % rabatt i 2 mnd : \",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"\",\n text2: \"\",\n price: 269,\n priceMonths: \"kr/mnd\",\n saleprice: 134,\n profiles: 3,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState: \"STOPPED\",\n exceptionProduct: \"616\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n\n {\n id: 611,\n name: \"Standard 50 % rabatt i 2 mnd : \",\n nameLarge: \"Standard 50 % rabatt i 2 mnd : \",\n plainName: \"Standard 50 % rabatt i 2 mnd\",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"Er du helt sikker på at du vil forlate oss?\",\n text2: \"Bli, og få Fabel Familie i to måneder til 60 % rabatt!\",\n text3: \"Ubegrenset lytting for hele familien i førjulstiden og juleferien.\",\n text4: \"Kun 75 kroner per mnd, deretter 189 kr/mnd.\",\n price: 199,\n priceMonths: \"kr/mnd\",\n saleprice: 99,\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 1,\n subscriptionState: \"TRIALING, ACTIVE\",\n exceptionProduct: \"611\",\n allowedProduct: \"all\",\n campaignPosition: \"avslutt\",\n spesialtilbud: null,\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n {\n id: 612,\n name: \"Duo 50 % rabatt i 2 mnd : \",\n nameLarge: \"Duo 50 % rabatt i 2 mnd : \",\n plainName: \"Duo 50 % rabatt i 2 mnd\",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"Er du helt sikker på at du vil forlate oss?\",\n text2: \"Bli, og få Fabel Familie i to måneder til 60 % rabatt!\",\n text3: \"Ubegrenset lytting for hele familien i førjulstiden og juleferien.\",\n text4: \"Kun 75 kroner per mnd, deretter 189 kr/mnd.\",\n price: 239,\n priceMonths: \"kr/mnd\",\n saleprice: 119,\n profiles: 2,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 2,\n subscriptionState: \"TRIALING, ACTIVE\",\n exceptionProduct: \"612\",\n allowedProduct: \"all\",\n campaignPosition: \"avslutt\",\n spesialtilbud: null,\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n {\n id: 613,\n name: \"Familie 50 % rabatt i 2 mnd : \",\n nameLarge: \"Familie 50 % rabatt i 2 mnd : \",\n plainName: \"Familie 50 % rabatt i 2 mnd\",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker\",\n text1: \"Er du helt sikker på at du vil forlate oss?\",\n text2: \"Bli, og få Fabel Familie i to måneder til 60 % rabatt!\",\n text3: \"Ubegrenset lytting for hele familien i førjulstiden og juleferien.\",\n text4: \"Kun 75 kroner per mnd, deretter 189 kr/mnd.\",\n price: 269,\n priceMonths: \"kr/mnd\",\n saleprice: 134,\n profiles: 3,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState: \"TRIALING, ACTIVE\",\n exceptionProduct: \"613\",\n allowedProduct: \"all\",\n campaignPosition: \"avslutt\",\n spesialtilbud: null,\n startDate: \"2024-06-10\",\n endDate: \"2024-07-10\",\n },\n {\n id: 617,\n name: \"Standard 50 % rabatt i 2 mnd : \",\n nameLarge: \"Standard 50 % rabatt i 2 mnd : \",\n plainName: \"Standard 50 % rabatt i 2 mnd\",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker.\",\n text1: \"Er du helt sikker på at du vil stoppe abonnementet?\",\n text2:\n \"Akkurat tilbyr vi muligheten til å forlenge lyttesommeren med to måneder til halv pris, kr 99 per mnd. Til glede for hele familien! \",\n text3: \"\",\n text4: \"\",\n price: 99,\n priceMonths: \"kr/mnd\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState: \"TRIALING, ACTIVE\",\n exceptionProduct: \"617\",\n allowedProduct: \"all\",\n campaignPosition: \"avslutt\",\n spesialtilbud: null,\n startDate: \"2024-07-10\",\n endDate: \"2024-08-19\",\n },\n {\n id: 618,\n name: \"Standard 50 % rabatt i 2 mnd : \",\n nameLarge: \"Standard 50 % rabatt i 2 mnd : \",\n season: \" \",\n seasonTagLine:\n \"Akkurat nå tilbyr vi å forlenge lyttesommeren med halv pris på Standard i 2 mnd. Til glede for hele familien! \",\n slogan: \"Tilgang til alle lydbøker.\",\n text1: \"\",\n text2: \"\",\n price: 99,\n priceMonths: \"kr/mnd\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState: \"DEACTIVATED, STOPPED\",\n exceptionProduct: \"618\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-07-10\",\n endDate: \"2024-08-19\",\n },\n {\n id: 509,\n name: \"Standard 50 % rabatt i 2 mnd : \",\n nameLarge: \"Standard 50 % rabatt i 2 mnd : \",\n season: \" \",\n seasonTagLine:\n \"Akkurat nå tilbyr vi å forlenge lyttesommeren med halv pris på Standard i 2 mnd. Til glede for hele familien! \",\n slogan: \"Tilgang til alle lydbøker.\",\n text1: \"\",\n text2: \"\",\n price: 99,\n priceMonths: \"kr/mnd\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState:\n \"ACTIVE, TRIALING, DEACTIVATED, RENEW_FAILURE, UNPAID, INCOMPLETE, STOPPED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-07-10\",\n endDate: \"2024-08-19\",\n },\n {\n id: 510,\n name: \"Standard 50 % rabatt i 2 mnd : \",\n nameLarge: \"Standard til kampanjepris, 99 kr/mnd i 2 mnd. \",\n season: \" \",\n seasonTagLine: \"Høsttilbud: 50 % rabatt på Standard i 2 måneder.\",\n seasonTagLineTwo:\n \"Lytt så mye du vil for kun 99 kr/mnd. Etter 2 mnd gjelder vanlig pris, 199 kr/mnd.\",\n slogan: \"Tilgang til alle lydbøker.\",\n text1: \"\",\n text2: \"\",\n price: 99,\n priceMonths: \"kr/mnd\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState:\n \"ACTIVE, TRIALING, DEACTIVATED, RENEW_FAILURE, UNPAID, INCOMPLETE, STOPPED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-09-23\",\n endDate: \"2024-10-06\",\n },\n {\n id: 619,\n name: \"Standard 50 % rabatt i 2 mnd : \",\n nameLarge: \"Standard 50 % rabatt i 2 mnd : \",\n plainName: \"Standard 50 % rabatt i 2 mnd\",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker.\",\n text1: \"Bli hos oss - slå til på høsttilbudet:\",\n text2: \"50 % rabatt på Standard i 2 måneder \",\n text3: \"Lytt så mye du vil for kun 99 kroner per mnd. \",\n text4: \"Etter to måneder gjelder vanlig pris, 199 kr/ mnd\",\n price: 99,\n priceMonths: \"kr/mnd\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState: \"TRIALING, ACTIVE\",\n exceptionProduct: \"619\",\n allowedProduct: \"all\",\n campaignPosition: \"avslutt\",\n spesialtilbud: null,\n startDate: \"2024-10-07\",\n endDate: \"2024-10-21\",\n },\n {\n id: 512,\n name: \"Standard til 9 kr i 1 mnd (kampanje) \",\n nameLarge: \"Standard til 9 kr i 1 mnd (kampanje) \",\n season: \" \",\n seasonTagLine: \"Oktoberfest! \",\n seasonTagLineTwo: \"Kom tilbake og få Fabel Standard til kun 9 kr i 1 måned\",\n seasonTagLineThree: \"Etter 1 måned gjelder vanlig pris, 199 kr/mnd.\",\n seasonTagLineFour: \"Etter 2 måneder gjelder vanlig pris, 269 kr/mnd. \",\n slogan: \"Tilgang til alle lydbøker.\",\n text1: \"\",\n text2: \"\",\n price: 95,\n priceMonths: \"kr/mnd\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState:\n \"ACTIVE, TRIALING, RENEW_FAILURE, UNPAID, STOPPED, DEACTIVATED, INCOMPLETE_EXPIRED, INCOMPLETE\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-10-10\",\n endDate: \"2024-11-20\",\n },\n {\n id: 621,\n name: \"Standard til kampanjepris, 9 kr/mnd i 1 mnd \",\n nameLarge: \"Standard til kampanjepris, 9 kr/mnd i 1 mnd \",\n season: \" \",\n seasonTagLine: \"Novembertilbud: Standard til kun 9 kroner for 1 måned!\",\n seasonTagLineTwo:\n \"Lytt så mye du vil. Etter 1 måned gjelder vanlig pris, 199 kr/mnd.\",\n seasonTagLineThree: \"\",\n seasonTagLineFour: \"\",\n slogan: \"Tilgang til alle lydbøker.\",\n text1: \"\",\n text2: \"\",\n price: 95,\n priceMonths: \"kr/mnd\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState: \"STOPPED, DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: null,\n startDate: \"2024-11-04\",\n endDate: \"2024-11-18\",\n },\n {\n id: 622,\n name: \"Standard: 9 kr/mnd i 1 mnd (kampanje)\",\n nameLarge: \"Standard: 9 kr/mnd i 1 mnd (kampanje)\",\n plainName: \"Standard: 9 kr/mnd i 1 mnd (kampanje)\",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker.\",\n text1: \"Førjulstilbud! Vi ønsker å beholde deg og tilbyr:\",\n text2: \"1 måned med Fabel Standard for KUN 9 kr \",\n text3: \"\",\n text4: \"Etter to måneder gjelder vanlig pris, 199 kr/ mnd.\",\n price: 9,\n priceMonths: \"kr/mnd\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState: \"TRIALING, ACTIVE\",\n exceptionProduct: \"622\",\n allowedProduct: \"all\",\n campaignPosition: \"avslutt\",\n spesialtilbud: null,\n startDate: \"2024-11-01\",\n endDate: \"2024-12-02\",\n },\n {\n id: 403,\n name: \"Familie: \",\n slogan: \"Tilgang til alle lydbøker.\",\n price: 269,\n priceMonths: \"kr/mnd\",\n concurrentStreams: 3,\n profiles: 3,\n state: true,\n main: false,\n campaign: false,\n subscriptionState: \"TRIALING, ACTIVE\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2024-12-01\",\n endDate: \"2030-12-31\",\n },\n {\n id: 402,\n name: \"Duo: \",\n price: 239,\n priceMonths: \"kr/mnd\",\n slogan: \"Tilgang til alle lydbøker.\",\n concurrentStreams: 2,\n profiles: 2,\n state: true,\n main: false,\n expirycheck: true,\n campaign: false,\n subscriptionState: \"TRIALING, ACTIVE\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2024-12-01\",\n endDate: \"2030-12-31\",\n },\n\n {\n id: 401,\n name: \"Standard: \",\n price: 199,\n priceMonths: \"kr/mnd\",\n concurrentStreams: 1,\n profiles: 1,\n state: true,\n main: false,\n campaign: false,\n subscriptionState: \"TRIALING, ACTIVE\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n slogan: \"Tilgang til alle lydbøker.\",\n startDate: \"2024-12-01\",\n endDate: \"2030-12-31\",\n },\n {\n id: 406,\n name: \"Familie: \",\n slogan: \"Tilgang til alle lydbøker.\",\n price: 269,\n priceMonths: \"kr/mnd\",\n concurrentStreams: 3,\n profiles: 3,\n state: true,\n main: true,\n campaign: false,\n subscriptionState:\n \"ACTIVE, TRIALING, RENEW_FAILURE, UNPAID, STOPPED, DEACTIVATED, INCOMPLETE_EXPIRED, INCOMPLETE\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2024-12-01\",\n endDate: \"2030-12-31\",\n },\n {\n id: 405,\n name: \"Duo: \",\n price: 239,\n priceMonths: \"kr/mnd\",\n slogan: \"Tilgang til alle lydbøker.\",\n concurrentStreams: 2,\n profiles: 2,\n state: true,\n main: true,\n expirycheck: true,\n campaign: false,\n subscriptionState:\n \"ACTIVE, TRIALING, RENEW_FAILURE, UNPAID, STOPPED, DEACTIVATED, INCOMPLETE_EXPIRED, INCOMPLETE\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2024-12-01\",\n endDate: \"2030-12-31\",\n },\n {\n id: 404,\n name: \"Standard: \",\n price: 199,\n priceMonths: \"kr/mnd\",\n concurrentStreams: 1,\n profiles: 1,\n state: true,\n main: true,\n campaign: false,\n subscriptionState:\n \"ACTIVE, TRIALING, RENEW_FAILURE, UNPAID, STOPPED, DEACTIVATED, INCOMPLETE_EXPIRED, INCOMPLETE\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n slogan: \"Tilgang til alle lydbøker.\",\n startDate: \"2024-12-01\",\n endDate: \"2030-12-31\",\n },\n {\n id: 515,\n name: \"Familie: \",\n selectedName: \"Familie: 108 kr/mnd i 2 mnd (kampanje)\",\n slogan: \"Tilgang til alle lydbøker.\",\n price: 269,\n priceMonths: \"kr/mnd\",\n saleprice: 108,\n salepriceTag: \"i 2 mnd (60 %)\",\n concurrentStreams: 3,\n profiles: 3,\n state: true,\n main: true,\n campaign: true,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2024-12-01\",\n endDate: \"2025-01-12\",\n },\n {\n id: 514,\n name: \"Duo: \",\n selectedName: \"Duo: 96 kr/mnd i 2 mnd (kampanje)\",\n price: 239,\n priceMonths: \"kr/mnd\",\n saleprice: 96,\n salepriceTag: \"i 2 mnd (60 %)\",\n slogan: \"Tilgang til alle lydbøker.\",\n concurrentStreams: 2,\n profiles: 2,\n state: true,\n main: true,\n campaign: true,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2024-12-01\",\n endDate: \"2025-01-12\",\n },\n {\n id: 513,\n name: \"Standard: \",\n selectedName: \"Standard: 80 kr/mnd i 2 mnd (kampanje)\",\n price: 199,\n priceMonths: \"kr/mnd\",\n saleprice: 80,\n salepriceTag: \"i 2 mnd (60 %)\",\n concurrentStreams: 1,\n profiles: 1,\n state: true,\n main: true,\n campaign: true,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n slogan: \"Tilgang til alle lydbøker.\",\n startDate: \"2024-12-01\",\n endDate: \"2025-01-12\",\n },\n {\n id: 518,\n name: \"Familie: \",\n selectedName: \"Familie: 108 kr/mnd i 2 mnd (kampanje)\",\n slogan: \"Tilgang til alle lydbøker.\",\n price: 269,\n priceMonths: \"kr/mnd\",\n saleprice: 108,\n salepriceTag: \"i 2 mnd (60 %)\",\n concurrentStreams: 3,\n profiles: 3,\n state: true,\n main: true,\n campaign: true,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2025-01-12\",\n endDate: \"2025-02-01\",\n },\n {\n id: 517,\n name: \"Duo: \",\n selectedName: \"Duo: 96 kr/mnd i 2 mnd (kampanje)\",\n price: 239,\n priceMonths: \"kr/mnd\",\n saleprice: 96,\n salepriceTag: \"i 2 mnd (60 %)\",\n slogan: \"Tilgang til alle lydbøker.\",\n concurrentStreams: 2,\n profiles: 2,\n state: true,\n main: true,\n campaign: true,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2025-01-12\",\n endDate: \"2025-02-01\",\n },\n {\n id: 516,\n name: \"Standard: \",\n selectedName: \"Standard: 80 kr/mnd i 2 mnd (kampanje)\",\n price: 199,\n priceMonths: \"kr/mnd\",\n saleprice: 80,\n salepriceTag: \"i 2 mnd (60 %)\",\n concurrentStreams: 1,\n profiles: 1,\n state: true,\n main: true,\n campaign: true,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n slogan: \"Tilgang til alle lydbøker.\",\n startDate: \"2025-01-12\",\n endDate: \"2025-02-01\",\n },\n {\n id: 623,\n name: \"Standard: 9 kr/mnd i 1 mnd (kampanje)\",\n nameLarge: \"Standard: 9 kr/mnd i 1 mnd (kampanje)\",\n plainName: \"Standard: 9 kr/mnd i 1 mnd (kampanje)\",\n season: \" \",\n seasonTagLine: \"\",\n slogan: \"Tilgang til alle lydbøker.\",\n text1: \"Vi vil gjerne beholde deg:\",\n text2: \"Få Standard til kun 9 kr i 1 måned.\",\n text3: \"Lytt ubegrenset.\",\n text4: \"Etter 1 mnd gjelder vanlig pris.\",\n price: 9,\n priceMonths: \"kr/mnd\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState: \"TRIALING, ACTIVE\",\n exceptionProduct: \"623\",\n allowedProduct: \"all\",\n campaignPosition: \"avslutt\",\n spesialtilbud: null,\n startDate: \"2024-12-11\",\n endDate: \"2025-01-16\",\n },\n {\n id: 1009,\n name: \"Familie: \",\n selectedName: \"Familie: 108 kr/mnd i 2 mnd (kampanje)\",\n slogan: \"Tilgang til alle lydbøker.\",\n price: 269,\n priceMonths: \"kr/mnd\",\n saleprice: 108,\n salepriceTag: \"i 2 mnd (60 %)\",\n concurrentStreams: 3,\n profiles: 3,\n state: true,\n main: false,\n campaign: false,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2024-12-01\",\n endDate: \"2025-01-12\",\n },\n {\n id: 1008,\n name: \"Duo: \",\n selectedName: \"Duo: 96 kr/mnd i 2 mnd (kampanje)\",\n price: 239,\n priceMonths: \"kr/mnd\",\n saleprice: 96,\n salepriceTag: \"i 2 mnd (60 %)\",\n slogan: \"Tilgang til alle lydbøker.\",\n concurrentStreams: 2,\n profiles: 2,\n state: true,\n main: false,\n campaign: false,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2024-12-01\",\n endDate: \"2025-01-12\",\n },\n {\n id: 1007,\n name: \"Standard: \",\n selectedName: \"Standard: 80 kr/mnd i 2 mnd (kampanje)\",\n price: 199,\n priceMonths: \"kr/mnd\",\n saleprice: 80,\n salepriceTag: \"i 2 mnd (60 %)\",\n concurrentStreams: 1,\n profiles: 1,\n state: true,\n main: false,\n campaign: false,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n slogan: \"Tilgang til alle lydbøker.\",\n startDate: \"2024-12-01\",\n endDate: \"2025-01-12\",\n },\n {\n id: 1012,\n name: \"Familie: \",\n selectedName: \"Familie: 108 kr/mnd i 2 mnd (kampanje)\",\n slogan: \"Tilgang til alle lydbøker.\",\n price: 269,\n priceMonths: \"kr/mnd\",\n saleprice: 108,\n salepriceTag: \"i 2 mnd (60 %)\",\n concurrentStreams: 3,\n profiles: 3,\n state: true,\n main: false,\n campaign: false,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2025-01-12\",\n endDate: \"2025-01-31\",\n },\n {\n id: 1011,\n name: \"Duo: \",\n selectedName: \"Duo: 96 kr/mnd i 2 mnd (kampanje)\",\n price: 239,\n priceMonths: \"kr/mnd\",\n saleprice: 96,\n salepriceTag: \"i 2 mnd (60 %)\",\n slogan: \"Tilgang til alle lydbøker.\",\n concurrentStreams: 2,\n profiles: 2,\n state: true,\n main: false,\n campaign: false,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n startDate: \"2025-01-12\",\n endDate: \"2025-01-31\",\n },\n {\n id: 1010,\n name: \"Standard: \",\n selectedName: \"Standard: 80 kr/mnd i 2 mnd (kampanje)\",\n price: 199,\n priceMonths: \"kr/mnd\",\n saleprice: 80,\n salepriceTag: \"i 2 mnd (60 %)\",\n concurrentStreams: 1,\n profiles: 1,\n state: true,\n main: false,\n campaign: false,\n subscriptionState: \"DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n slogan: \"Tilgang til alle lydbøker.\",\n startDate: \"2025-01-12\",\n endDate: \"2025-01-31\",\n },\n {\n id: 519,\n name: \"Standard: 9 kr/mnd i 1 mnd\",\n nameLarge: \"Standard: 9 kr/mnd i 1 mnd\",\n selectedName: \"Standard: 9 kr/mnd i 1 mnd (kampanje)\",\n season: \" \",\n seasonTagLine: \"Kom-tilbake-tilbud:\",\n seasonTagLineTwo: \"\",\n seasonTagLineThree: \"\",\n seasonTagLineFour: \"\",\n slogan: \"Tilgang til alle lydbøker.\",\n text1: \"\",\n text2: \"\",\n price: 9,\n priceMonths: \"kr/mnd\",\n profiles: 1,\n state: true,\n main: false,\n campaign: true,\n concurrentStreams: 3,\n subscriptionState: \"STOPPED, DEACTIVATED\",\n exceptionProduct: \"all\",\n allowedProduct: \"all\",\n campaignPosition: \"productselector\",\n spesialtilbud: \"true\",\n startDate: \"2025-02-06\",\n endDate: \"2025-03-06\",\n },\n];\n\nexport default subscriptions;\n","import React, { useState, useEffect } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport {\n Elements,\n CardExpiryElement,\n CardNumberElement,\n CardCvcElement,\n useStripe,\n useElements,\n} from \"@stripe/react-stripe-js\";\nimport { loadStripe } from \"@stripe/stripe-js\";\nimport { Row, Col, Button } from \"react-bootstrap\";\nimport UserService from \"../../services/UserService\";\nimport AuthService from \"../../services/AuthService\";\n\nconst stripePromise = loadStripe(process.env.REACT_APP_STRIPE_PK);\n\nconst StripeWidget = ({\n currentUser,\n setCurrentUser,\n currentProduct,\n currentState,\n}) => {\n return (\n \n \n \n );\n};\n\nconst StripeChild = ({\n setCurrentUser,\n currentUser,\n currentProduct,\n currentState,\n}) => {\n const [userMessage, setUserMessage] = useState({\n showMessage: false,\n message: \"\",\n messageType: null,\n });\n const [subState, setSubState] = useState();\n const [redirect, setRedirect] = useState(null);\n const [productID, setProductId] = useState();\n useEffect(() => {\n const currentToken = AuthService.getCurrentToken();\n UserService.getSubscription(currentToken.access_token)\n .then((subscription) => {\n setSubState(subscription.state);\n setProductId(subscription.product_id);\n })\n .catch((error) => {\n if (\n error.response &&\n error.response.data &&\n error.response.data.message\n ) {\n const errorMsg = error.response.data.message;\n if (\n errorMsg.includes(\"Token not found\") ||\n errorMsg.includes(\"Token expired\") ||\n errorMsg.includes(\"Invalid Token\")\n ) {\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n console.log(\n \"new error mypage 1\",\n error.response.data.message,\n ); // Handle error message here\n } else {\n console.log(\"An unexpected error occurred\");\n }\n });\n }, []);\n\n const elements = useElements();\n const stripe = useStripe();\n const stripeSubmit = () => {\n const currentToken = AuthService.getCurrentToken();\n\n UserService.stripeSetupIntent(currentToken.access_token).then(\n (response) => {\n const clientSecret = response.client_secret;\n const cardElement = elements.getElement(CardNumberElement);\n stripe\n .confirmCardSetup(clientSecret, {\n payment_method: {\n card: cardElement,\n },\n })\n .then((result) => {\n if (result.error) {\n setUserMessage({\n showMessage: true,\n message: \"Betaling feilet.\",\n messageType: \"alert-danger\",\n });\n UserService.paymentSwitchLogging(\n \"Stripe Card Setup Failed - \" +\n JSON.stringify(result.status),\n JSON.stringify(result),\n currentUser.mobile,\n subState,\n productID,\n currentToken.access_token,\n result.setupIntent.payment_method,\n );\n\n console.log(\n \"payment/card error: \" + JSON.stringify(result),\n );\n } else {\n UserService.paymentSwitchLogging(\n \"Stripe Card Setup Success - \" +\n JSON.stringify(result.status),\n JSON.stringify(result),\n currentUser.mobile,\n subState,\n productID,\n currentToken.access_token,\n result.setupIntent.payment_method,\n );\n\n UserService.stripePaymentMethod(\n currentToken.access_token,\n result.setupIntent.payment_method,\n ).then(\n (response) => {\n UserService.paymentSwitchLogging(\n \"successPaymentWithStripe - \" +\n JSON.stringify(response.status),\n JSON.stringify(response),\n currentUser.mobile,\n subState,\n productID,\n currentToken.access_token,\n result.setupIntent.payment_method,\n );\n window.location.reload();\n currentUser = {\n ...currentUser,\n payment_type: 3,\n };\n setCurrentUser(currentUser);\n setUserMessage({\n showMessage: true,\n message: \"Endret til kortbetaling.\",\n messageType: \"alert-success\",\n });\n },\n (error) => {\n UserService.paymentSwitchLogging(\n \"failedPaymentWithStripe - \" +\n JSON.stringify(error.status),\n JSON.stringify(error),\n currentUser.mobile,\n subState,\n productID,\n currentToken.access_token,\n result.setupIntent.payment_method,\n );\n console.log(\n \"stripePaymentMethod error: \" +\n JSON.stringify(error),\n );\n setUserMessage({\n showMessage: true,\n message:\n \"Noe gikk galt, prøv igjen senere.\",\n messageType: \"alert-danger\",\n });\n },\n );\n }\n });\n },\n () => {\n setUserMessage({\n showMessage: true,\n message: \"Noe gikk galt, prøv igjen senere.\",\n messageType: \"alert-danger\",\n });\n },\n );\n };\n if (redirect) {\n return ;\n }\n return (\n <>\n {userMessage.showMessage ? (\n \n {userMessage.message}\n \n ) : null}\n \n \n \n \n \n \n \n \n \n \n \n \n Bekreft\n \n
\n
\n Ønsker du oversikt over tidligere transaksjoner på kort ber vi\n deg ta kontakt med kundeservice på kontakt@fabel.no​\n
\n \n );\n};\n\nexport default StripeWidget;\n","import React, { useState, useEffect } from \"react\";\nimport { Card, Button } from \"react-bootstrap\";\nimport { Redirect } from \"react-router-dom\";\nimport AuthService from \"../../services/AuthService\";\nimport UserService from \"../../services/UserService\";\n\nconst StrexWidget = ({ currentUser, setCurrentUser, currProduct }) => {\n console.log(\"currentUser\", currentUser, \"setCurrentUser\", setCurrentUser);\n const [subState, setSubState] = useState();\n const [redirect, setRedirect] = useState(null);\n const [productID, setProductId] = useState();\n const [userMessage, setUserMessage] = useState({\n showMessage: false,\n message: \"\",\n messageType: null,\n });\n useEffect(() => {\n const currentToken = AuthService.getCurrentToken();\n UserService.getSubscription(currentToken.access_token)\n .then((subscription) => {\n setSubState(subscription.state);\n setProductId(subscription.product_id);\n })\n .catch((error) => {\n if (\n error.response &&\n error.response.data &&\n error.response.data.message\n ) {\n const errorMsg = error.response.data.message;\n if (\n errorMsg.includes(\"Token not found\") ||\n errorMsg.includes(\"Token expired\") ||\n errorMsg.includes(\"Invalid Token\")\n ) {\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n console.log(\"new error mypage 1\", error.response.data.message); // Handle error message here\n } else {\n console.log(\"An unexpected error occurred\");\n }\n });\n }, []);\n const handleStrexSubmit = () => {\n const currentToken = AuthService.getCurrentToken();\n UserService.changeStrexProduct(currentToken.access_token, \"\").then(\n (response) => {\n UserService.paymentSwitchLogging(\n \"successPaymentWithStrex -\" + JSON.stringify(response.status),\n JSON.stringify(response),\n currentUser.mobile,\n subState,\n productID,\n currentToken.access_token,\n \"\",\n );\n console.log(\"strexPaymentMethod success: \" + JSON.stringify(response));\n window.location.reload();\n },\n (error) => {\n UserService.paymentSwitchLogging(\n \"failedPaymentWithStrex -\" + JSON.stringify(error.status),\n JSON.stringify(error),\n currentUser.mobile,\n subState,\n productID,\n currentToken.access_token,\n \"\",\n );\n console.log(\"strexPaymentMethod error: \" + JSON.stringify(error));\n setUserMessage({\n showMessage: true,\n message: \"Noe gikk galt, prøv igjen senere.\",\n messageType: \"alert-danger\",\n });\n //console.log(\"error geting subscription 4.3\");\n },\n );\n /* const userNewPaymentType = {...currentUser, payment_type: 0}\n\n const vippsData = {\n \"product_id\": currProduct,\n \"campaign_code\": \"UTMCAMPAIGN\",\n \"redirect_url\": window.location.origin+\"/vipps-completed\"\n }\n UserService.vippsIntent(currentToken.access_token, vippsData)\n .then((response) => {\n if(response.status===200){\n window.sessionStorage.setItem('vippsreference', response.data.reference);\n window.location.href = response.data.confirmation_url\n //setVippsButtonUrl(vipps.data.confirmation_url);\n }\n setCurrentUser(response)\n setUserMessage({\n showMessage: true,\n message: \"Byttet til mobilbetaling\",\n messageType: \"alert-success\"\n })\n }, () => {\n setUserMessage({\n showMessage: true,\n message: \"Noe gikk galt, prøv igjen senere.\",\n messageType: \"alert-danger\"\n })\n })*/\n };\n if (redirect) {\n return ;\n }\n return (\n \n Betal med mobilregning\n \n {userMessage.showMessage ? (\n \n {userMessage.message}\n \n ) : null}\n Velger du å betale med mobilregning trenger du ikke å registrere\n kortinformasjon. Abonnementet vil bli belastet mobilregningen din.\n Oversikt over alle transaksjoner finner du på strex.no.\n
\n
\n \n Betal med mobilregning\n \n
\n
\n );\n};\n\nexport default StrexWidget;\n","export default __webpack_public_path__ + \"static/media/mc_symbol.b720e3b5.svg\";","export default __webpack_public_path__ + \"static/media/Visa_2021.c6b2999c.svg\";","export default __webpack_public_path__ + \"static/media/strexlogo.a3f5bf8f.jpg\";","export default __webpack_public_path__ + \"static/media/vipps-logo.a87ec3dd.jpg\";","import React, { useEffect, useState, lazy, Suspense } from \"react\";\r\nimport \"./styles/card.css\";\r\nimport {\r\n Card,\r\n ListGroup,\r\n Button,\r\n Tabs,\r\n Tab,\r\n Row,\r\n FormControl,\r\n Modal,\r\n} from \"react-bootstrap\";\r\nimport subscriptions from \"../../services/SubscriptionClass\";\r\nimport StripeWidget from \"./StripeWidget\";\r\nimport StrexWidget from \"./StrexWidget\";\r\nimport msclogo from \"../../images/mc_symbol.svg\";\r\nimport visalogo from \"../../images/Visa_2021.svg\";\r\nimport strexlogo from \"../../images/strexlogo.jpg\";\r\nimport vippslogo from \"../../images/vipps-logo.jpg\";\r\nimport AuthService from \"../../services/AuthService\";\r\nimport UserService from \"../../services/UserService\";\r\nimport { useHistory } from \"react-router\";\r\nconst VippsWidget = lazy(() => import(\"./VippsWidget\"));\r\n\r\nconst PaymentCard = ({\r\n title,\r\n currentUser,\r\n setCurrentUser,\r\n subscription,\r\n setSubscription,\r\n}) => {\r\n const msisdn_string =\r\n \"+\" +\r\n currentUser.mobile.substring(0, 2) +\r\n \" \" +\r\n currentUser.mobile.substring(2, 5) +\r\n \" \" +\r\n currentUser.mobile.substring(5, 7) +\r\n \" \" +\r\n currentUser.mobile.substring(7, 10);\r\n const [campaign, setCampaign] = useState(false);\r\n\r\n /* const campaignProducts = subscriptions.filter(\r\n (subscriptionobject) =>\r\n subscriptionobject.campaign === true\r\n )*/\r\n /*const campaignAvsluttStartDate = '';\r\n const campaignAvsluttEndDate = '';\r\n const campaignAvsluttExceptionProduct = '';\r\n const campaignAvsluttExceptionProductt = useState([]);*/\r\n\r\n const currentDate = new Date();\r\n const campaignAvsluttProduct = subscriptions.filter(\r\n (subscriptionobject) =>\r\n subscriptionobject.campaignPosition === \"avslutt\" &&\r\n subscriptionobject.campaign === true &&\r\n subscription.expiry_date === null &&\r\n currentDate.getTime() >\r\n new Date(subscriptionobject.startDate).getTime() &&\r\n new Date(subscriptionobject.endDate).getTime() > currentDate.getTime()\r\n );\r\n //console.log(\"subscription.expiry_date\", subscription.expiry_date);\r\n ///&& currentDate.getTime() > subscriptionobject.startDate.getTime() && subscriptionobject.endDate.getTime() > currentDate.getTime()\r\n\r\n //if(campaignAvsluttProduct.length > 0){\r\n const campaignAvsluttStartDate =\r\n campaignAvsluttProduct.length > 0\r\n ? new Date(campaignAvsluttProduct[0].startDate)\r\n : \"\";\r\n const campaignAvsluttEndDate =\r\n campaignAvsluttProduct.length > 0\r\n ? new Date(campaignAvsluttProduct[0].endDate)\r\n : \"\";\r\n const campaignAvsluttExceptionProduct =\r\n campaignAvsluttProduct.length > 0\r\n ? campaignAvsluttProduct[0].exceptionProduct\r\n : \"\";\r\n const campaignAvsluttExceptionProductt =\r\n campaignAvsluttExceptionProduct.split(\", \");\r\n //}\r\n\r\n const subscriptionobject = subscriptions.filter(\r\n (subscriptionobject) =>\r\n subscriptionobject.id.toString() === subscription.product_id\r\n );\r\n //console.log(\"campaignAvsluttProduct\", campaignAvsluttProduct);\r\n const [paymentExpand, setPaymentExpand] = useState(false);\r\n const [orderExpand, setOrderExpand] = useState(false);\r\n const [giftcardExpand, setGiftcardExpand] = useState(false);\r\n const [giftcardCode, setGiftcardCode] = useState(\"\");\r\n const [terminateSubExpand, setTerminateSubExpand] = useState(false);\r\n const [subState, setSubState] = useState(true);\r\n const history = useHistory();\r\n const [campaignExpiry, setCampaignExpiry] = useState(\"\");\r\n const [popupMsg, setPopupMsg] = useState(false);\r\n\r\n const [selectedID, setSelectedID] = useState(\"\");\r\n const [popupChangeSub, setPopupChangeSub] = useState(false);\r\n const [chosenProd, setChosenProd] = useState(\"\");\r\n const [disableMode, setDisableMode] = useState(false);\r\n const [changeSubState, setChangeSubState] = useState(false);\r\n const [popupForny, setPopupForny] = useState(false);\r\n const [popupRenewSub, setPopupRenewSub] = useState(false);\r\n const [popupChangeSubKvitering, setPopupChangeSubKvitering] = useState(false);\r\n const [popupFornyKvitering, setPopupFornyKvitering] = useState(false);\r\n const [offer601Widget, set601OfferWidget] = useState(false);\r\n let terminateExecution = 0;\r\n //const shouldLoadVippsComponent = {{currentUser.payment_type === 6 ? true : false}};\r\n\r\n const [userMessage, setUserMessage] = useState({\r\n showMessage: false,\r\n message: \"\",\r\n messageType: null,\r\n });\r\n\r\n const handle4003Product = (e) => {\r\n //console.log('christmas');\r\n setSelectedID(4003);\r\n setPopupChangeSub(true);\r\n setChosenProd(4003);\r\n };\r\n const handleCampaignProduct = (id) => {\r\n //console.log(\"campaginProductID\", id);\r\n setSelectedID(String(id));\r\n setPopupChangeSub(true);\r\n setChosenProd(id);\r\n };\r\n const handle601Product = (e) => {\r\n //console.log('christmas');\r\n setSelectedID(\"601\");\r\n setPopupChangeSub(true);\r\n setChosenProd(\"601\");\r\n };\r\n\r\n const handle603Product = (e) => {\r\n //console.log('christmas');\r\n setSelectedID(\"603\");\r\n setPopupChangeSub(true);\r\n setChosenProd(\"603\");\r\n };\r\n\r\n const handle1002Product = (e) => {\r\n //console.log('christmas');\r\n setSelectedID(\"1002\");\r\n setPopupChangeSub(true);\r\n setChosenProd(\"1002\");\r\n };\r\n\r\n const handle605Product = (e) => {\r\n //console.log('christmas');\r\n setSelectedID(\"605\");\r\n setPopupChangeSub(true);\r\n setChosenProd(\"605\");\r\n };\r\n\r\n const handleCloseM = () => {\r\n setPopupChangeSub(false);\r\n setPopupForny(false);\r\n setPopupFornyKvitering(false);\r\n setPopupChangeSubKvitering(false);\r\n };\r\n\r\n const vippsData = {\r\n product_id: selectedID,\r\n campaign_code: \"UTMCAMPAIGN\",\r\n redirect_url: window.location.origin + \"/vipps-completed\",\r\n };\r\n //console.log(\"vippsData\", vippsData);\r\n const handleChangeSub = () => {\r\n //console.log(\"vippsData\", vippsData);\r\n if (currentUser.payment_type === 6) {\r\n const currentToken = AuthService.getCurrentToken();\r\n UserService.vippsIntent(currentToken.access_token, vippsData).then(\r\n (vipps) => {\r\n if (vipps.status === 200) {\r\n window.sessionStorage.setItem(\r\n \"vippsreference\",\r\n vipps.data.reference\r\n );\r\n window.location.href = vipps.data.confirmation_url;\r\n //setVippsButtonUrl(vipps.data.confirmation_url);\r\n } else {\r\n }\r\n }\r\n );\r\n } else {\r\n setDisableMode(true);\r\n if (subState == \"\") {\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n event: \"subscription_reactivated\",\r\n });\r\n }\r\n if (subState === \"STOPPED\" && selectedID === subscription.product_id) {\r\n //handleActivateSubscription();\r\n } else {\r\n const currentToken = AuthService.getCurrentToken();\r\n if (currentUser.payment_type === 3) {\r\n UserService.changeStripeProduct(\r\n currentToken.access_token,\r\n selectedID\r\n ).then(\r\n (response) => {\r\n setPopupForny(false);\r\n setPopupRenewSub(false);\r\n setPopupChangeSub(false);\r\n setDisableMode(false);\r\n setChangeSubState(true);\r\n // console.log(\"error geting subscription 2\");\r\n setPopupChangeSubKvitering(true);\r\n },\r\n (error) => {\r\n setDisableMode(false);\r\n setChangeSubState(false);\r\n setPopupChangeSubKvitering(true);\r\n //console.log(\"error geting subscription 4.3\");\r\n }\r\n );\r\n } else if (currentUser.payment_type === 0) {\r\n UserService.changeStrexProduct(\r\n currentToken.access_token,\r\n selectedID\r\n ).then(\r\n (response) => {\r\n //UserService.paymentSwitchLogging(response, currentUser.mobile, subState, selectedID);\r\n\r\n setPopupForny(false);\r\n setPopupRenewSub(false);\r\n setPopupChangeSub(false);\r\n setDisableMode(false);\r\n setChangeSubState(true);\r\n // console.log(\"error geting subscription 2\");\r\n setPopupChangeSubKvitering(true);\r\n },\r\n (error) => {\r\n //UserService.paymentSwitchLogging(error, currentUser.mobile, subState, selectedID);\r\n setDisableMode(false);\r\n setChangeSubState(false);\r\n setPopupChangeSubKvitering(true);\r\n //console.log(\"error geting subscription 5.3\");\r\n }\r\n );\r\n } else {\r\n console.log(\"inside else condition of payment in change sub\");\r\n setPopupChangeSubKvitering(true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const dateString = subscription.expiry_date; // ISO 8601 format\r\n const expiryDateObje = new Date(dateString);\r\n const currentDate = new Date();\r\n /*if(\r\n subscription.product_id === \"11\" ||\r\n subscription.product_id === \"21\" ||\r\n subscription.product_id === \"31\" ||\r\n subscription.product_id === \"101\" ||\r\n subscription.product_id === \"102\" ||\r\n subscription.product_id === \"201\" ||\r\n subscription.product_id === \"202\" ||\r\n subscription.product_id === \"103\" ||\r\n subscription.product_id === \"701\" ||\r\n subscription.product_id === \"702\" ||\r\n subscription.product_id === \"110\" ||\r\n subscription.product_id === \"104\" ||\r\n subscription.product_id === \"105\" ||\r\n subscription.product_id === \"106\" ||\r\n subscription.product_id === \"3002\" ||\r\n subscription.product_id === \"107\" ||\r\n subscription.id === 99\r\n ) {\r\n // setCampaign(false);\r\n } else {\r\n // setCampaign(true);\r\n }*/\r\n\r\n if (subscription.state === \"3\") {\r\n setSubState(\"ACTIVE\");\r\n }\r\n if (subscription.state === \"1\") {\r\n setSubState(\"TRIALING\");\r\n }\r\n if (subscription.id === 99) {\r\n setSubState(\"FALSE\");\r\n }\r\n if (subscription.state === \"10\" || subscription.state === \"9\") {\r\n setSubState(\"DEACTIVATED\");\r\n //setProductID(subscription.product_id);\r\n }\r\n\r\n if (dateString != null && expiryDateObje < currentDate) {\r\n setSubState(\"DEACTIVATED\");\r\n }\r\n if (\r\n (subscription.state === \"10\" || subscription.state === \"9\") &&\r\n expiryDateObje < currentDate\r\n ) {\r\n setSubState(\"EXPIREDDEACTIVATED\");\r\n //setProductID(subscription.product_id);\r\n }\r\n if (subscription.state === \"6\" && expiryDateObje > currentDate) {\r\n setSubState(\"STOPPED\");\r\n }\r\n if (subscription.state === \"5\") {\r\n setSubState(\"RENEWFAIL\");\r\n }\r\n\r\n if (subscription.product_id === \"410\") {\r\n setCampaignExpiry(\"september 2022\");\r\n } else {\r\n try {\r\n setCampaignExpiry(subscriptionobject[0].campaignExpiry);\r\n } catch (err) {\r\n setCampaignExpiry(\"-\");\r\n }\r\n }\r\n }, [subscription, setSubscription]);\r\n\r\n const toggle = (toggleReference) => {\r\n switch (toggleReference) {\r\n case \"payment\":\r\n setPaymentExpand(!paymentExpand);\r\n break;\r\n case \"order-history\":\r\n setOrderExpand(!orderExpand);\r\n break;\r\n case \"giftcard\":\r\n setGiftcardExpand(!giftcardExpand);\r\n break;\r\n case \"terminate-sub\":\r\n setTerminateSubExpand(!terminateSubExpand);\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const clearMessage = () => {\r\n setUserMessage({\r\n showMessage: false,\r\n message: \"\",\r\n messageType: null,\r\n });\r\n };\r\n const handlePopup = () => {\r\n setPopupMsg(true);\r\n };\r\n const formatDateString = (string) => {\r\n if (typeof string != \"undefined\" && string != null) {\r\n const day = string.substring(8, 10);\r\n const month = string.substring(5, 7);\r\n const year = string.substring(0, 4);\r\n return day + \".\" + month + \".\" + year;\r\n }\r\n return null;\r\n };\r\n\r\n const formatDateStringOneMonthBack = (string) => {\r\n if (typeof string != \"undefined\" && string != null) {\r\n const day = string.substring(8, 10);\r\n var month = parseInt(string.substring(5, 7)) - 1;\r\n var year = parseInt(string.substring(0, 4));\r\n if (month == \"0\") {\r\n month = 12;\r\n year = year - 1;\r\n }\r\n return day + \".\" + month + \".\" + year;\r\n }\r\n return null;\r\n };\r\n\r\n const goToStrex = () => {\r\n window.location.href = \"http://strex.no\";\r\n };\r\n\r\n const renderSwitch = (payment_type) => {\r\n switch (payment_type) {\r\n case 0:\r\n return (\r\n <>\r\n :\r\n
\r\n
\r\n \"strex-logo\"\r\n
{msisdn_string}
\r\n \r\n );\r\n case 3:\r\n return (\r\n <>\r\n :\r\n
\r\n \"visa-logo\"\r\n \"mastercard-logo\"\r\n \r\n );\r\n case 6:\r\n return (\r\n <>\r\n :\r\n
\r\n \"visa-logo\"\r\n \r\n );\r\n default:\r\n return (\r\n <>\r\n :
Faktura.
\r\n \r\n );\r\n }\r\n };\r\n\r\n const handleGiftcardChange = (e) => {\r\n setGiftcardCode(e.currentTarget.value);\r\n };\r\n\r\n const submitGiftcard = () => {\r\n const currentToken = AuthService.getCurrentToken();\r\n UserService.redeemGiftcard(currentToken.access_token, giftcardCode).then(\r\n (response) => {\r\n setUserMessage({\r\n showMessage: true,\r\n message: \"Innløsning av gavekort vellykket!\",\r\n messageType: \"alert-success\",\r\n });\r\n },\r\n (error) => {\r\n if (error.response.status === 409) {\r\n setUserMessage({\r\n showMessage: true,\r\n message: \"Denne koden er allere brukt!\",\r\n messageType: \"alert-danger\",\r\n });\r\n } else {\r\n setUserMessage({\r\n showMessage: true,\r\n message: \"Feil kode\",\r\n messageType: \"alert-danger\",\r\n });\r\n }\r\n }\r\n );\r\n };\r\n\r\n const goToTerminateSubscription = () => {\r\n history.push({\r\n pathname: \"/avslutt-abonnement\",\r\n });\r\n\r\n //if(terminateExecution===0){\r\n // terminateExecution = 1;\r\n // set601OfferWidget(true);\r\n\r\n //} else {\r\n // history.push({\r\n // pathname: \"/avslutt-abonnement\",\r\n //});\r\n //}\r\n };\r\n //console.log(\"subState\", subState, campaign);\r\n return (\r\n \r\n \r\n \r\n \r\n Bekreft\r\n {subState == \"TRIALING\" ? (\r\n <> abonnementet\r\n ) : (\r\n <> abonnementsbytte\r\n )}\r\n \r\n \r\n \r\n {subState == \"TRIALING\" ? (\r\n <>\r\n Abonnementsendringen vil skje umiddelbart. Du vil ikke lenger ha\r\n gratis prøveperiode.\r\n \r\n ) : (\r\n <>\r\n Abonnementsendringen vil skje umiddelbart og den nye prisen trer\r\n først i kraft ved neste betalingsdato.\r\n \r\n )}\r\n {currentUser.payment_type == \"6\" ? <> : null}\r\n {currentUser.payment_type == \"0\" ? <> : null}\r\n \r\n\r\n \r\n \r\n Avbryt\r\n \r\n \r\n Aksepter\r\n \r\n \r\n \r\n \r\n
{title}
\r\n
\r\n \r\n \r\n {/*}\r\n {subState === \"FALSE\" && currentUser.payment_type == 0 ? (\r\n <>\r\n Ingen betalingsmetode valgt
{\" \"}\r\n \r\n ) : (\r\n <> Valgt betaling {renderSwitch(currentUser.payment_type)}\r\n )}{*/}\r\n <> Valgt betaling {renderSwitch(currentUser.payment_type)}\r\n\r\n {subState === \"ACTIVE\" ? (\r\n <>\r\n
\r\n\r\n {campaign ? (\r\n <>\r\n {subscription.product_id == \"42\" ||\r\n subscription.product_id == \"1001\" ||\r\n subscription.product_id == \"1002\" ||\r\n subscription.product_id == \"2001\" ||\r\n subscription.product_id == \"4001\" ? (\r\n <>\r\n ) : (\r\n <> \r\n )}\r\n
\r\n \r\n ) : (\r\n <>\r\n {subscription.product_id == \"110\" ? (\r\n <>\r\n Fra 1. januar 2023 er abonnementet løpende til 189 kr per\r\n måned.\r\n
\r\n
\r\n \r\n ) : (\r\n <>\r\n )}\r\n
\r\n \r\n )}\r\n \r\n ) : null}\r\n\r\n {subState === \"STOPPED\" ? (\r\n <>\r\n
\r\n Du har avsluttet ditt abonnement\r\n
\r\n
\r\n Du mister tilgang til Fabel den{\" \"}\r\n {formatDateString(subscription.expiry_date)}.
\r\n
\r\n
\r\n
\r\n
\r\n Ditt Fabel-abonnement er stoppet, men du kan lytte ut\r\n betalingsperioden. Du har fortsatt en kostnadsfri brukerkonto,\r\n og kan starte abonnementet igjen når du ønsker. Ønsker du å\r\n slette din brukerkonto, kan du kontakte kundeservice på\r\n kontakt@fabel.no.\r\n
\r\n\r\n
\r\n
\r\n \r\n ) : null}\r\n {subState === \"EXPIREDDEACTIVATED\" ? (\r\n <>\r\n
\r\n Betalingsmetode utgått\r\n
\r\n
\r\n
\r\n
\r\n Du må legge inn et nytt bankkort og så velge abonnement får å\r\n kunne lytte videre. Velg 'Endre betalingsmetode', legg inn\r\n kortdetaljer, trykk bekreft og gå igjennom autentifisering\r\n gjennom banken. Deretter velg det abonnement som passer deg.\r\n
\r\n\r\n
\r\n
\r\n \r\n ) : null}\r\n\r\n {subState === \"TRIALING\" ? (\r\n <>\r\n
\r\n {/* Ditt abonnementet er på prøvetid\r\n
*/}\r\n
\r\n Din neste faktureringsdato er{\" \"}\r\n {formatDateString(subscription.next_billing_date)}.
\r\n
\r\n
\r\n \r\n ) : null}\r\n\r\n {subState === \"FALSE\" ? (\r\n <>\r\n
\r\n Du har ikke et aktivt abonnement\r\n
\r\n
\r\n \r\n ) : null}\r\n
\r\n\r\n \r\n \r\n {subState === \"FALSE\" && currentUser.payment_type == 0 ? (\r\n <>Velg betalingsmetode\r\n ) : (\r\n <>Endre betalingsmåte\r\n )}\r\n\r\n toggle(\"payment\")}\r\n >\r\n \r\n \r\n {paymentExpand ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {currentUser.payment_type === 6 ? (\r\n \r\n Loading...}>\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n \r\n ) : null}\r\n \r\n {currentUser.payment_type === 0 && subState !== \"FALSE\" ? (\r\n \r\n Se betalingshistorikk\r\n toggle(\"order-history\")}\r\n >\r\n \r\n \r\n {orderExpand ? (\r\n \r\n \r\n
\r\n Få full oversikt over mobilbetalingen\r\n
\r\n \r\n \r\n Få oversikt over alle dine transaksjoner på strex.no.\r\n Registreringen er enkel og rask, og er en sikkerhet for\r\n deg som betaler.\r\n \r\n \r\n \r\n \r\n \r\n
\r\n ) : null}\r\n
\r\n ) : null}\r\n\r\n {subscription.state === 1 ||\r\n subscription.state === 3 ||\r\n subscription.state === 5 ||\r\n (subscription.state === 1 && !campaign) ? (\r\n <>\r\n \r\n {terminateSubExpand ? null : <>Stopp abonnement }\r\n toggle(\"terminate-sub\")}\r\n >\r\n \r\n \r\n {terminateSubExpand ? (\r\n \r\n \r\n
\r\n Stopp abonnement\r\n
\r\n \r\n
\r\n {offer601Widget === true ? (\r\n
\r\n
\r\n Vi vil veldig gjerne at du blir hos oss.\r\n
\r\n
\r\n
\r\n 🐣 PÅSKETILBUD 🐣{\" \"}\r\n
\r\n
\r\n Fabel Familie i 10 uker for kun 99 kroner\r\n
\r\n
\r\n Normalt 189 kr/mnd – gjelder først etter 10 uker.\r\n
\r\n
\r\n
\r\n
\r\n Slå til nå, så kan du høre krim og andre lydbøker i\r\n påsken.{\" \"}\r\n
\r\n
\r\n Du får også med deg nyhetene fra 2022 som slippes\r\n for strømming fra 1. mai.\r\n
\r\n
\r\n
\r\n \r\n Jeg vil ha dette tilbudet\r\n \r\n
\r\n
\r\n
\r\n ) : (\r\n \"\"\r\n )}\r\n\r\n
\r\n {/*campaignAvsluttProduct.length > 0 ? \r\n <>\r\n
\r\n
\r\n Er du helt sikker på at du vil forlate oss?\r\n
\r\n
\r\n Bli, og få Fabel i to måneder til 50 % rabatt!\r\n
\r\n Ubegrenset lytting til halv pris.\r\n
\r\n
\r\n \r\n
\r\n {campaignAvsluttProduct.map((value, key) => {\r\n const campaignAvsluttExceptionProductt = value.exceptionProduct.split(\", \");\r\n \r\n if(campaignAvsluttExceptionProductt.includes(subscription.product_id)==false){\r\n return <>\r\n \r\n
\r\n {value.concurrentStreams.toString()}{\" \"}\r\n {value.concurrentStreams === 1 ? (\r\n <>samtidig strømming.\r\n ) : (\r\n <>samtidige strømminger.\r\n )}{\" \"}\r\n {value.profiles.toString()}{\" \"}\r\n {value.profiles == 1 ? <>profil. : <>profiler.}\r\n

\r\n \r\n }\r\n \r\n })}\r\n
\r\n \r\n : '' */}\r\n {campaignAvsluttExceptionProductt.includes(\r\n subscription.product_id\r\n ) === false &&\r\n campaignAvsluttStartDate &&\r\n campaignAvsluttEndDate &&\r\n campaignAvsluttProduct.length > 0 ? (\r\n <>\r\n
\r\n \r\n {campaignAvsluttProduct[0].text1 ? (\r\n <>\r\n {\" \"}\r\n {\r\n campaignAvsluttProduct[0].text1\r\n }
{\" \"}\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n {campaignAvsluttProduct[0].text2 ? (\r\n <>\r\n {\" \"}\r\n \r\n {campaignAvsluttProduct[0].text2}\r\n {\" \"}\r\n
{\" \"}\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n {campaignAvsluttProduct[0].text3 ? (\r\n <>\r\n \r\n {campaignAvsluttProduct[0].text3}\r\n \r\n
\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n {campaignAvsluttProduct[0].text4 ? (\r\n <>\r\n \r\n {campaignAvsluttProduct[0].text4}\r\n \r\n
\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n {campaignAvsluttProduct[0].text5 ? (\r\n <>\r\n \r\n {campaignAvsluttProduct[0].text5}\r\n \r\n
\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n \r\n handleCampaignProduct(\r\n campaignAvsluttProduct[0].id\r\n )\r\n }\r\n >\r\n Ja, jeg vil ha dette tilbudet\r\n \r\n
\r\n \r\n ) : null}\r\n\r\n \r\n Jeg vil stoppe abonnementet\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n ) : null}\r\n
\r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PaymentCard;\r\n","import React, { useEffect, useState } from 'react'\nimport { Redirect } from \"react-router-dom\";\nimport { Card, Col, Container, Image, Row, Button } from 'react-bootstrap'\nimport AuthService from '../../services/AuthService'\nimport UserService from '../../services/UserService'\nimport './styles/card.css'\nimport { useHistory } from 'react-router'\n\nconst BookCard = ({title, user}) => {\n const [books, setBooks] = useState([])\n const [redirect, setRedirect] = useState(null);\n const [booksReady, setBooksReady] = useState([false])\n const history = useHistory();\n useEffect(() => {\n const currentToken = AuthService.getCurrentToken();\n \n UserService.getBooks(currentToken.access_token).then((bookshelf) => {\n const reversedArray = [...bookshelf.bookshelf].reverse();\n setBooks(reversedArray)\n setBooksReady(true)\n \n }).catch(error => {\n if (error.response && error.response.data && error.response.data.message) {\n \n const errorMsg = error.response.data.message;\n if(errorMsg.includes(\"Token not found\") || errorMsg.includes(\"Token expired\") || errorMsg.includes(\"Invalid Token\")){\n UserService.userGetLog(\"error BookCard Page: \"+currentToken.access_token, errorMsg, \"\");\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n //console.log(\"new error mypage 1\", error.response.data.message); // Handle error message here\n } else {\n console.log('An unexpected error occurred');\n }\n });\n\n \n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n \n \n const downloadBook = (link) => {\n const currentToken = AuthService.getCurrentToken();\n UserService.downloadBook(currentToken.access_token, link)\n .then(response => {\n window.location.href = response.download_url\n }, (e) => {\n console.log(e)\n })\n }\n\n const goToPurchasedBooks = (books) => {\n history.push({\n pathname: '/min-side/boker',\n state: {books: books}\n })\n }\n //redirect if not logged in\n if (redirect) {\n return ;\n }\n return (\n \n {title}\n\n {booksReady && books ?\n <>\n {books.slice(0,4).map(book => (\n \n \n \n \n {book.title}
{book.author ? book.author : \"\"}\n \n
\n
\n
\n \n ))}\n {books.length > 4 ? <>\n \n \n
Se alle kjøpte bøker
\n \n \n \n \n
\n : null}\n \n : null}\n\n
\n )\n}\n\nexport default BookCard\n","export const checkExpired = (date) => {\n var today = new Date();\n var expDate = new Date(date);\n if (today > expDate) {\n console.log(today, expDate)\n return true;\n }else{\n return false;\n }\n};\n\nexport const formatDateString = (string) => {\n if (typeof string != \"undefined\" && string != null) {\n const day = string.substring(8, 10);\n const month = string.substring(5, 7);\n const year = string.substring(0, 4);\n return day + \".\" + month + \".\" + year;\n }\n return null;\n};\nexport const dateUntilCredit = (subscription) => {\n var today = new Date().getTime();\n if(subscription.next_billing_date == undefined){\n return \"Invoice\"\n }else{\n var billing = subscription.next_billing_date.split(/[- :]/);\n var billing_date = new Date(\n billing[0],\n billing[1] - 1,\n billing[2],\n billing[3],\n billing[4],\n billing[5]\n );\n var result = Math.ceil(billing_date - today) / (1000 * 60 * 60 * 24);\n return result.toFixed();\n }\n\n};\n\n","import React, { useState, useEffect } from \"react\";\nimport { Card, ListGroup, Row, Col, Button, Modal } from \"react-bootstrap\";\nimport AuthService from \"../../services/AuthService\";\nimport UserService from \"../../services/UserService\";\nimport subscriptions from \"../../services/SubscriptionClass\";\nimport Radio from \"@mui/material/Radio\";\nimport Cookies from \"universal-cookie\";\nimport { formatDateString } from \"./utils\";\nconst SubscriptionCard = ({\n setTopBanner,\n title,\n currentUser,\n setCurrentUser,\n subscription,\n setSubscription,\n}) => {\n const [expiryDate, setExpiryDate] = useState(\"\");\n const [newSubscriptionID, setNewSubscriptionID] = useState(\"\");\n const [popupChangeSub, setPopupChangeSub] = useState(false);\n const [popupChangeSubKvitering, setPopupChangeSubKvitering] = useState(false);\n const [chosenProd, setChosenProd] = useState(\"\");\n const [popupForny, setPopupForny] = useState(false);\n const [popupRenewSub, setPopupRenewSub] = useState(false);\n const [popupFornyKvitering, setPopupFornyKvitering] = useState(false);\n const [productID, setProductID] = useState(\"\");\n const [productExpiry, setProductExpiry] = useState(\"\");\n const [campaign, setCampaign] = useState(false);\n const [campaignPrice, setCampaignPrice] = useState(\"\");\n const [campaignExpiry, setCampaignExpiry] = useState(\"\");\n const [subState, setSubState] = useState();\n const [disableMode, setDisableMode] = useState(false);\n const [changeSubState, setChangeSubState] = useState(false);\n const [subname, setSubName] = useState(\"\");\n const [oneBookCredits, setOneBookCredits] = useState(\"\");\n const [selectedID, setSelectedID] = useState(\"\");\n const [showPopup, setShowPopup] = useState(false);\n const [popupMigrationFailed, setPopupMigrationFailed] = useState(false);\n const [popMsg, setPopUpMsg] = useState(\"\");\n const currentDate = new Date(); //.getDate();\n\n let campaignStartDate = \"\";\n let campaignEndDate = \"\";\n let campaignExceptionProduct = \"\";\n let campaignAllowedProduct = \"\";\n let campaignState = \"\";\n let campaignExceptionProductt = \"\";\n let campaignAllowedProductt = \"\";\n let activeCampaignValues = \"\";\n\n campaignState = activeCampaignValues.subscriptionState\n ? activeCampaignValues.subscriptionState\n : \"\";\n\n useEffect(() => {\n const currentToken = AuthService.getCurrentToken();\n\n UserService.getSubscription(currentToken.access_token)\n .then((response) => {\n //console.log(\"new response\", response); // Access the message here\n })\n .catch((error) => {\n if (\n error.response &&\n error.response.data &&\n error.response.data.message\n ) {\n if (\n error.response.data.message == \"User has no active subscription.\"\n ) {\n setSubState(\"DEACTIVATED\");\n }\n //console.log(\"new error\", error.response.data.message); // Handle error message here\n //console.log(\"SUbState with new error\", subState)\n } else {\n // console.log('An unexpected error occurred');\n }\n });\n\n setProductID(subscription.product_id);\n //setProductExpiry(subscription.expiry_date);\n const dateString = subscription.expiry_date; // ISO 8601 format\n const expiryDateObje = new Date(dateString);\n setExpiryDate(expiryDateObje);\n const currentDate = new Date();\n // console.log(\"dateString\", dateString);\n // console.log(\"subState\", subState);\n // console.log(expiryDateObje,\" < \", currentDate);\n if (subscription.state == \"6\" && expiryDateObje < currentDate) {\n console.log(expiryDateObje, currentDate);\n } else {\n if (\n subscription.product_id == 401 &&\n subscription.state != \"7\" &&\n subscription.state != \"10\"\n ) {\n setNewSubscriptionID(404);\n }\n if (\n subscription.product_id == 402 &&\n subscription.state != \"7\" &&\n subscription.state != \"10\"\n ) {\n setNewSubscriptionID(405);\n }\n if (\n subscription.product_id == 403 &&\n subscription.state != \"7\" &&\n subscription.state != \"10\"\n ) {\n setNewSubscriptionID(406);\n }\n }\n console.log(\"NewSubscriptionID\", newSubscriptionID);\n if (\n subscription.product_id == 1005 ||\n subscription.product_id == 507 ||\n subscription.product_id == 614 ||\n subscription.product_id == 612\n ) {\n //setMissProductID(402);\n } else if (\n subscription.product_id == 1004 ||\n subscription.product_id == 506 ||\n subscription.product_id == 615 ||\n subscription.product_id == 611\n ) {\n //setMissProductID(401);\n } else if (\n subscription.product_id == 1006 ||\n subscription.product_id == 508 ||\n subscription.product_id == 616 ||\n subscription.product_id == 613\n ) {\n //setMissProductID(403);\n }\n setCampaignExpiry(\"06.01.2022\");\n fornyKnapp(false);\n //setProductID(subscription.product_id);\n if (subscription.state === \"3\") {\n setSubState(\"ACTIVE\");\n //setProductID(subscription.product_id);\n }\n if (subscription.state === \"10\") {\n setSubState(\"DEACTIVATED\");\n setProductID(\"\");\n //setProductID(subscription.product_id);\n }\n if (subscription.state === \"1\") {\n setSubState(\"TRIALING\");\n //setProductID(subscription.product_id);\n }\n // console.log(\"expiryDateObje\", dateString, expiryDateObje, currentDate);\n if (dateString != null && expiryDateObje < currentDate) {\n setSubState(\"DEACTIVATED\");\n setProductID(\"\");\n }\n if (subscription.state === \"6\" && expiryDateObje > currentDate) {\n setSubState(\"STOPPED\");\n }\n\n if (subscription.state === \"7\") {\n setSubState(\"DEACTIVATED\");\n setProductID(\"\");\n }\n if ([\"101\", \"201\"].includes(subscription.product_id)) {\n //handleGetCredits();\n }\n\n if ([\"41\", \"42\", \"43\"].includes(subscription.product_id)) {\n //setProductID(\"11\");\n setCampaign(true);\n //setSubState('CAMPAGIN')\n subscriptions.forEach((subscriptionelement) => {\n if (subscriptionelement.id.toString() === subscription.product_id) {\n setCampaignPrice(subscriptionelement.price);\n setCampaignExpiry(subscriptionelement.campaignExpiry);\n }\n });\n if (subscription.product_id === \"42\") {\n setTopBanner(\n \"Forny ditt abonnement på Fabel Basis (høstkampanje) til kampanjepris innen 01.04.2022\"\n );\n fornyKnapp(false);\n }\n } else if (\n [\n \"1\",\n \"11\",\n \"21\",\n \"31\",\n \"101\",\n \"102\",\n \"201\",\n \"202\",\n \"103\",\n \"701\",\n \"702\",\n \"104\",\n \"105\",\n \"106\",\n \"3002\",\n \"2001\",\n \"1001\",\n \"1002\",\n \"107\",\n \"109\",\n \"110\",\n ].includes(subscription.product_id)\n ) {\n if (subscription.product_id === \"1\") {\n setSubscription({ ...subscription, product_id: \"11\" });\n }\n /*if (subscription.product_id === \"109\") {\n setSubscription({ ...subscription, product_id: \"103\" });\n }*/\n\n if (subscription.product_id === \"110\") {\n setSubscription({ ...subscription, product_id: \"110\" });\n }\n\n if (subscription.state === \"3\") {\n setSubState(\"ACTIVE\");\n //setProductID(subscription.product_id);\n }\n if (subscription.state === \"10\") {\n //setProductID(subscription.product_id);\n }\n if (subscription.state === \"1\") {\n setSubState(\"TRIALING\");\n //setProductID(subscription.product_id);\n }\n if (dateString != null && expiryDateObje < currentDate) {\n setSubState(\"DEACTIVATED\");\n setProductID(\"\");\n }\n if (subscription.state === \"6\" && expiryDateObje > currentDate) {\n setSubState(\"STOPPED\");\n }\n if (subscription.state === \"7\") {\n setSubState(\"DEACTIVATED\");\n setProductID(\"\");\n }\n subscriptions.forEach((subscriptionelement) => {\n if (subscriptionelement.id.toString() === subscription.product_id) {\n setSubName(subscriptionelement.name);\n }\n });\n } else if ([\"410\"].includes(subscription.product_id)) {\n setCampaign(true);\n setCampaignPrice(\"139\");\n setCampaignExpiry(\"september 2022\");\n setTopBanner();\n } else if ([\"603\", \"502\"].includes(subscription.product_id)) {\n //setCampaign(true);\n } else if ([\"44\"].includes(subscription.product_id)) {\n setCampaign(true);\n setSubState(\"ACTIVE\");\n //setProductID(\"44\");\n setCampaignPrice(\"139\");\n setCampaignExpiry(\"30.06.2022\");\n setTopBanner();\n }\n }, [subscription, setSubscription]);\n\n const campaignProduct = subscriptions.filter(\n (subscriptionobject) =>\n subscriptionobject.campaignPosition === \"productselector\" &&\n subscriptionobject.campaign === false &&\n subscriptionobject.subscriptionState.includes(subState) &&\n subscriptionobject.spesialtilbud ===\n window.sessionStorage.getItem(\"SpesialtilbudShow\") &&\n currentDate.getTime() >\n new Date(subscriptionobject.startDate).getTime() &&\n new Date(subscriptionobject.endDate).getTime() > currentDate.getTime() &&\n ((expiryDate > currentDate && subscriptionobject.id === 618) ||\n (subscription.expiry_date != null &&\n expiryDate < currentDate &&\n subscriptionobject.id === 512) ||\n (subscription.expiry_date != null &&\n expiryDate > currentDate &&\n subscriptionobject.id === 621))\n );\n console.log(\n \"SpesialtilbudShow\",\n window.sessionStorage.getItem(\"SpesialtilbudShow\")\n );\n console.log(\"subscriptions\", subscriptions);\n console.log(\"productID\", productID);\n\n const winbackMainCampaignProduct = subscriptions.filter(\n (subscriptionobject) =>\n subscriptionobject.spesialtilbud ===\n window.sessionStorage.getItem(\"SpesialtilbudShow\") &&\n subscriptionobject.campaign === true &&\n subscriptionobject.main === false &&\n expiryDate < currentDate &&\n subscription.expiry_date != null &&\n new Date(subscriptionobject.endDate).getTime() > currentDate.getTime() &&\n subscriptionobject.id != productID\n );\n console.log(\"winbackMainCampaignProduct\", winbackMainCampaignProduct);\n const fornyKnapp = (state = false) => {\n return (\n <>\n :\n
\n Kampanjepris. Abbonnementet gjelder t.o.m {campaignExpiry}, deretter\n er det løpende.\n
\n \n
\n \n );\n };\n\n const handleClose = () => {\n setPopupChangeSub(false);\n setPopupForny(false);\n setPopupFornyKvitering(false);\n setPopupChangeSubKvitering(false);\n };\n\n const handleRadioChange = (e) => {\n setSelectedID(e.currentTarget.value);\n window.sessionStorage.setItem(\"selectedProduct\", e.currentTarget.value);\n setPopupChangeSub(true);\n setChosenProd(e.currentTarget.value);\n };\n // console.log(window.dataLayer)\n // console.log(\"origin\", window.location.origin);\n const vippsData = {\n product_id: selectedID,\n campaign_code: \"UTMCAMPAIGN\",\n redirect_url: window.location.origin + \"/vipps-completed\",\n };\n //return;\n const handleResumeSubs = () => {\n const currentToken = AuthService.getCurrentToken();\n\n UserService.resumeSubscription(currentToken.access_token).then(\n (response) => {\n setPopUpMsg(\n \"Abonnementet ditt er gjenopptatt, vi ønsker deg hjertelig velkommen tilbake.\"\n );\n setShowPopup(true);\n //console.log(response);\n },\n (error) => {\n //console.log(error);\n setPopUpMsg(\"Noe gikk galt, vi kunne ikke gjenoppta abonnementet ditt\");\n setShowPopup(true);\n }\n );\n };\n const handleChangeSub = () => {\n //console.log(\"vippsData\", vippsData);\n if (currentUser.payment_type === 6) {\n const currentToken = AuthService.getCurrentToken();\n UserService.vippsIntent(currentToken.access_token, vippsData).then(\n (vipps) => {\n if (vipps.status === 200) {\n window.sessionStorage.setItem(\n \"vippsreference\",\n vipps.data.reference\n );\n window.location.href = vipps.data.confirmation_url;\n //setVippsButtonUrl(vipps.data.confirmation_url);\n } else {\n setPopupChangeSubKvitering(true);\n }\n },\n (error) => {\n setPopupChangeSubKvitering(true);\n }\n );\n } else {\n setDisableMode(true);\n //if (subState == \"\") {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: \"subscription_reactivated\",\n });\n //}\n if (subState === \"STOPPED\" && selectedID === subscription.product_id) {\n handleActivateSubscription();\n } else {\n //console.log(\"selectedID\", selectedID);\n const currentToken = AuthService.getCurrentToken();\n if (currentUser.payment_type === 3) {\n UserService.changeStripeProduct(\n currentToken.access_token,\n selectedID\n ).then(\n (response) => {\n setPopupForny(false);\n setPopupRenewSub(false);\n setPopupChangeSub(false);\n setDisableMode(false);\n setChangeSubState(true);\n setPopupChangeSubKvitering(true);\n //console.log(\"error geting subscription 4.1\");\n },\n (error) => {\n setDisableMode(false);\n setChangeSubState(false);\n setPopupChangeSubKvitering(true);\n //setPopupChangeSubKvitering(true);\n //console.log(\"error geting subscription 4.3\");\n }\n );\n } else if (currentUser.payment_type === 2) {\n UserService.changeInvoiceProduct(\n currentToken.access_token,\n selectedID\n ).then(\n (response) => {\n UserService.getSubscription(currentToken.access_token).then(\n (subscription) => {\n setSubscription(subscription);\n window.location.reload();\n },\n (error) => {\n //console.log(error);\n //console.log(\"error geting subscription 5.0\");\n }\n );\n setPopupForny(false);\n setPopupRenewSub(false);\n setPopupChangeSub(false);\n setDisableMode(false);\n setChangeSubState(true);\n\n setPopupChangeSubKvitering(true);\n },\n (error) => {\n setDisableMode(false);\n setChangeSubState(false);\n setPopupChangeSubKvitering(true);\n //setPopupChangeSubKvitering(true);\n ////console.log(\"error geting subscription 4.3\");\n }\n );\n } else if (currentUser.payment_type === 0) {\n UserService.changeStrexProduct(\n currentToken.access_token,\n selectedID\n ).then(\n (response) => {\n UserService.getSubscription(currentToken.access_token).then(\n (subscription) => {\n setSubscription(subscription);\n },\n (error) => {\n //console.log(error);\n //console.log(\"error geting subscription 5.0\");\n }\n );\n setPopupForny(false);\n setPopupRenewSub(false);\n setPopupChangeSub(false);\n setDisableMode(false);\n setChangeSubState(true);\n\n setPopupChangeSubKvitering(true);\n //console.log(\"error geting subscription 5.1\");\n },\n (error) => {\n //UserService.paymentSwitchLogging(error, currentUser.mobile, subState, selectedID);\n setDisableMode(false);\n setChangeSubState(false);\n setPopupChangeSubKvitering(true);\n //setPopupChangeSubKvitering(true);\n //console.log(\"error geting subscription 5.3\");\n }\n );\n } else {\n console.log(\"inside else condition of payment in change sub\");\n setPopupChangeSubKvitering(true);\n }\n\n /*UserService.changeSubscription(\n currentToken.access_token,\n selectedID\n ).then(\n (response) => {\n \n UserService.getSubscription(currentToken.access_token).then(\n (subscription) => {\n setSubscription(subscription);\n },\n (error) => {\n console.log(error);\n console.log(\"error geting subscription 3.0\");\n }\n );\n setPopupForny(false);\n setPopupRenewSub(false);\n setPopupChangeSub(false);\n setDisableMode(false);\n setChangeSubState(true);\n setPopupChangeSubKvitering(true);\n console.log(\"error geting subscription 3.1\");\n },\n () => {\n setDisableMode(false);\n setChangeSubState(false);\n setPopupChangeSubKvitering(true);\n console.log(\"error geting subscription 3.2\");\n }\n );*/\n }\n }\n };\n\n /*const handleGetCredits = () => {\n const currentToken = AuthService.getCurrentToken();\n UserService.getOneBookCredits(currentToken.access_token).then((credits) => {\n setOneBookCredits(credits.credits);\n });\n };*/\n\n const handleActivateSubscription = () => {\n const currentToken = AuthService.getCurrentToken();\n UserService.activateSubscription(currentToken.access_token).then(\n (subscription) => {\n UserService.getSubscription(currentToken.access_token).then(\n (subscription) => {\n setSubscription(subscription);\n setPopupForny(false);\n setPopupChangeSub(false);\n setDisableMode(false);\n setChangeSubState(true);\n setPopupChangeSubKvitering(true);\n //console.log(\"error geting subscription 2.2\");\n },\n (error) => {\n //console.log(\"error geting subscription\");\n }\n );\n },\n (error) => {\n //console.log(\"error activating subscription\");\n setChangeSubState(false);\n setPopupChangeSubKvitering(true);\n //setPopupChangeSubKvitering(true);\n }\n );\n };\n\n const handleFornyKampanje = () => {\n setPopupForny(true);\n };\n\n const handleFornyKampanjeKvittering = () => {\n const currentToken = AuthService.getCurrentToken();\n\n UserService.subRenewalPOST(\n currentToken.access_token,\n subscription.sub_id,\n subscription.product_id\n ).then(\n (result) => {\n setPopupForny(false);\n setPopupFornyKvitering(true);\n setSubscription({\n next_billing_date: subscription.next_billing_date,\n product_id: subscription.product_id,\n state: \"3\",\n });\n },\n (error) => {\n //console.log(\"error\");\n }\n );\n };\n\n const baseProducts = subscriptions.filter(\n (sub) =>\n sub.campaign === false &&\n sub.main === true &&\n sub.id != newSubscriptionID &&\n sub.id != productID\n );\n const campaignProducts = subscriptions.filter(\n (sub) =>\n sub.campaign === true &&\n sub.main === true &&\n expiryDate < currentDate &&\n subscription.expiry_date != null &&\n new Date(sub.endDate).getTime() > currentDate.getTime() &&\n sub.id != productID\n );\n console.log(\"baseProducts\", baseProducts);\n console.log(\"campaignProducts\", campaignProducts);\n return (\n \n \n \n \n Bekreft fornyet abonnement til kampanjepris​\n \n \n \n Klikk \"Aksepter\" for å bekrefte fornyelse av\n
\n Fabel-abonnement til kampanjepris med bindingstid på seks måneder.\n
\n \n \n \n Aksepter\n \n \n
\n\n \n \n Supert!\n \n Du har fornyet abonnementet til kampanjepris.\n \n \n \n \n\n \n \n \n {subscription.sub ? (\n <>Herlig! Nå kan du starte å lytte igjen\n ) : (\n <>\n Bekreft\n {subState == \"TRIALING\" ? (\n <> abonnementet\n ) : subscription.state == \"6\" ? (\n <>\n ) : (\n <> abonnementsbytte\n )}\n \n )}\n \n \n \n {subState == \"TRIALING\" ? (\n <>\n Abonnementsendringen vil skje umiddelbart. Du vil ikke lenger ha\n gratis prøveperiode.\n \n ) : subscription.state == \"6\" ? (\n <>Jeg ønsker å bestille dette abonnementet\n ) : (\n <>\n {subscription.sub ? (\n <> Ditt nye abonnement trer i kraft umiddelbart.\n ) : (\n <>\n Abonnementsendringen vil skje umiddelbart og den nye prisen\n trer først i kraft ved neste betalingsdato.\n \n )}\n \n )}\n {currentUser.payment_type == \"6\" ? <> : null}\n {currentUser.payment_type == \"0\" ? <> : null}\n \n\n \n \n Avbryt\n \n \n Aksepter\n \n \n \n \n \n Bekreft abonnementet\n \n Abonnementsendringen vil skje umiddelbart.\n\n \n \n Avbryt\n \n \n Aksepter\n \n \n \n\n \n {changeSubState ? (\n <>\n \n Bekreftet\n \n Abonnementet ditt er endret.\n \n ) : (\n <>\n \n Endre betalingsmåte\n \n \n Du må endre betalingsmåte for å velge nytt abonnement.\n \n \n )}\n\n \n \n \n \n\n \n <>\n \n Ups!\n \n Her gikk visst noe galt, prøv igjen om litt.\n \n\n \n \n \n \n\n \n
{title}
\n
\n
\n {/* subState===\"DEACTIVATED\" ? (\n <>\n \n Ditt Fabel-abonnement er stoppet. Du har fremdeles en kostnadsfri brukerkonto, og kan starte opp igjen når du måtte ønske. Velg abonnement under.\n \n \n Ønsker du ikke å ha en kostnadsfri brukerkonto kan du kontakte kundeservice på kontakt@fabel.no\n \n\n
\n \n ) : null */}\n {/* CMPAGIN PRODUCT CHECK IN TXT FILE*/}\n {/*campaignState+\" - \"+subState+\" - \"+campaignState.indexOf(subState)*/}\n {campaignState.indexOf(subState) >= 0 &&\n campaignExceptionProductt.includes(subscription.product_id) === false ? (\n <>\n
\n
\n \n Ditt abonnement på {subname} utløper{\" \"}\n {formatDateString(subscription.expiry_date)}{\" \"}\n \n
\n
\n \n
\n\n \n
\n {activeCampaignValues.welcomeBack}\n
\n
\n \n {activeCampaignValues.seasonTagLine}\n \n
\n {activeCampaignValues.seasonTagLineTwo}\n
\n \n \n ) : null}\n \n {campaignProduct.map((value, key) => {\n const campaignExceptionProduct = value.exceptionProduct;\n const campaignExceptionProductt =\n campaignExceptionProduct == \"all\"\n ? \"all\"\n : campaignExceptionProduct.split(\", \");\n const campaignAllowedProduct = value.allowedProduct;\n const campaignAllowedProductt =\n campaignAllowedProduct == \"all\"\n ? \"all\"\n : campaignAllowedProduct.split(\", \");\n //if((subscription.product_id==\"621\" && subState==\"DEACTIVATED\") || (subscription.product_id!=\"621\")){\n if (\n campaignExceptionProductt.includes(subscription.product_id) ===\n false\n ) {\n if (\n campaignAllowedProductt.includes(subscription.product_id) ===\n true ||\n campaignAllowedProductt == \"all\"\n ) {\n //console.log(\"cvcvc\", value.id)\n return (\n <>\n \n
\n \n {value.seasonTagLine}\n \n
\n \n {value.seasonTagLineTwo}\n \n
\n {value.seasonTagLineThree}\n
\n \n \n \n
\n \n \n
\n
\n

\n {value.nameLarge}\n {/* value.saleprice ? \n <>{value.price} {value.priceMonths} {value.saleprice} {value.priceMonths}\n :\n <>{value.price} {value.priceMonths}\n */}\n

\n

\n {value.slogan}\n
\n {/*value.concurrentStreams} {\" \"}\n {value.concurrentStreams === 1 ? (\n <>samtidig strømming\n ) : (\n <>samtidige strømminger\n )}, {value.profiles */}\n {value.profiles}\n {value.profiles === 1 ? (\n <> profil kan lytte om gangen\n ) : (\n <> profiler kan lytte samtidig\n )}\n

\n
\n
\n \n
\n
\n \n \n );\n }\n }\n //}\n })}\n\n {/*Display user product*/}\n {subscriptions\n .filter((sub) => sub.id == productID)\n .filter((sub) => subState !== \"DEACTIVATED\")\n .map((sub) => (\n \n <>\n
\n \n \n \n \n \n
Gjeldende abonnement:
\n\n

\n {sub.id == 513 ||\n sub.id == 514 ||\n sub.id == 515 ||\n sub.id == 516 ||\n sub.id == 517 ||\n sub.id == 518 ||\n sub.id == 1007 ||\n sub.id == 1008 ||\n sub.id == 1009 ||\n sub.id == 1010 ||\n sub.id == 1011 ||\n sub.id == 519 ||\n sub.id == 1012 ? (\n <>{sub.selectedName ? sub.selectedName + \" \" : \"\"}\n ) : (\n <>\n {sub.name ? sub.name + \" \" : \"\"}\n {sub.saleprice ? (\n \n \n {sub.price} {sub.priceMonths}\n {\" \"}\n {sub.saleprice} {sub.priceMonths}\n \n ) : (\n \n {sub.id == 621 ||\n sub.id == 512 ||\n sub.id == 622 ||\n sub.id == 623\n ? \"\"\n : sub.price + \" \" + sub.priceMonths}\n \n )}\n \n )}\n\n
\n

\n

\n \n \n {/*}\n {sub.concurrentStreams.toString()}{\" \"}\n {sub.concurrentStreams === 1 ? (\n <>samtidig strømming.\n ) : (\n <>samtidige strømminger.\n )}{\" \"}\n {sub.profiles.toString()}{\" \"}\n {*/}\n {sub.slogan}{\" \"}\n {sub.profiles == 1 ? (\n <> {sub.profiles} profil kan lytte om gangen.\n ) : (\n <>{sub.profiles} profiler kan lytte samtidig\n )}\n \n \n {/*productID==101 || productID==201 ? \n (<>\n \n \n

\n Fra 1.mai trenge​r ​du ikke begrense deg til kun en bok i måneden. \n Du har fått abonnementet Standard og kan lytte ubegrenset til alle lydbøker og lydserier i hele sommer. \n Du beholder samme lave pris til 1. august 2024. Se informasjonen vi har sendt deg på e-post eller SMS.\n
\n \n \n
\n )\n : (<>)*/}\n

\n {sub.renewButton == true &&\n sub.renewCondition == subState ? (\n <>\n

\n \n Forny kampanje\n \n

\n \n ) : (\n <>\n )}\n \n \n
\n
\n \n \n \n \n \n
Gjeldende abonnement:
\n\n

\n {sub.name ? sub.name + \"\" : \"\"}\n {sub.saleprice ? (\n \n \n {sub.price} {sub.priceMonths}\n {\" \"}\n {sub.saleprice} {sub.priceMonths}\n \n ) : (\n \n {sub.id == 501 || sub.id == 601\n ? \"\"\n : sub.price + \" \" + sub.priceMonths}\n \n )}\n\n
\n {sub.slogan}\n

\n\n

\n \n \n {sub.concurrentStreams.toString()}{\" \"}\n {sub.concurrentStreams === 1 ? (\n <>samtidig strømming.\n ) : (\n <>samtidige strømminger.\n )}{\" \"}\n {sub.profiles.toString()}{\" \"}\n {sub.profiles == 1 ? (\n <>profil kan lytte om gangen.\n ) : (\n <>profiler kan lytte samtidig\n )}\n \n \n {/*productID==101 || productID==201 ? \n (<>\n \n \n

\n Fra 1.mai trenge​r ​du ikke begrense deg til kun en bok i måneden. \n Du har fått abonnementet Standard og kan lytte ubegrenset til alle lydbøker og lydserier i hele sommer. \n Du beholder samme lave pris til 1. august 2024. Se informasjonen vi har sendt deg på e-post eller SMS.\n
\n \n \n
\n )\n : (<>) */}\n

\n {sub.renewButton == true &&\n sub.renewCondition == subState ? (\n <>\n

\n \n Forny kampanje\n \n

\n \n ) : (\n <>\n )}\n \n \n
\n \n \n ))}\n\n
Våre abonnementer
\n\n {/* Display main products */}\n {winbackMainCampaignProduct.map((sub) => (\n \n
\n \n
\n
\n \n \n
\n <>\n \n \n {sub.seasonTagLine}\n \n

\n {sub.name}{\" \"}\n {sub.saleprice ? (\n <>\n \n {sub.price} {sub.priceMonths}{\" \"}\n {\" \"}\n {sub.saleprice} {sub.priceMonths}{\" \"}\n {sub.salepriceTag}{\" \"}\n \n ) : (\n <>\n )}\n

\n
\n \n  \n \n \n
\n \n \n \n \n {sub.slogan} {sub.profiles.toString()}{\" \"}\n {sub.profiles == 1 ? (\n <>profil kan lytte om gangen\n ) : (\n <>profiler kan lytte samtidig\n )}\n \n \n \n \n ))}\n {campaignProducts != \"\"\n ? campaignProducts.map((sub) => (\n \n
\n \n
\n
\n \n \n {campaign && sub.id == productID ? (\n <>\n
\n Fabel abonnement: {sub.price} kr/mnd med bindingstid\n til {campaignExpiry}.\n
\n
{sub.slogan}
\n
\n Fabel abonnement: {sub.price} kr/mnd med bindingstid\n til {campaignExpiry}.\n
\n
{sub.slogan}
\n \n ) : (\n
\n <>\n \n

\n {sub.name}{\" \"}\n {sub.saleprice ? (\n <>\n \n {sub.price} {sub.priceMonths}{\" \"}\n {\" \"}\n {sub.saleprice} {sub.priceMonths}{\" \"}\n {sub.salepriceTag}{\" \"}\n \n ) : (\n <>\n )}\n

\n
\n \n  \n \n \n
\n )}\n \n \n\n \n \n {/* }\n {sub.concurrentStreams.toString()}{\" \"}\n {sub.concurrentStreams === 1 ? (\n <>samtidig strømming.\n ) : (\n <>samtidige strømminger.\n )}{\" \"}\n {*/}\n {sub.slogan} {sub.profiles.toString()}{\" \"}\n {sub.profiles == 1 ? (\n <>profil kan lytte om gangen\n ) : (\n <>profiler kan lytte samtidig\n )}\n \n \n\n \n \n {campaign && sub.id == productID ? (\n <>\n
\n Kampanjepris. Abonnementet gjelder t.o.m{\" \"}\n {campaignExpiry}, deretter går det automatisk over\n til et løpende abonnement med en månedspris på 179\n kroner.\n
\n
\n {subscription.product_id === \"41\" ? (\n <>\n \n Forny kampanje\n \n \n ) : null}\n \n ) : null}\n \n
\n\n \n \n {!campaign && sub.id == productID ? (\n <>\n
\n Neste betalingsdato er:{\" \"}\n {formatDateString(subscription.next_billing_date)}\n
\n \n ) : null}\n \n
\n \n
\n ))\n : baseProducts.map((sub) => (\n \n
\n \n
\n
\n \n \n {campaign && sub.id == productID ? (\n <>\n
\n Fabel abonnement: {sub.price} kr/mnd med bindingstid\n til {campaignExpiry}.\n
\n
{sub.slogan}
\n
\n Fabel abonnement: {sub.price} kr/mnd med bindingstid\n til {campaignExpiry}.\n
\n
{sub.slogan}
\n \n ) : (\n
\n <>\n \n

\n {sub.name}{\" \"}\n {sub.saleprice ? (\n <>\n \n {sub.price} {sub.priceMonths}{\" \"}\n {\" \"}\n {sub.saleprice} {sub.priceMonths}{\" \"}\n {sub.salepriceTag}{\" \"}\n \n ) : (\n <>\n {sub.price} {sub.priceMonths}{\" \"}\n \n )}\n

\n
\n \n  \n \n \n
\n )}\n \n \n\n \n \n {/* }\n {sub.concurrentStreams.toString()}{\" \"}\n {sub.concurrentStreams === 1 ? (\n <>samtidig strømming.\n ) : (\n <>samtidige strømminger.\n )}{\" \"}\n {*/}\n {sub.slogan} {sub.profiles.toString()}{\" \"}\n {sub.profiles == 1 ? (\n <>profil kan lytte om gangen\n ) : (\n <>profiler kan lytte samtidig\n )}\n \n \n\n \n \n {campaign && sub.id == productID ? (\n <>\n
\n Kampanjepris. Abonnementet gjelder t.o.m{\" \"}\n {campaignExpiry}, deretter går det automatisk over\n til et løpende abonnement med en månedspris på 179\n kroner.\n
\n
\n {subscription.product_id === \"41\" ? (\n <>\n \n Forny kampanje\n \n \n ) : null}\n \n ) : null}\n \n
\n\n \n \n {!campaign && sub.id == productID ? (\n <>\n
\n Neste betalingsdato er:{\" \"}\n {formatDateString(subscription.next_billing_date)}\n
\n \n ) : null}\n \n
\n \n
\n ))}\n
\n
\n *Samtidig strømming betyr hvor mange personer som kan lytte samtidig, på\n hver sin enhet. ​Med egen profil kommer hver bruker rett inn i sin egen\n bok og bokhylle\n
\n
\n );\n};\n\nexport default SubscriptionCard;\n","import { useState, useEffect } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport AuthService from \"../services/AuthService\";\nimport UserService from \"../services/UserService\";\nimport MyPageCard from \"./widgets/MyPageCard\";\nimport PaymentCard from \"./widgets/PaymentCard\";\nimport BookCard from \"./widgets/BookCard\";\nimport SubscriptionCard from \"./widgets/SubscriptionCard\";\nimport \"../styles/mypage.css\";\n\nconst MyPage = ({ setTopBanner, link }) => {\n //define state\n const [redirect, setRedirect] = useState(null);\n const [subState, setSubState] = useState(\"DEACTIVATED\");\n const [userReady, setUserReady] = useState(false);\n const [currentUser, setCurrentUser] = useState({\n username: \"\",\n });\n //console.log(\"subscription currentUser\", subscription, currentUser);\n const yourDate = new Date(currentUser.date_joined);\n const cutoffDate = new Date(\"2024-03-07T00:00:00.000Z\");\n const isBeforeCutoff = yourDate < cutoffDate;\n const [subscription, setSubscription] = useState(null);\n const [subscriptionReady, setSubscriptionReady] = useState(false);\n\n //check auth status\n useEffect(() => {\n const currentToken = AuthService.getCurrentToken();\n\n if (!currentToken) {\n console.log(\"error currentToken\");\n setRedirect({ redirect: \"/\" });\n } else {\n UserService.getUserFromToken(currentToken.access_token)\n .then((user) => {\n UserService.userGetLog(\n \"success MyPage 1: \" + currentToken.access_token,\n JSON.stringify(user),\n JSON.stringify(currentUser),\n );\n //console.log('success getUserFromToken', user);\n setCurrentUser(user);\n setUserReady(true);\n })\n .catch((error) => {\n if (\n error.response &&\n error.response.data &&\n error.response.data.message\n ) {\n const errorMsg = error.response.data.message;\n if (\n errorMsg.includes(\"Token not found\") ||\n errorMsg.includes(\"Token expired\") ||\n errorMsg.includes(\"Invalid Token\")\n ) {\n UserService.userGetLog(\n \"error MyPage 4: \" + currentToken.access_token,\n errorMsg,\n JSON.stringify(currentUser),\n );\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n console.log(\"new error mypage 1\", error.response.data.message); // Handle error message here\n } else {\n console.log(\"An unexpected error occurred\");\n }\n });\n\n /*UserService.getUserFromToken(currentToken.access_token).then(\n (user) => {\n UserService.userGetLog(\"success MyPage 1: \"+currentToken.access_token, JSON.stringify(user), JSON.stringify(currentUser));\n console.log('success getUserFromToken', user);\n setCurrentUser(user);\n setUserReady(true);\n },\n (error) => {\n const errorMsg = error.response.data.message;\n UserService.userGetLog(\"error MyPage 1: \"+currentToken.access_token, JSON.stringify(error), JSON.stringify(currentUser));\n \n if(errorMsg.includes(\"Token not found\") || errorMsg.includes(\"Token expired\") || errorMsg.includes(\"Invalid Token\")){\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n if(JSON.stringify(error).includes(\"Token not found\") || JSON.stringify(error).includes(\"Invalid Token\") || JSON.stringify(error).includes(\"Token expired\")){\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n console.log('error getUserFromToken', error);\n setRedirect({ redirect: \"/\" });\n }\n ).catch(error => {\n if (error.response && error.response.data && error.response.data.message) {\n UserService.userGetLog(\"error MyPage 4: \"+currentToken.access_token, JSON.stringify(error), JSON.stringify(currentUser));\n const errorMsg = error.response.data.message;\n if(errorMsg.includes(\"Token not found\") || errorMsg.includes(\"Token expired\") || errorMsg.includes(\"Invalid Token\")){\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n console.log(\"new error\", error.response.data.message); // Handle error message here\n } else {\n console.log('An unexpected error occurred');\n }\n });;*/\n\n //get sub\n\n UserService.getSubscription(currentToken.access_token)\n .then((subscription) => {\n if (subscription.state === \"3\") {\n setSubState(\"ACTIVE\");\n }\n if (subscription.state === \"10\") {\n setSubState(\"DEACTIVATED\");\n //setProductID(subscription.product_id);\n }\n if (subscription.state === \"1\") {\n setSubState(\"TRIALING\");\n }\n if (subscription.state === \"6\") {\n setSubState(\"STOPPED\");\n }\n setSubscription(subscription);\n setSubscriptionReady(true);\n })\n .catch((error) => {\n setSubscription({\n id: 99,\n sub: true,\n name: \"No subscription\",\n price: 0,\n });\n setSubscriptionReady(true);\n if (\n error.response &&\n error.response.data &&\n error.response.data.message\n ) {\n const errorMsg = error.response.data.message;\n if (\n errorMsg.includes(\"Token not found\") ||\n errorMsg.includes(\"Token expired\") ||\n errorMsg.includes(\"Invalid Token\")\n ) {\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n if (errorMsg == \"User has no active subscription.\") {\n setSubState(\"DEACTIVATED\");\n }\n console.log(\n \"errorMsg\",\n \">\" + errorMsg + \"<\",\n \">\" + error.response.data.message + \"<\",\n );\n console.log(\"new error mypage 2\", error.response.data.message); // Handle error message here\n } else {\n console.log(\"An unexpected error occurred\");\n }\n });\n }\n }, []);\n\n //redirect if not logged in\n if (redirect) {\n return ;\n }\n return (\n
\n
\n

Konto

\n
\n Vi har oppdatert{\" \"}\n \n vilkårene\n \n .\n
\n
\n
\n {userReady && subscriptionReady ? (\n <>\n Brukeropplysninger
}\n setCurrentUser={setCurrentUser}\n currentUser={currentUser}\n />\n Abonnementsinformasjon}\n currentUser={currentUser}\n setCurrentUser={setCurrentUser}\n subscription={subscription}\n setSubscription={setSubscription}\n link={link}\n />\n Fakturering}\n currentUser={currentUser}\n setCurrentUser={setCurrentUser}\n subscription={subscription}\n setSubscription={setSubscription}\n />\n Kjøpte bøker}\n user={currentUser}\n />\n \n ) : null}\n \n );\n};\n\nexport default MyPage;\n","import React, { useState } from 'react'\nimport { useLocation, useHistory } from 'react-router';\nimport { Card, Row, Col, Button, Container, Image, Form } from 'react-bootstrap'\nimport UserService from '../services/UserService';\nimport AuthService from '../services/AuthService';\n\n\nconst Books = () => {\n const location = useLocation();\n const [booksRendered, setBooksRendered] = useState(location.state.books)\n \n const downloadBook = (link) => {\n const currentToken = AuthService.getCurrentToken();\n UserService.downloadBook(currentToken.access_token, link)\n .then(response => {\n window.location.href = response.download_url\n }, (e) => {\n console.log(e)\n })\n }\n let booksCopy = location.state.books\n const search = e => {\n let searchString = e.currentTarget.value.toLowerCase()\n let searchResult = []\n booksCopy.forEach((book) => {\n if (book.title.toLowerCase().includes(searchString)) {\n searchResult.push(book)\n } else if (book.author.split(',').reverse().join(' ').toLowerCase().includes(searchString)) {\n searchResult.push(book)\n }\n })\n setBooksRendered(searchResult)\n }\n const history = useHistory();\n const backToMyPage = () => { \n history.push('/min-side')\n }\n return (\n<>\n \n \n \n \n \n \n \n \n \n
Mine bøker
\n {booksRendered.map(book => (\n \n \n \n \n
{book.title}

{book.author ? book.author : \"\"}\n \n
\n
\n
\n ))}\n
\n \n )\n}\n\nexport default Books\n","import axios from \"axios\";\nimport qs from \"qs\";\n\nconst API_URL = process.env.REACT_APP_FABEL_API_URL\n//const API_URL = \"http://127.0.0.1:8000/\"\n\nclass ClientService {\n getAccessToken() {\n const data = {\n grant_type: 'client_credentials',\n client_id: process.env.REACT_APP_FC_CLIENT_ID,\n client_secret: process.env.REACT_APP_FC_CLIENT_SECRET\n }\n const options = {\n method: 'POST',\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\n data: qs.stringify(data),\n url: API_URL + 'v2/token/'\n }\n return axios(options)\n .then(response => {\n return response.data.access_token\n })\n }\n\n sendSMS(access_token, msisdn) {\n const options = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n data: JSON.stringify({mobile: msisdn}),\n url: API_URL + 'v2/user/reset-password'\n }\n return axios(options)\n .then(response => {\n return response.data;\n });\n }\n\n changePassword(access_token, password, code, msisdn) {\n const options = {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n data: JSON.stringify({password: password, code: code, mobile: msisdn}),\n url: API_URL + 'v2/registeruser/' \n }\n return axios(options)\n .then(response => {\n return response.data;\n });\n }\n\n}\n\n\nexport default new ClientService()","import React, { useState, useRef, useEffect } from \"react\";\nimport {\n Card,\n Container,\n Form,\n FormControl,\n Button,\n Row,\n Col,\n} from \"react-bootstrap\";\nimport { useHistory } from \"react-router-dom\";\nimport ClientService from \"../services/ClientService\";\nimport AuthService from \"../services/AuthService\";\nimport UserService from \"../services/UserService\";\nimport Cookies from \"universal-cookie\";\n\nimport \"../styles/forgotten-password.css\";\n\nconst ForgottenPassword = () => {\n const cookies = new Cookies();\n const [msisdn, setMsisdn] = useState(\"\");\n const [isDisabled, setIsDisabled] = useState(false);\n const [password, setPassword] = useState(\"....\");\n const [confirmPassword, setConfirmPassword] = useState(\"\");\n const [step, setStep] = useState(1);\n const [accessToken, setAccessToken] = useState(\"\");\n const history = useHistory();\n const [smsCode1, setSmsCode1] = useState(\"\");\n const [smsCode2, setSmsCode2] = useState(\"\");\n const [smsCode3, setSmsCode3] = useState(\"\");\n const [smsCode4, setSmsCode4] = useState(\"\");\n const sms1 = useRef(null);\n const sms2 = useRef(null);\n const sms3 = useRef(null);\n const sms4 = useRef(null);\n const pwdRef = useRef(null);\n const [userMessage, setUserMessage] = useState({\n showMessage: false,\n message: \"\",\n messageType: null,\n });\n\n useEffect(() => {});\n\n const backToLogin = () => {\n history.push(\"/\");\n };\n\n const handleChange = (e) => {\n setMsisdn(\"47\" + e.currentTarget.value);\n };\n\n const clearMessage = () => {\n setUserMessage({\n showMessage: false,\n message: \"\",\n messageType: null,\n });\n };\n\n const handleChangeSms = (e) => {\n const name = e.currentTarget.name;\n let value = e.currentTarget.value;\n if (e.currentTarget.value.length > 1) {\n value = value.slice(0, 4);\n setSmsCode1(value[0]);\n setSmsCode2(value[1]);\n setSmsCode3(value[2]);\n setSmsCode4(value[3]);\n } else {\n switch (name) {\n case \"sms1\":\n setSmsCode1(value);\n break;\n case \"sms2\":\n setSmsCode2(value);\n break;\n case \"sms3\":\n setSmsCode3(value);\n break;\n case \"sms4\":\n setSmsCode4(value);\n break;\n default:\n break;\n }\n }\n };\n /*const handleChangeSms = e => {\n const name = e.currentTarget.name\n let value = e.currentTarget.value\n if (e.currentTarget.value.length > 1) {\n value = value.slice(0, 4)\n }\n setSmsCode1(value[0])\n setSmsCode2(value[1])\n setSmsCode3(value[2])\n setSmsCode4(value[3])\n switch(name) {\n case 'sms1':\n setSmsCode1(value)\n break;\n case 'sms2':\n setSmsCode2(value)\n break;\n case 'sms3':\n setSmsCode3(value)\n break;\n case 'sms4':\n setSmsCode4(value)\n break; \n default:\n break;\n }\n }*/\n\n const handleChangePswd = (e) => {\n setPassword(e.currentTarget.value);\n };\n\n const handleChangeConfirmPswd = (e) => {\n setConfirmPassword(e.currentTarget.value);\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n if (msisdn.length == 10) {\n ClientService.getAccessToken().then((response) => {\n setAccessToken(response);\n ClientService.sendSMS(response, msisdn).then(\n (response) => {\n setUserMessage({\n showMessage: true,\n message: \"Vi har sendt deg en sms.\",\n messageType: \"alert-success\",\n });\n setStep(2);\n },\n () => {\n console.log(\"dddd\");\n },\n );\n });\n } else {\n console.log(\"to long or short phonenr\");\n setUserMessage({\n showMessage: true,\n message: \"Ikke gyldig mobilnummer.\",\n messageType: \"alert-danger\",\n });\n }\n };\n\n const handleSubmitNew = (e) => {\n e.preventDefault();\n ClientService.getAccessToken().then((response) => {\n setAccessToken(response);\n ClientService.sendSMS(response, msisdn).then(\n (response) => {\n setUserMessage({\n showMessage: true,\n message: \"Vi har sendt deg en ny sms på nytt.\",\n messageType: \"alert-success\",\n });\n setStep(2);\n },\n () => {},\n );\n });\n };\n\n const handleSubmitPassword = (e) => {\n e.preventDefault();\n\n if (password === confirmPassword) {\n setIsDisabled(true);\n const smsCodeConcatinated =\n smsCode1 + smsCode2 + smsCode3 + smsCode4;\n ClientService.changePassword(\n accessToken,\n password,\n smsCodeConcatinated,\n msisdn,\n ).then(\n (response) => {\n console.log(\"password changed\");\n AuthService.login(msisdn, password).then(\n () => {\n // setSubmitState(stateUpdate);\n const currentToken = AuthService.getCurrentToken();\n const encryptedUserPass =\n AuthService.getEncryptedCredentials(\n msisdn,\n password,\n );\n\n //console.log('encryptedUserPass', encryptedUserPass);\n //return;\n const userSubscription =\n UserService.getSubscription(\n currentToken.access_token,\n ).then(\n (subscription) => {\n history.push(\"min-side\");\n window.location.reload();\n },\n (error) => {},\n );\n const dataPromise = userSubscription\n .then((response) => {\n const encryptedData =\n encryptedUserPass.then((response) => {\n history.push(\"min-side\");\n window.location.reload();\n });\n })\n .catch((error) => {\n console.log(\"error: \" + error);\n history.push(\"/min-side\");\n const encryptedData =\n encryptedUserPass.then(\n (response) => {},\n );\n });\n },\n (error) => {\n //const resMessage = \"Passord og mobilnummer stemmer ikke overrens.\";\n /*setSubmitState({\n submitted: true,\n isError: true,\n message: resMessage,\n });*/\n },\n );\n //goToLogin()\n },\n (error) => {\n setIsDisabled(false);\n setSmsCode1(\"\");\n setSmsCode2(\"\");\n setSmsCode3(\"\");\n setSmsCode4(\"\");\n setUserMessage({\n showMessage: true,\n message: \"Feil sms kode.\",\n messageType: \"alert-danger\",\n });\n\n console.log(\"password changed fail\");\n },\n );\n } else {\n console.log(\"passwords do not match\");\n setUserMessage({\n showMessage: true,\n message: \"Passordene samsvarer ikke.\",\n messageType: \"alert-danger\",\n });\n }\n };\n const goToLogin = () => {\n history.push(\"/\");\n };\n\n const handleFocus = (e) => {\n if (e.currentTarget.value.length === 1) {\n switch (e.currentTarget.name) {\n case \"sms1\":\n sms2.current.focus();\n sms2.current.select();\n break;\n case \"sms2\":\n sms3.current.focus();\n sms3.current.select();\n break;\n case \"sms3\":\n sms4.current.focus();\n sms4.current.select();\n break;\n case \"sms4\":\n pwdRef.current.focus();\n break;\n default:\n break;\n }\n }\n };\n\n const handleFocuss = (e) => {\n if (e.currentTarget.value.length === 1) {\n switch (e.currentTarget.name) {\n case \"sms1\":\n sms1.current.select();\n break;\n case \"sms2\":\n sms2.current.select();\n break;\n case \"sms3\":\n sms3.current.select();\n break;\n case \"sms4\":\n sms4.current.select();\n break;\n default:\n break;\n }\n }\n };\n switch (step) {\n case 1:\n return (\n \n \n Endre passord\n {/* alert-message */}\n \n {userMessage.message}\n \n\n \n Skriv inn telefonnummeret du bruker til å logge inn\n i Fabel så sender vi deg instruksjoner for å lage et\n nytt passord.\n \n \n
\n Mobilnummer\n \n \n
\n \n Tilbake til innlogging\n \n \n
\n );\n\n case 2:\n return (\n \n \n Endre passord\n {/* alert-message */}\n \n {userMessage.message}\n \n \n \n SMS-kode\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Send ny kode\n \n \n \n \n Nytt passord\n \n \n \n Gjenta passord\n \n \n \n Bekreft\n \n
\n \n Tilbake til innlogging\n \n \n
\n );\n default:\n break;\n }\n};\n\nexport default ForgottenPassword;\n","import React, { useState, useRef, useEffect } from 'react'\nimport { Card, Container, Form, FormControl, Button, Row, Col } from 'react-bootstrap'\nimport { useHistory } from \"react-router-dom\";\nimport ClientService from '../services/ClientService';\nimport AuthService from \"../services/AuthService\";\nimport UserService from \"../services/UserService\";\nimport Cookies from 'universal-cookie';\n\nimport '../styles/forgotten-password.css'\n\n\nconst ResetPassword = () => {\n// const queryParameters = new URLSearchParams(window.location.search)\n const usernameParam = window.sessionStorage.getItem('usernameParam'); //queryParameters.get(\"username\")\n const cookies = new Cookies();\n const [msisdn, setMsisdn] = useState('');\n const [password, setPassword] = useState('....')\n const [confirmPassword, setConfirmPassword] = useState('')\n const [step, setStep] = useState(2)\n const [accessToken, setAccessToken] = useState('')\n const history = useHistory();\n const [smsCode1, setSmsCode1] = useState('');\n const [smsCode2, setSmsCode2] = useState('');\n const [smsCode3, setSmsCode3] = useState('');\n const [smsCode4, setSmsCode4] = useState('');\n const sms1 = useRef(null)\n const sms2 = useRef(null)\n const sms3 = useRef(null)\n const sms4 = useRef(null)\n const pwdRef = useRef(null)\n const [userMessage, setUserMessage] = useState({\n showMessage: false,\n message: '',\n messageType: null\n })\n\n useEffect(() => {\n setMsisdn('47' + usernameParam);\n console.log(\"msisdn\", msisdn);\n ClientService.getAccessToken().then(response => {\n setAccessToken(response)\n ClientService.sendSMS(response, '47' + usernameParam).then(response => {\n setUserMessage({\n showMessage: true,\n message: 'Vi har sendt deg en ny sms på nytt.',\n messageType: \"alert-success\"\n }); \n setStep(2)\n }, () => {\n })\n })\n }, [usernameParam])\n\n const backToLogin = () => {\n history.push('/')\n }\n\n const handleChange = e => {\n setMsisdn('47' + e.currentTarget.value)\n }\n\n const clearMessage = () => {\n setUserMessage({\n showMessage: false,\n message: '',\n messageType: null\n }); \n }\n\n const handleChangeSms = e => {\n const name = e.currentTarget.name\n let value = e.currentTarget.value\n if (e.currentTarget.value.length > 1) {\n value = value.slice(0, 4)\n setSmsCode1(value[0])\n setSmsCode2(value[1])\n setSmsCode3(value[2])\n setSmsCode4(value[3])\n } else {\n switch(name) {\n case 'sms1':\n setSmsCode1(value)\n break;\n case 'sms2':\n setSmsCode2(value)\n break;\n case 'sms3':\n setSmsCode3(value)\n break;\n case 'sms4':\n setSmsCode4(value)\n break; \n default:\n break;\n }\n }\n \n \n }\n\n const handleChangePswd = e => {\n setPassword(e.currentTarget.value)\n }\n\n const handleChangeConfirmPswd = e => {\n setConfirmPassword(e.currentTarget.value)\n }\n\n const handleSubmit = (e) => {\n e.preventDefault();\n if (msisdn.length == 10) {\n ClientService.getAccessToken().then(response => {\n setAccessToken(response)\n ClientService.sendSMS(response, msisdn).then(response => {\n setUserMessage({\n showMessage: true,\n message: 'Vi har sendt deg en sms.',\n messageType: \"alert-success\"\n }); \n setStep(2)\n }, () => {\n console.log('dddd')\n })\n }) \n } else {\n console.log('to long or short phonenr')\n setUserMessage({\n showMessage: true,\n message: 'Ikke gyldig mobilnummer.',\n messageType: \"alert-danger\"\n }); \n }\n }\n\n const handleSubmitNew = (e) => {\n e.preventDefault();\n ClientService.getAccessToken().then(response => {\n setAccessToken(response)\n ClientService.sendSMS(response, msisdn).then(response => {\n setUserMessage({\n showMessage: true,\n message: 'Vi har sendt deg en ny sms på nytt.',\n messageType: \"alert-success\"\n }); \n setStep(2)\n }, () => {\n })\n })\n }\n\n\n\n const handleSubmitPassword = (e) => {\n e.preventDefault();\n if (password === confirmPassword) {\n const smsCodeConcatinated = smsCode1 + smsCode2 + smsCode3 + smsCode4\n ClientService.changePassword(accessToken, password, smsCodeConcatinated, msisdn)\n .then(response => {\n console.log('password changed');\n AuthService.login(msisdn, password).then(\n () => {\n // setSubmitState(stateUpdate);\n const currentToken = AuthService.getCurrentToken();\n const encryptedUserPass = AuthService.getEncryptedCredentials(msisdn, password);\n \n //console.log('encryptedUserPass', encryptedUserPass);\n //return;\n const userSubscription = UserService.getSubscription(\n currentToken.access_token\n );\n const dataPromise = userSubscription\n .then((response) => {\n \n const encryptedData = encryptedUserPass\n .then((response) => {\n //const link = process.env.REACT_APP_FABEL_WP_URL+\"SSO/sso_login_v2.php?secret=fabel_sso_key&url=\"+process.env.REACT_APP_FABEL_WP_URL+\"lydbok&cred=\" +encodeURI(response)\n //const link = process.env.REACT_APP_FABEL_WP_URL+\"SSO/sso_login_v2.php?secret=fabel_sso_key&url=\"+process.env.REACT_APP_FABEL_WP_URL+\"lydbok&username=\" +btoa(username) +\"&password=\" +btoa(password)\n //cookies.set('link', link, { path: '/' });\n history.push(\"min-side\");\n window.location.reload();\n })\n \n })\n .catch((error) => {\n console.log(\"error: \" + error);\n history.push(\"/min-side\");\n //console.log(\"fabel_connect_token_v22\", window.sessionStorage.getItem('fabel_connect_token_v2'));\n const encryptedData = encryptedUserPass\n .then((response) => {\n //const link = process.env.REACT_APP_FABEL_WP_URL+\"SSO/sso_login_v2.php?secret=fabel_sso_key&url=\"+process.env.REACT_APP_FABEL_WP_URL+\"lydbok&cred=\" +encodeURI(response)\n //const link = process.env.REACT_APP_FABEL_WP_URL+\"SSO/sso_login_v2.php?secret=fabel_sso_key&url=\"+process.env.REACT_APP_FABEL_WP_URL+\"lydbok&username=\" +btoa(username) +\"&password=\" +btoa(password)\n //cookies.set('link', link, { path: '/' });\n })\n \n });\n },\n (error) => {\n //const resMessage = \"Passord og mobilnummer stemmer ikke overrens.\";\n /*setSubmitState({\n submitted: true,\n isError: true,\n message: resMessage,\n });*/\n }\n );\n //goToLogin()\n }, error => {\n setUserMessage({\n showMessage: true,\n message: 'Feil sms kode.',\n messageType: \"alert-danger\"\n }); \n \n console.log('password changed fail')\n })\n } else {\n \n console.log('passwords do not match')\n setUserMessage({\n showMessage: true,\n message: 'Passordene samsvarer ikke.',\n messageType: \"alert-danger\"\n }); \n }\n\n }\n const goToLogin = () => {\n history.push('/')\n }\n\n\n const handleFocus = e => {\n if (e.currentTarget.value.length === 1) {\n switch(e.currentTarget.name) {\n case \"sms1\":\n sms2.current.focus()\n break;\n case \"sms2\":\n sms3.current.focus()\n break;\n case \"sms3\":\n sms4.current.focus()\n break;\n case \"sms4\":\n pwdRef.current.focus()\n break;\n default:\n break;\n }\n }\n }\n return (\n \n \n \n \n Endre passord\n \n {/* alert-message */}\n
\n {userMessage.message}\n
\n\n
\n
\n SMS-kode\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Nytt passord\n \n Gjenta passord\n \n \n Bekreft\n
\n \n \n \n
\n )\n\n}\n\nexport default ResetPassword\n","import React, { useEffect, useState } from 'react'\nimport { Card, Form, FormControl, Button, Modal } from 'react-bootstrap'\nimport { Redirect } from \"react-router-dom\";\n\nimport AuthService from '../services/AuthService'\nimport UserService from '../services/UserService'\nimport '../styles/terminate-sub.css'\nimport { useHistory } from 'react-router'\n\nconst TerminateSubscripton = () => {\n const [redirect, setRedirect] = useState(null);\n const [otherText, setOtherText] = useState('')\n const [otherTextKomplisert, setOtherTextKomplisert] = useState('')\n const [checkedRadio, setCheckedRadio] = useState(4)\n const [checkedRadioKomplisert, setCheckedRadioKomplisert] = useState(23)\n const [userReady, setUserReady] = useState(false);\n const [isDisabled, setIsDisabled] = useState(false);\n const [currentUser, setCurrentUser] = useState({\n username: \"\",\n });\n const history = useHistory();\n const [showPopup, setShowPopup] = useState(false)\n const [popMsg, setPopUpMsg] = useState('')\n\n \n\n\n const handleChangeOtherText = e => {\n setOtherText(e.currentTarget.value)\n }\n const handleChangeOtherTextKomplisert = e => {\n setOtherTextKomplisert(e.currentTarget.value)\n }\n\n useEffect(() => {\n const currentToken = AuthService.getCurrentToken()\n UserService.getUserFromToken(currentToken.access_token).then(\n (user) => {\n UserService.userGetLog(\"Terminate Page 1\", user, JSON.stringify(currentUser));\n console.log('success getUserFromToken');\n setCurrentUser(user);\n setUserReady(true);\n \n }).catch(error => {\n if (error.response && error.response.data && error.response.data.message) {\n \n const errorMsg = error.response.data.message;\n if(errorMsg.includes(\"Token not found\") || errorMsg.includes(\"Token expired\") || errorMsg.includes(\"Invalid Token\")){\n UserService.userGetLog(\"error Terminate Page: \"+currentToken.access_token, errorMsg, JSON.stringify(currentUser));\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n console.log(\"new error mypage 1\", error.response.data.message); // Handle error message here\n } else {\n console.log('An unexpected error occurred');\n }\n });\n }, [])\n\n const handleSubmit = () => {\n setIsDisabled(true)\n console.log(otherText, checkedRadio, checkedRadioKomplisert)\n let comment = \"\";\n let commentK = \"\";\n switch(checkedRadio) {\n case 0:\n comment = \"For dyrt.\";\n break;\n case 1:\n comment = \"For lite relevant innhold.\";\n break;\n case 2:\n comment = \"For ustabil tjeneste.\";\n break;\n case 3:\n comment = \"Hører for lite på lydbøker\"\n break;\n case 4:\n comment = otherText;\n break;\n default:\n break;\n }\n\n switch(checkedRadioKomplisert) {\n case 21:\n commentK = \"Tekniske problemer med appen\";\n break;\n case 22:\n commentK = \"Å velge lydbok\";\n break;\n case 23:\n commentK = otherTextKomplisert;\n break;\n default:\n break;\n }\n\n \n\n const comments = comment+' - '+commentK;\n \n const currentToken = AuthService.getCurrentToken() \n\n UserService.terminateSubscription(currentToken.access_token, comments)\n .then((response) => {\n UserService.cancelSubscriptionLog(\"success\", response, comments, currentUser.mobile);\n setPopUpMsg('Du har fremdeles en kostnadsfri brukerkonto, og kan starte opp igjen med et nytt abonnement når du måtte ønske.');\n setShowPopup(true); \n console.log(response);\n }, (error) => {\n console.log(error);\n UserService.cancelSubscriptionLog(\"error\", error, comments, currentUser.mobile);\n setPopUpMsg('Noe gikk galt vi klarte ikke å stoppe ditt abo');\n setShowPopup(true); \n })\n\n }\n\n const handleClose = () => {\n setShowPopup(false)\n };\n\n const handleRadioChangeKomplisert = e => {\n \n setCheckedRadioKomplisert(parseInt(e.currentTarget.id))\n }\n\n const handleRadioChange = e => {\n \n document.getElementById('warning-message-3').style.display = \"none\";\n document.getElementById('warning-message-0').style.display = \"none\";\n document.getElementById('warning-message-2').style.display = \"none\";\n setCheckedRadio(parseInt(e.currentTarget.id))\n document.getElementById('warning-message-'+e.currentTarget.id).style.display = \"block\";\n }\n\n const goToMyPage = () => {\n history.push({\n pathname: '/min-side'\n })\n }\n if (redirect) {\n return ;\n }\n return (\n \n\n \n \n Abonnementet er stoppet.\n \n\n {popMsg}\n \n
\n Ønsker du ikke å ha en kostnadsfri brukerkonto kan du kontakte kundeservice på kontakt@fabel.no\n
\n
\n \n
\n
\n\n
\n\n \n Er du helt sikker?\n \n\n \n Vi legger kontinuerlig ut nye lydbøker og -serier i appen, slik at det alltid er noe tilgjengelig for enhver smak.

\n For at vi skal kunne forbedre oss setter vi stor pris på at du forteller oss hvorfor du stoppet abonnementet:\n \n \n
\n \n\n \n \n
Lydbøker lar deg utnytte tiden din bedre ved å lytte mens du gjør andre ting, som å kjøre, trene eller gjøre husarbeid. På den måten kan du konsumere litteratur når du ellers ikke ville hatt tid.
Her kan du finne et abonnement som passer deg bedre
\n
\n\n \n\n \n \n
\n \n \n \n
\n \n \n
\n
\n \n\n \n \n
\n Med Fabel trenger du ikke forholde deg til et maks antall lyttetimer per måned. Fra kun 199 kroner per mnd kan du lytte så mye du vil.\n
Her kan du finne et abonnement Som passer bedre\n
\n
\n\n \n \n \n
\n STOPP ABONNEMENTET
\n \n
\n
\n )\n}\n\nexport default TerminateSubscripton\n","//import React, { useState } from 'react'\n//import UserService from '../services/UserService'\n//import { useNavigate, useParams, useSearchParams } from \"react-router-dom\";\n\nconst YesToNewsletter = () => {\n //const [searchParams] = useSearchParams();\n const email = \"wajid@test.com\";\n //console.log(email);\n return (\n
\n
\n {email}\n
\n
\n )\n}\n\nexport default YesToNewsletter\n","export default __webpack_public_path__ + \"static/media/loading.d3fbaf2b.gif\";","import {useEffect, useState} from 'react';\nimport { useHistory } from 'react-router';\nimport { Redirect } from \"react-router-dom\";\n\nimport \"../styles/vippsuccess.css\";\n//import { useSearchParams } from \"react-router-dom\";\n//import PaymentService from \"../services/PaymentService\";\nimport AuthService from \"../services/AuthService\";\nimport UserService from \"../services/UserService\";\nimport vippslogo from \"../images/vipps-logo.jpg\";\nimport loadingImage from \"../images/loading.gif\";\nfunction VippsSuccess() {\n //const navigate = useNavigate();\n const [redirect, setRedirect] = useState(null);\n const [vippsMessage, setVippsMessage] = useState(null)\n const [vippsLoading, setVippsLoading] = useState(false)\n const [userReady, setUserReady] = useState(false);\n const [currentUser, setCurrentUser] = useState({\n username: \"\",\n });\n const queryParameters = new URLSearchParams(window.location.search)\n const productId = queryParameters.get(\"product_id\")\n const history = useHistory();\n // const searchParams = useSearchParams();\n //const user_id = searchParams.get(\"user_id\")\n //const productId = searchParams.get(\"product_id\")\n const currentToken = AuthService.getCurrentToken();\n //const accessToken = localStorage.getItem(process.env.REACT_APP_USER_ACCESS_TOKEN);\n const vippsData = {\n \"product_id\": window.sessionStorage.getItem('selectedProduct'), //productId,\n \"utm_campaign\": \"UTMCAMPAIGN\",\n \"reference\": window.sessionStorage.getItem('vippsreference')\n }\n useEffect(() => {\n /*console.log(\"user_id\", user_id);\n console.log(\"product_id\", productId);\n console.log(\"accessToken\", accessToken);\n console.log(\"vippsreference\", localStorage.getItem(\"vippsreference\"));*/\n const delayedFunction = () => {\n UserService.vippsSubscription(currentToken.access_token, vippsData)\n .then((vipps) => {\n UserService.getUserFromToken(currentToken.access_token).then(\n (user) => {\n UserService.userGetLog(\"Vipps Success Page 1\", user, JSON.stringify(currentUser));\n console.log('success getUserFromToken');\n setCurrentUser(user);\n setUserReady(true);\n \n }).catch(error => {\n if (error.response && error.response.data && error.response.data.message) {\n \n const errorMsg = error.response.data.message;\n if(errorMsg.includes(\"Token not found\") || errorMsg.includes(\"Token expired\") || errorMsg.includes(\"Invalid Token\")){\n UserService.userGetLog(\"error Vipps Page: \"+currentToken.access_token, errorMsg, JSON.stringify(currentUser));\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n console.log(\"new error mypage 1\", error.response.data.message); // Handle error message here\n } else {\n console.log('An unexpected error occurred');\n }\n });;\n // UserService.paymentSwitchLogging(vipps, currentUser.mobile, \"\", productId);\n //console.log(\"vipps\", vipps);\n if(vipps.status===200){\n setVippsMessage('Abonnementet ble byttet');\n setVippsLoading(true);\n setTimeout(() => {\n history.push('/min-side')\n }, 8000);\n } else {\n console.log(\"vipps\", vipps);\n setVippsMessage('Noe gikk galt');\n //setVippsMessage('Noe gikk galt - '+ vipps.status + ' - ' +vipps.data.message);\n //setVippsMessage('Noe gikk galt');\n }\n \n \n }).catch(error => {\n setVippsMessage('Noe gikk galt');\n if (error.response && error.response.data && error.response.data.message) {\n \n const errorMsg = error.response.data.message;\n if(errorMsg.includes(\"Token not found\") || errorMsg.includes(\"Token expired\") || errorMsg.includes(\"Invalid Token\")){\n UserService.userGetLog(\"error Vipps Page 2: \"+currentToken.access_token, errorMsg, JSON.stringify(currentUser));\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n //console.log(\"new error mypage 1\", error.response.data.message); // Handle error message here\n } else {\n console.log('An unexpected error occurred');\n }\n });\n }\n const delayTimeout = setTimeout(delayedFunction, 5000);\n return () => {\n clearTimeout(delayTimeout);\n };\n }, [])\n \n if (redirect) {\n return ;\n }\n return (\n
\n
\n

\n \n

\n \"visa-logo\"\n

\n
\n {vippsMessage ? vippsMessage : ''}\n

\n {vippsLoading===true ? \"Loading...\" : ''}\n
\n
\n
\n )\n}\nexport default VippsSuccess;","import \"../styles/receipt.css\";\nimport { useState, useEffect } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport AuthService from \"../services/AuthService\";\nimport UserService from \"../services/UserService\";\nconst Receipt = () => {\n //const [searchParams] = useSearchParams();\n const [recieptList, setRecieptList] = useState([]);\n const [redirect, setRedirect] = useState(null);\n const [showDetails, setShowDetails] = useState(false);\n const [receiptDetails, setReceiptDetails] = useState(false);\n const [currentUser, setCurrentUser] = useState({\n username: \"\",\n });\n useEffect(() => {\n const currentToken = AuthService.getCurrentToken();\n console.log(\"currentToken\", currentToken);\n if (!currentToken) {\n\n setRedirect({ redirect: \"/\" });\n } else {\n UserService.getReceiptList(currentToken.access_token).then(\n (receipt) => {\n setRecieptList(receipt);\n //console.log(receipt)\n },\n (error) => {\n\n }\n );\n UserService.getUserFromToken(currentToken.access_token).then(\n (user) => {\n UserService.userGetLog(\"Recieept Page 1\", user, currentUser);\n setCurrentUser(user);\n }\n ).catch(error => {\n if (error.response && error.response.data && error.response.data.message) {\n \n const errorMsg = error.response.data.message;\n if(errorMsg.includes(\"Token not found\") || errorMsg.includes(\"Token expired\") || errorMsg.includes(\"Invalid Token\")){\n UserService.userGetLog(\"error Recieept Page 1: \"+currentToken.access_token, errorMsg, JSON.stringify(currentUser));\n AuthService.logout();\n setRedirect({ redirect: \"/logg-inn\" });\n }\n console.log(\"new error mypage 1\", error.response.data.message); // Handle error message here\n } else {\n console.log('An unexpected error occurred');\n }\n });;\n }\n }, []);\n if (redirect) {\n return ;\n }\n const toggle = (toggleReference) => {\n setShowDetails(true);\n setReceiptDetails(toggleReference);\n \n //console.log(\"filteredReceipt\", filteredReceipt);\n };\n //console.log(email);\n return (\n
\n
\n
\n
\n
\n
\n Receipt Number\n
\n
\n Price\n
\n
\n Type\n
\n
\n Action\n
\n {recieptList.map((val, key) => (\n <>\n
\n {val.receipt_number}\n
\n
\n {val.price}\n
\n
\n {val.payment_type}\n
\n
\n
toggle(val)}>View
\n
\n \n ))} \n \n
\n
\n
\n
\n {showDetails ? \n
\n
\n
\n \"\"\n
\n
\n

Kvittering

\n
\n
\n
\n
\n
\n \n \n
\n
\n
Fabel Lyd AS
\n Sommerrogata 17, 0255 Oslo\n
\n Org.br: 945 872 357\n
\n
\n Betalt\n
\n No. {receiptDetails.receipt_number}\n
\n
\n
\n
\n
\n
\n
\n
{currentUser.firstname} {currentUser.lastname}
\n {currentUser.email}\n
\n
\n
Dato
\n {receiptDetails.payment_date}\n
\n
\n
\n
\n
\n
\n
\n Periode\n
\n
\n \n
\n
\n
\n
\n
\n Betalingsdato\n
\n
\n Beskrivelse\n
\n \n
\n Pris\n
\n
\n
\n
\n {receiptDetails.payment_date}\n
\n
\n Fabel Fmailie abonnement Stromming av lydboker\n
\n \n
\n {receiptDetails.price} kr\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n MVA\n
\n
\n {receiptDetails.vat} kr\n
\n
\n
\n
\n Totalt \n
\n
\n {receiptDetails.total} kr\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n Betalingsmate: \n
\n
\n {receiptDetails.payment_type}\n
\n \n
\n
\n
\n
\n
\n
\n fabel.no\n
\n
kundeservice
\n kontakt@fabel.no\n
\n
\n
\n : ''} \n
\n )\n}\n\nexport default Receipt\n","import { useState, useEffect } from \"react\";\nimport { useHistory } from 'react-router';\nfunction Spesialtilbud() {\n const history = useHistory();\n useEffect(() => {\n window.sessionStorage.setItem('SpesialtilbudShow', 'true');\n //history.push(\"/tilbakestille-passord\");\n history.push(\"/min-side\");\n }, []);\n \n return (\n
\n \n
\n )\n}\nexport default Spesialtilbud;","import 'bootstrap/dist/css/bootstrap.min.css';\nimport './App.css';\nimport Header from './components/Header';\nimport Footer from './components/Footer';\nimport Login from './components/Login';\nimport RenewToken from './components/RenewToken';\nimport LoginCheck from './components/LoginCheck';\nimport MyPage from './components/MyPage';\nimport Books from './components/Books';\nimport React, { useState, useEffect } from 'react'\nimport 'font-awesome/css/font-awesome.min.css';\nimport { BrowserRouter, Route} from \"react-router-dom\";\nimport ForgottenPassword from './components/ForgottenPassword';\nimport ResetPassword from './components/ResetPassword';\nimport TerminateSubscripton from './components/TerminateSubscripton';\nimport YesToNewsletter from './components/YesToNewsletter';\nimport VippsSuccess from './components/VippsSuccess';\nimport Receipt from './components/Receipt';\nimport Spesialtilbud from './components/Spesialtilbud';\n\n\n\n\nfunction App() {\n const [topBanner, setTopBanner] = useState(false);\n return (\n
\n
\n \n
\n \n }/>\n }/>\n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n );\n}\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\n\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n","import axios from \"axios\";\n\nconst API_URL = process.env.REACT_APP_FABEL_API_URL;\n//const API_URL = \"http://127.0.0.1:8000/\"\n\n//service for all subscription/user purposes\nclass UserService {\n getUserFromToken(access_token) {\n const options = {\n method: \"GET\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n },\n url: API_URL + \"v2/user/\",\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n changeUser(access_token, user) {\n const options = {\n method: \"PATCH\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/user\",\n data: JSON.stringify(user),\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n getReceiptList(access_token) {\n const options = {\n method: \"GET\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/user/subscription/receipt\",\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n sendSMSCode(mobile) {\n const options = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"/v2/user/reset-password\",\n data: JSON.stringify({ mobile: mobile }),\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n changePassword(user) {\n const options = {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/registeruser/\",\n data: JSON.stringify(user),\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n changePasswordOld(access_token, user) {\n const options = {\n method: \"PUT\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/user/\",\n data: JSON.stringify(user),\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n getSubscription = async (access_token) => {\n const options = {\n method: \"GET\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/user/subscription\",\n };\n return axios(options).then((response) => {\n return response.data;\n });\n };\n\n getBooks(access_token, fabel_id) {\n const options = {\n method: \"GET\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/bokbasen/password-credentials/bookshelf\",\n };\n\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n /*getOneBookCredits(access_token) {\n const options = {\n method: \"GET\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/user/subscription/one-book\",\n };\n\n return axios(options).then((response) => {\n return response.data;\n });\n }*/\n\n downloadBook(access_token, link) {\n const options = {\n method: \"POST\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/bokbasen/password-credentials/download-url\",\n data: JSON.stringify({ url: link }),\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n stripeSetupIntent(access_token) {\n const options = {\n method: \"POST\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/payment/stripe/intent\",\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n stripePaymentMethod(access_token, reference) {\n const options = {\n method: \"POST\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/payment/stripe/subscription\",\n data: JSON.stringify({\n product_id: \"\",\n utm_campaign: \"\",\n transaction_id: reference,\n }),\n };\n return axios(options).then((response) => {\n return {\n data: response.data,\n status: response.status,\n };\n });\n }\n\n vippsIntent(access_token, vippsData) {\n const options = {\n method: \"POST\",\n data: {\n product_id: vippsData.product_id,\n campaign_code: vippsData.campaign_code,\n redirect_url: vippsData.redirect_url,\n },\n //data: vippsData,\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/payment/vipps/intent\",\n };\n return axios(options)\n .then((response) => {\n return response;\n })\n .catch(function (error) {\n return error.response.status;\n });\n }\n\n vippsSubscription(access_token, vippsData) {\n //return access_token;\n const options = {\n method: \"POST\",\n data: {\n product_id: vippsData.product_id,\n utm_campaign: vippsData.utm_campaign,\n reference: vippsData.reference,\n },\n //data: vippsData,\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/payment/vipps/subscription\",\n };\n return axios(options)\n .then((response) => {\n return response;\n })\n .catch(function (error) {\n return error.response;\n });\n }\n\n changeSubscription(access_token, product_id) {\n const options = {\n method: \"POST\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/user/subscription\",\n data: JSON.stringify({ product_id: product_id }),\n };\n return axios(options)\n .then((response) => {\n return response.data;\n })\n .then((error) => {\n console.log(error);\n });\n }\n\n changeStripeProduct(access_token, product_id) {\n const options = {\n method: \"PATCH\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/payment/stripe/subscription\",\n data: JSON.stringify({ product_id: product_id }),\n };\n return axios(options).then((response) => {\n return {\n data: response.data,\n status: response.status,\n };\n });\n }\n\n changeInvoiceProduct(access_token, product_id) {\n const options = {\n method: \"PATCH\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/payment/test-invoicing/subscription\",\n data: JSON.stringify({ product_id: product_id }),\n };\n return axios(options).then((response) => {\n return {\n response,\n };\n });\n }\n\n changeStrexProduct(access_token, product_id) {\n const options = {\n method: \"POST\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/payment/strex/subscription\",\n data: JSON.stringify({ product_id: product_id, utm_campaign: \"\" }),\n };\n return axios(options).then((response) => {\n return {\n data: response.data,\n status: response.status,\n };\n //return response.data\n });\n }\n\n redeemGiftcard(access_token, coupon) {\n const options = {\n method: \"POST\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"user/coupon/redemption/\",\n data: JSON.stringify({ coupon: coupon }),\n };\n\n return axios(options).then((response) => {\n return response;\n });\n }\n\n terminateSubscription(access_token, comment) {\n const options = {\n method: \"PATCH\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n //url: API_URL + 'user/subscription/',\n url: API_URL + \"v2/user/subscription/cancel\",\n data: JSON.stringify({\n comment: comment,\n }),\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n resumeSubscription(access_token) {\n const options = {\n method: \"PATCH\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n //url: API_URL + 'user/subscription/',\n url: API_URL + \"v2/user/subscription/resume\",\n /*data: JSON.stringify({\n state: \"6\",\n comment: comment\n })*/\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n activateSubscription(access_token) {\n const options = {\n method: \"PUT\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/user/subscription\",\n data: JSON.stringify({\n state: \"3\",\n }),\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n subRenewalPOST(access_token, sub_id, product_id) {\n const options = {\n method: \"POST\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/user/subscription/renew/\",\n data: JSON.stringify({\n sub_id: sub_id,\n product_id: product_id,\n }),\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n subRenewalGET(access_token) {\n const options = {\n method: \"GET\",\n headers: {\n Authorization: \"Bearer \" + access_token,\n \"Content-Type\": \"application/json\",\n },\n url: API_URL + \"v2/user/subscription/renew/\",\n data: JSON.stringify({\n sub_id: \"\",\n produckt_id: \"\",\n }),\n };\n return axios(options).then((response) => {\n return response.data;\n });\n }\n\n paymentSwitchLogging(\n fromandto,\n responseText,\n currUser,\n currState,\n currProduct,\n accessToken,\n Params\n ) {\n const options = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"Content-Type: application/json\",\n },\n url: \"https://fabel.no/paymentswitchlog.php\",\n data: JSON.stringify({\n text: responseText,\n fromandto: fromandto,\n user: currUser,\n state: currState,\n product: currProduct,\n access_token: accessToken,\n param: Params,\n }),\n };\n return axios(options).then((response) => {\n return response;\n });\n }\n\n cancelSubscriptionLog(response, responseText, comment, currUser) {\n const options = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"Content-Type: application/json\",\n },\n url: \"https://fabel.no/cancelsubscriptionlog.php\",\n data: JSON.stringify({\n text: responseText,\n user: currUser,\n response: response,\n comment: comment,\n }),\n };\n return axios(options).then((response) => {\n return response;\n });\n }\n userGetLog(page, response, user) {\n const options = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"Content-Type: application/json\",\n },\n url: \"https://fabel.no/usergetlog.php\",\n data: JSON.stringify({\n page: page,\n text: response,\n user: user,\n }),\n };\n return axios(options).then((response) => {\n return response;\n });\n }\n}\n\nexport default new UserService();\n","import axios from 'axios';\nimport qs from 'qs';\n\nconst API_URL = process.env.REACT_APP_FABEL_API_URL\n//const API_URL = \"http://127.0.0.1:8000/\"\n\n//service for all authentication purposes\nclass AuthService {\n login(username, password) {\n const data = {\n grant_type: 'password',\n username: username,\n password: password,\n client_id: process.env.REACT_APP_FC_CLIENT_ID,\n client_secret: process.env.REACT_APP_FC_CLIENT_SECRET,\n }\n\n \n const options = {\n method: 'POST',\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\n data: qs.stringify(data),\n url: API_URL + 'v2/token/',\n } \n \n return axios(options)\n .then(response => {\n //console.log(\"response\", response);\n if (response.data.access_token) {\n let today = new Date()\n let currentLocalTime = today.toLocaleTimeString();\n today.setMinutes(today.getMinutes() + 45);\n let updatedLocalTime = today.toLocaleTimeString();\n today.setMinutes(today.getMinutes() + 15);\n let maxTokenExpireTime = today.toLocaleTimeString();\n\n\n //today.setHours(today.getHours() + 1)\n const responseWithExpiry = {...response.data, expiration: updatedLocalTime, maxtime: maxTokenExpireTime}\n window.sessionStorage.setItem('fabel_connect_token', JSON.stringify(responseWithExpiry))\n //window.sessionStorage.setItem('fabel_connect_token', JSON.stringify(responseWithExpiry), {expires: 7}, {sameSite: 'Lax'})\n \n }\n return response.data;\n })\n }\n\n logout() {\n window.sessionStorage.removeItem('SpesialtilbudShow') ;\n window.sessionStorage.removeItem('fabel_connect_token', { path: '/' })\n \n }\n \n refreshAccessToken(refreshToken) {\n const data = {\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n client_id: process.env.REACT_APP_FC_CLIENT_ID,\n client_secret: process.env.REACT_APP_FC_CLIENT_SECRET,\n }\n\n \n const options = {\n method: 'POST',\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\n data: qs.stringify(data),\n url: API_URL + 'v2/token/',\n } \n \n return axios(options)\n .then(response => {\n //console.log(\"response\", response);\n if (response.data.access_token) {\n let today = new Date()\n let currentLocalTime = today.toLocaleTimeString();\n today.setMinutes(today.getMinutes() + 45);\n let updatedLocalTime = today.toLocaleTimeString();\n today.setMinutes(today.getMinutes() + 15);\n let maxTokenExpireTime = today.toLocaleTimeString();\n\n\n //today.setHours(today.getHours() + 1)\n const responseWithExpiry = {...response.data, expiration: updatedLocalTime, maxtime: maxTokenExpireTime}\n window.sessionStorage.setItem('fabel_connect_token', JSON.stringify(responseWithExpiry))\n //window.sessionStorage.setItem('fabel_connect_token', JSON.stringify(responseWithExpiry), {expires: 7}, {sameSite: 'Lax'})\n \n }\n return response.data;\n })\n }\n\n\n getCurrentToken() {\n if (window.sessionStorage.getItem('fabel_connect_token')) {\n const currentTime = new Date()\n const accessTokenExpiration = new Date(JSON.parse(window.sessionStorage.getItem('fabel_connect_token')).expiration)\n if (currentTime > accessTokenExpiration) {\n //console.log(\"refresh me please\")\n this.logout();\n }\n return JSON.parse(window.sessionStorage.getItem('fabel_connect_token'))\n }\n else {\n return false\n }\n }\n\n \n\n getEncryptedCredentials(user, pass) {\n const data = {\n username: user,\n password: pass\n }\n \n const options = {\n method: 'POST',\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\n data: qs.stringify(data),\n url: process.env.REACT_APP_FABEL_WP_URL + 'SSO/encryptcred.php',\n }\n \n \n return axios(options)\n .then(response => {\n \n return response.data;\n })\n }\n //Not used\n getEncrypted() {\n if (window.sessionStorage.getItem('fabel_connect_token')) {\n const currentTime = new Date()\n const accessTokenExpiration = new Date(JSON.parse(window.sessionStorage.getItem('fabel_connect_token')).expiration)\n if (currentTime > accessTokenExpiration) {\n //console.log(\"refresh me please\")\n }\n return JSON.parse(window.sessionStorage.getItem('fabel_connect_token'))\n }\n else {\n return false\n }\n }\n\n}\n\n\nexport default new AuthService();"],"sourceRoot":""}