{"version":3,"file":"1855-d71ec9cd.pkg.js","mappings":"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","sources":["webpack://frontend-build-tools/./src/app/depositFlow/context/ExtraInputs.js","webpack://frontend-build-tools/./src/app/withdrawFlow/context/ExtraInputs.js","webpack://frontend-build-tools/./src/app/registerFlow/constants/sessionStorage.js","webpack://frontend-build-tools/./src/app/registerFlow/context/Auth.js","webpack://frontend-build-tools/./src/app/registerFlow/Helpers/PrivateRoute.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Helpers/userVerification.js","webpack://frontend-build-tools/./src/app/registerFlow/Helpers/populate.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/Login.jsx","webpack://frontend-build-tools/./src/app/registerFlow/constants/errors.js","webpack://frontend-build-tools/./src/app/registerFlow/containers/ErrorMessage.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/LoginFail.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/LoginError.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/FirstTimeSecureLogin.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/NemIdFail.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/RegisterAlertDocumentaionNeeded.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/RegisterSuccess.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/Signup.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/DepositLimit/DepositLimit.jsx","webpack://frontend-build-tools/./src/app/registerFlow/context/ExtraInputs.js","webpack://frontend-build-tools/./src/app/registerFlow/Views/Marketing/Marketing.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/PersonalInformation/PersonalInformation.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/PersonalNumber/PersonalNumber.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/PersonalNumber/PersonalNumberConfirm.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/PersonalNumber/PersonalNumberFail.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/Profile/Profile.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/SecurityQuestion/SecurityQuestion.jsx","webpack://frontend-build-tools/./src/app/shared/store/slices/documentationSlice.js","webpack://frontend-build-tools/./src/app/registerFlow/Views/Documentation/Documentation.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/Documentation/DocumentationSuccess.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/Documentation/DocumentationPendingVerify.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/Documentation/DocumentationPending.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/Password/ForgotPassword.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/Password/ChangePassword.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/Password/PasswordFailed.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/Password/PasswordSent.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/SessionFail.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/GeneralError.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/PostLogin.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/DetectLogin.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/ConfirmAction.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/ErrorPage.jsx","webpack://frontend-build-tools/./src/foundation/authentication/logout.js","webpack://frontend-build-tools/./src/app/registerFlow/Views/Logout.jsx","webpack://frontend-build-tools/./src/app/registerFlow/Views/DeleteReciept.jsx","webpack://frontend-build-tools/./src/app/registerFlow/RegisterApp.jsx","webpack://frontend-build-tools/./src/app/searchApp/routes.js","webpack://frontend-build-tools/./src/app/searchApp/context/Dictionary.js","webpack://frontend-build-tools/./src/app/searchApp/Views/SearchResults.jsx","webpack://frontend-build-tools/./src/app/searchApp/SearchApp.jsx","webpack://frontend-build-tools/./src/app/popup/context/ExtraInputs.js","webpack://frontend-build-tools/./src/app/shared/StateFetchConfig.js","webpack://frontend-build-tools/./src/app/shared/StateFetch.jsx","webpack://frontend-build-tools/./src/app/shared/StateInit.jsx","webpack://frontend-build-tools/./src/feature/app-wrapper/app-wrapper.js","webpack://frontend-build-tools/./src/foundation/dictionary/dictionary.js","webpack://frontend-build-tools/./src/foundation/url/url.js"],"sourcesContent":["import React from 'react';\r\n\r\nexport default React.createContext({});\r\n","import React from 'react';\r\n\r\nexport default React.createContext({});\r\n","// Constants for sessionStorage\r\nexport const loggedIn = 'loggedIn';\r\nexport const userVerified = 'userVerified';\r\nexport const firstLoginAttempt = 'firstLoginAttempt';\r\nexport const secondLoginAttempt = 'secondLoginAttempt';\r\nexport const randomUsername = 'randomUsername';\r\nexport const fetchPopupActions = 'fetchPopupActions';\r\nexport const hasUploaded = 'hasUploaded';\r\nexport const authProtectedRoute = 'authProtectedRoute';","import React from 'react';\r\n\r\nexport default React.createContext({});\r\n","import React, { useContext } from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport routes from 'app/registerFlow/routes';\r\nimport AuthContext from 'app/registerFlow/context/Auth';\r\n\r\nconst PrivateRoute = (props) => {\r\n\tconst auth = useContext(AuthContext);\r\n\tif (auth.require === 'pid') {\r\n\t\treturn ;\r\n\t}\r\n\tif (auth.require === 'login') {\r\n\t\treturn ;\r\n\t}\r\n\tif (auth.require === 'failed') {\r\n\t\treturn ;\r\n\t}\r\n\treturn ;\r\n};\r\n\r\nexport default PrivateRoute;\r\n","import { unwrapSuccessData } from 'foundation/apiRequest/apiRequest';\r\nimport routes from 'app/popup/routes';\r\nimport { default as registerRoutes } from 'app/registerFlow/routes';\r\nimport { userVerified, hasUploaded } from 'app/registerFlow/constants';\r\nimport { getParam } from 'foundation/url';\r\nimport { authProtectedRoute } from 'app/registerFlow/constants/sessionStorage';\r\n\r\nconst showLastLoginEvent = () => {\r\n const event = new CustomEvent('lastLoginTimeSet');\r\n window.dispatchEvent(event);\r\n};\r\n\r\nexport const checkUserVerification = (response, props) => {\r\n const { data } = unwrapSuccessData(response);\r\n const isAuthProtectedRouteReferrer = sessionStorage.getItem(authProtectedRoute) === 'true';\r\n\r\n if (data?.LastLoginTime !== null) {\r\n sessionStorage.setItem('lastLoginTime', data?.LastLoginTime);\r\n }\r\n\r\n if (data?.UserVerified === 'false') {\r\n sessionStorage.setItem(userVerified, 'false');\r\n sessionStorage.setItem(hasUploaded, data?.HasUploaded.toLowerCase() ?? 'false');\r\n }\r\n\r\n if (isAuthProtectedRouteReferrer) {\r\n sessionStorage.removeItem(authProtectedRoute);\r\n }\r\n\r\n if (data?.ForceRedirectUrl) { // Backend said we should go somewhere\r\n window.location.href = data.ForceRedirectUrl;\r\n return;\r\n }\r\n if (data?.ForceTermsRedirectUrl) { // backend auto logged us out.\r\n props.history.push(routes.terms.url);\r\n showLastLoginEvent();\r\n } else {\r\n const loginSuccessUrl = getParam('loginSuccessUrl');\r\n const returnUrl = getParam('returnUrl');\r\n\r\n if (loginSuccessUrl) { // loginSuccessUrl is defined by DS and used along with login prompts.\r\n window.location.href = loginSuccessUrl;\r\n } else if (isAuthProtectedRouteReferrer && returnUrl) { // returnUrl is a sitecore default param when unauthorized sites has been browsed.\r\n window.location.href = returnUrl;\r\n } else if (document.body.dataset.reloadonlogin?.toLowerCase() === 'true') {\r\n if (window.location.hash.substring(1) === registerRoutes.postLogin.url) {\r\n window.location.href = window.location.pathname + window.location.search;\r\n } else {\r\n window.location.reload();\r\n }\r\n } else {\r\n // // Hide overlay\r\n props.history.push('');\r\n showLastLoginEvent();\r\n }\r\n }\r\n};\r\n\r\nexport const alreadyLoggedIn = (props) => {\r\n // User already logged in, lets close login box - lets close down react and cleanup query params.\r\n props.history.push('');\r\n window.history.replaceState( {} , '', window.location.pathname );\r\n};","import React from 'react';\r\n\r\nexport const populate = (dictionary, data, dangerously) => {\r\n let populated = dictionary;\r\n if (data) {\r\n data.forEach((entry) => {\r\n if (dictionary && dictionary.includes(entry.key)) {\r\n populated = populated.replace(new RegExp('{' + entry.key + '}', 'gi'), entry.value);\r\n }\r\n });\r\n }\r\n const html = {\r\n __html: populated\r\n };\r\n\r\n return dangerously ? : populated;\r\n};\r\n\r\nexport const replaceWithComponent = (text, components) => {\r\n if (!text) return null;\r\n \r\n const variable = '[a-z]+';\r\n const needle = new RegExp(`{${variable}}[a-z .]+{/${variable}}`, 'gi');\r\n const matches = text.match(needle);\r\n const parts = text.split(needle);\r\n\r\n const innerText = matches.map((match) => {\r\n return match\r\n .replace(new RegExp(`{${variable}}`, 'gi'), '')\r\n .replace(new RegExp(`{/${variable}}`, 'gi'), '');\r\n });\r\n\r\n const jsxStr = [];\r\n\r\n parts.forEach((part, index) => {\r\n jsxStr.push(part);\r\n\r\n if (innerText[index] && components[index]?.hasOwnProperty('component')) {\r\n const reactElem = React.cloneElement(\r\n components[index].component,\r\n { key: index },\r\n innerText[index]\r\n );\r\n jsxStr.push(reactElem);\r\n }\r\n });\r\n\r\n return jsxStr;\r\n};\r\n\r\nexport default populate;\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport { useForm } from 'react-hook-form';\r\nimport ApiRequest, { unwrapErrorStatusText } from 'foundation/apiRequest/apiRequest';\r\nimport { TooManyAttemptsError, UserLocked, ErrorCategory, SecureLoginNeededError } from 'app/registerFlow/constants';\r\nimport routes from 'app/registerFlow/routes';\r\nimport { checkUserVerification, alreadyLoggedIn, replaceWithComponent } from 'app/registerFlow/Helpers';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { onError } from 'foundation/tracking/tracking';\r\nimport {\r\n\tHeading, Paragraph, PhrasePrimary, PhraseSecondary, Icon, Link, Label, PhraseValidation\r\n} from 'atoms';\r\nimport { Button, BackBtn } from 'molecules';\r\nimport { getCurrentUser, showFlowAfterLogin } from 'app/shared/store/slices/currentUserSlice';\r\nimport { getParam } from 'foundation/url';\r\nimport Cookies from 'js-cookie';\r\n\r\nconst Login = (props) => {\r\n const dispatch = useDispatch();\r\n\tconst context = useContext(Dictionary);\r\n\tconst dictionary = context?.loginusernamepwd;\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n const currentUser = useSelector(state => state.currentUser);\r\n\tconst {\r\n\t\tregister, handleSubmit, errors, clearErrors, setError\r\n\t} = useForm();\r\n\r\n useEffect(() => {\r\n if (currentUser?.currentUser?.isAuthenticated) {\r\n alreadyLoggedIn(props);\r\n }\r\n }, []);\r\n\r\n\tconst onSubmit = (data) => {\r\n\t\tsetIsLoading(true);\r\n\t\tconst credentials = {\r\n\t\t\tusername: data.username,\r\n\t\t\tpassword: data.password\r\n\t\t};\r\n\r\n\t\tApiRequest(`${process.env.API_URL}/tivolicasino/membership/loginusername`, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\tdata: credentials,\r\n\t\t}).then((response) => {\r\n\t\t\t\twindow?.TC?.gaEvent('success', 'login', 'login_med_brugernavn');\r\n dispatch(getCurrentUser()).then((userResponse) => {\r\n const headerClasses = document.getElementsByClassName('h-header');\r\n if (headerClasses && headerClasses[0].classList.contains('not-logged-in')) {\r\n headerClasses[0].classList.remove('not-logged-in');\r\n headerClasses[0].classList.add('is-logged-in');\r\n let parsedDate = Date.parse(userResponse?.payload.currentUser?.loginTimeStamp);\r\n let startTime = new Date(parsedDate);\r\n Cookies.set('realityCheckStartTime', startTime);\r\n }\r\n\r\n checkUserVerification(response, props);\r\n\r\n if(currentUser?.showDeposit) {\r\n dispatch(showFlowAfterLogin({showDeposit: false}));\r\n props.history.push(routes.deposit.url)\r\n }\r\n else if(currentUser?.showWithdraw) {\r\n dispatch(showFlowAfterLogin({showWithdraw: false}));\r\n props.history.push(routes.withdraw.url)\r\n }\r\n\r\n });\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconst { statusText, status } = unwrapErrorStatusText(error);\r\n\r\n\t\t\t\t// OBS: This is removed to get correct behavior - TIV-4, TIV-297\r\n\t\t\t\t// if (statusText === InternalLoginError) {\r\n\t\t\t\t// \tprops.history.push(routes.loginFail.url);\r\n\t\t\t\t// \treturn;\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tif (statusText === SecureLoginNeededError) {\r\n\t\t\t\t\twindow?.TC?.gaEvent('endpointError', ErrorCategory, `endpoint_loginusername_failed_with_${statusText}`);\r\n\t\t\t\t\tprops.history.push(routes.firstTimeSecureLogin.url);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (statusText === TooManyAttemptsError || status === 500) {\r\n\t\t\t\t\twindow?.TC?.gaEvent('endpointError', ErrorCategory, `endpoint_loginusername_failed_with_${statusText}`);\r\n\t\t\t\t\tprops.history.push(routes.loginError.url);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n if (statusText === UserLocked) {\r\n window?.TC?.gaEvent('endpointError', ErrorCategory, `endpoint_loginusername_failed_with_${statusText}`);\r\n props.history.push(routes.loginExcluded.url);\r\n return;\r\n }\r\n\t\t\t\tconst err = context?.ErrorMessages[statusText];\r\n\t\t\t\tsetError('username', {\r\n\t\t\t\t\ttype: 'somsome',\r\n\t\t\t\t\tmessage: err\r\n\t\t\t\t});\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\tconst backClick = () => {\r\n\t\tprops.history.goBack();\r\n\t};\r\n\r\n const handleClick = () => {\r\n props.history.push(routes.signup.url);\r\n };\r\n\r\n const handleForgotPasswordClick = () => {\r\n props.history.push(routes.forgotPassword.url);\r\n };\r\n\r\n const handleMitIdClick = () => {\r\n const errorReturnUrl = `${window.location.href.split('#')[0]}#${routes.personalNumberConfirm.url}`;\r\n const loginSuccessParam = getParam('loginSuccessUrl');\r\n let loginSuccessUrl = window.location.href.split('#')[0];\r\n if (loginSuccessParam) {\r\n loginSuccessUrl = loginSuccessParam;\r\n }\r\n\r\n window.location.href = `/api/tivolicasino/membership/mitid/loginidentity?loginSuccessUrl=${encodeURIComponent(loginSuccessUrl)}&errorReturnUrl=${encodeURIComponent(errorReturnUrl)}`;\r\n };\r\n\r\n\tconst loginLinks = replaceWithComponent(dictionary?.GuidanceDictionary['forms.guidanceMessages.Components.mitidlogin.passwordpagelinks'], [\r\n { key: 'mitidLink', component: }\r\n\t]);\r\n\r\n if(currentUser?.currentUser?.isAuthenticated) {\r\n return <>;\r\n }\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t{dictionary?.Title}\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{dictionary?.ManchetText}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n {errors.username && {errors.username?.message}}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t clearErrors('Password')}\r\n\t\t\t\t\t\t\t\tname=\"password\"\r\n\t\t\t\t\t\t\t\ttitle=\"Adgangskode\"\r\n\t\t\t\t\t\t\t\terrors={errors.Password}\r\n\t\t\t\t\t\t\t\ttype=\"password\" />\r\n\t\t\t\t\t\t\t{errors.password && {errors.password?.message}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{dictionary?.GuidanceDictionary['forms.guidanceMessages.Labels.forgotPassword']}\r\n\t\t\t\t\t\t\t\r\n {context?.forgottenpassword?.Title || \"Glemt adgangskode\"}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{loginLinks}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{dictionary?.HelpText}\r\n\t\t\t\t\t{dictionary?.HelpTextLinkText}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nLogin.propTypes = {\r\n\thistory: PropTypes.shape({\r\n\t\tpush: PropTypes.func.isRequired,\r\n\t\tgoBack: PropTypes.func\r\n\t}),\r\n location: PropTypes.shape({\r\n pathname: PropTypes.string,\r\n search: PropTypes.string,\r\n hash: PropTypes.string,\r\n }),\r\n};\r\n\r\nexport default Login;\r\n","// General\r\nexport const Ok = 'Ok';\r\nexport const InternalAuthError = 'InternalAuthError';\r\nexport const InternalError = 'InternalError';\r\nexport const InternalLoginError = 'InternalLoginError';\r\n\r\n// Email verification\r\nexport const EmailInvalid = 'EmailInvalid';\r\nexport const InputInvalid = 'InputInvalid';\r\n\r\n// Reset password\r\nexport const Passwordregex = 'Passwordregex';\r\nexport const Resettokenmissing = 'Resettokenmissing';\r\n\r\n// Verify CPR\r\nexport const CprNumberInvalid = 'CprNumberInvalid';\r\nexport const TooYoung = 'TooYoung';\r\n\r\n// Documentation\r\nexport const SendDocumentationIsRequired = 'SendDocumentationIsRequired';\r\nexport const NoFilesFound = 'NoFilesFound';\r\n\r\n// User\r\nexport const WrongUserPassword = 'WrongUserPassword';\r\nexport const NemIdSignatureIsNullOrEmpty = 'NemIdSignatureIsNullOrEmpty';\r\nexport const TooManyAttemptsError = 'TooManyAttemptsError';\r\nexport const UserLocked = 'UserLocked';\r\n\r\nexport const SecureLoginNeededError = 'SecureLoginNeededError';","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n\tHeading, Paragraph, PhrasePrimary, Icon, Link\r\n} from 'atoms';\r\nimport { Button } from 'molecules';\r\n\r\nconst ErrorMessage = ({\r\n\tdictionary, clickHandle, ButtonText, linkTarget\r\n}) => (\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{dictionary && {dictionary.Title}}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{dictionary?.ManchetText}\r\n\t\t
\r\n {\r\n ButtonText &&
\r\n \r\n
\r\n }\r\n\t\t
\r\n\t\t\t{dictionary?.HelpText}\r\n\t\t\t\t{dictionary?.HelpTextLinkText}\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n);\r\n\r\nErrorMessage.propTypes = {\r\n\tdictionary: PropTypes.shape({\r\n\t\tTitle: PropTypes.string.isRequired,\r\n\t\tManchetText: PropTypes.string.isRequired,\r\n\t\tHelpText: PropTypes.string,\r\n\t\tHelpTextLink: PropTypes.string,\r\n\t\tHelpTextLinkText: PropTypes.string,\r\n\t\tlinkTarget: PropTypes.string\r\n\t}),\r\n\tButtonText: PropTypes.string,\r\n\tclickHandle: PropTypes.func,\r\n\tlinkTarget: PropTypes.string\r\n};\r\n\r\nexport default ErrorMessage;\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport routes from 'app/registerFlow/routes';\r\nimport { ErrorMessage } from 'app/registerFlow/containers';\r\n\r\nconst LoginFail = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.noaccountalert;\r\n\r\n const clickHandle = () => {\r\n props.history.push(routes.personalNumber.url);\r\n };\r\n\r\n return (\r\n );\r\n};\r\n\r\nLoginFail.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n })\r\n};\r\n\r\n\r\nexport default LoginFail;\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/registerFlow/containers';\r\n\r\nconst LoginError = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.loginusernamepwdfailed;\r\n\r\n const clickHandle = (link) => {\r\n window.location.href = link;\r\n };\r\n\r\n return (\r\n clickHandle(dictionary?.AlternativeTextLink)}\r\n ButtonText={dictionary?.CtaText}\r\n />);\r\n};\r\n\r\nLoginError.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n })\r\n};\r\n\r\n\r\nexport default LoginError;\r\n","import React, { useContext, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/registerFlow/routes';\r\nimport { checkUserVerification, alreadyLoggedIn } from 'app/registerFlow/Helpers';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { InternalLoginError, UserLocked, ErrorCategory } from 'app/registerFlow/constants';\r\nimport ApiRequest, { unwrapErrorStatusText } from 'foundation/apiRequest/apiRequest';\r\nimport {\r\n Heading, Paragraph, PhrasePrimary, PhraseSecondary, Icon, Link\r\n} from 'atoms';\r\nimport { Button } from 'molecules';\r\nimport { getCurrentUser, showFlowAfterLogin } from 'app/shared/store/slices/currentUserSlice';\r\nimport { getParam, addParam } from 'foundation/url';\r\nimport Cookies from 'js-cookie';\r\n\r\nconst NemID = (props) => {\r\n const dispatch = useDispatch();\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.firsttimesecurelogin;\r\n const isMitIDEnabled = context?.config.isMitIDEnabled;\r\n const isNemIDEnabled = context?.config.isNemIDEnabled;\r\n const currentUser = useSelector(state => state.currentUser);\r\n\r\n useEffect(() => {\r\n if (currentUser?.currentUser?.isAuthenticated) {\r\n alreadyLoggedIn(props);\r\n }\r\n }, []);\r\n\r\n\tconst callback = (signature) => {\r\n\t\tif (!signature) return;\r\n\r\n\t\tApiRequest(`${process.env.API_URL}/tivolicasino/membership/loginnemid`, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\tdata: {\r\n\t\t\t\tNemIdSignature: signature,\r\n\t\t\t}\r\n\t\t}).then((response) => {\r\n\t\t\twindow?.TC?.gaEvent('success', 'login', 'login_med_nem_id');\r\n dispatch(getCurrentUser()).then((userResponse) => {\r\n const headerClasses = document.getElementsByClassName('h-header');\r\n if (headerClasses && headerClasses[0].classList.contains('not-logged-in')) {\r\n headerClasses[0].classList.remove('not-logged-in');\r\n headerClasses[0].classList.add('is-logged-in');\r\n let parsedDate = Date.parse(userResponse?.payload.currentUser?.loginTimeStamp);\r\n let startTime = new Date(parsedDate);\r\n Cookies.set('realityCheckStartTime', startTime);\r\n }\r\n\r\n checkUserVerification(response, props);\r\n if (currentUser?.showDeposit) {\r\n dispatch(showFlowAfterLogin({ showDeposit: false }));\r\n props.history.push(routes.deposit.url);\r\n }\r\n else if (currentUser?.showWithdraw) {\r\n dispatch(showFlowAfterLogin({ showWithdraw: false }));\r\n props.history.push(routes.withdraw.url);\r\n }\r\n });\r\n }).catch((error) => {\r\n const { statusText } = unwrapErrorStatusText(error);\r\n\r\n\t\t\twindow?.TC?.gaEvent('endpointError', ErrorCategory, `endpoint_loginnemid_failed_with_${statusText}`);\r\n\t\t\t// InternalLoginError --> pre-site for signup redirect\r\n\t\t\tif (statusText === InternalLoginError) {\r\n\t\t\t\tprops.history.push(routes.loginFail.url);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n if (statusText === UserLocked) {\r\n props.history.push(routes.loginExcluded.url);\r\n return;\r\n }\r\n\r\n // TooManyAttemptsError --> general Error\r\n\t\t\t// InternalAuthError --> general error\r\n\t\t\tprops.history.push(routes.nemidFail.url);\r\n });\r\n };\r\n\r\n const handleMitIdClick = () => {\r\n const errorReturnUrl = `${window.location.href.split('#')[0]}#${routes.nemidFail.url}`;\r\n const loginSuccessParam = getParam('loginSuccessUrl');\r\n let loginSuccessUrl = window.location.href.split('#')[0];\r\n if (loginSuccessParam) {\r\n loginSuccessUrl = loginSuccessUrl + addParam('loginSuccessUrl', encodeURIComponent(loginSuccessParam));\r\n }\r\n window.location.href = `/api/tivolicasino/membership/mitid/loginidentity?loginSuccessUrl=${encodeURIComponent(loginSuccessUrl)}&errorReturnUrl=${encodeURIComponent(errorReturnUrl)}`;\r\n };\r\n\r\n const callbackFail = () => {\r\n props.history.push(routes.nemidFail.url);\r\n };\r\n\r\n if (currentUser?.currentUser?.isAuthenticated) {\r\n return <>;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {dictionary?.Title}\r\n \r\n \r\n \r\n {dictionary?.ManchetText}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {dictionary?.HelpText}\r\n {dictionary?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nNemID.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n goBack: PropTypes.func\r\n }),\r\n goBack: PropTypes.func\r\n};\r\n\r\nexport default NemID;\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/registerFlow/containers';\r\n\r\nconst NemIdFail = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.loginnemidfailed;\r\n\r\n const clickHandle = () => {\r\n window.location.href = window.location.pathname;\r\n };\r\n\r\n return (\r\n );\r\n};\r\n\r\nNemIdFail.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n })\r\n};\r\n\r\n\r\nexport default NemIdFail;\r\n","import React, { useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/registerFlow/containers';\r\n\r\nconst RegisterAlertDocumentaionNeeded = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.accountcreatedalert;\r\n\r\n const clickHandle = () => {\r\n props.history.push(routes.documentation.url);\r\n };\r\n\r\n return (\r\n );\r\n};\r\n\r\nRegisterAlertDocumentaionNeeded.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n }),\r\n};\r\n\r\nexport default withRouter(RegisterAlertDocumentaionNeeded);\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport {\r\n Heading, Paragraph, PhrasePrimary, Icon, Link\r\n} from 'atoms';\r\nimport { Button } from 'molecules';\r\n\r\nconst RegisterSuccess = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.accountconfirmed;\r\n const clickHandle = () => {\r\n window.location.href = dictionary?.CtaLink || '/';\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n {dictionary?.Title}\r\n \r\n \r\n \r\n {dictionary?.ManchetText}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {dictionary?.HelpText}\r\n {dictionary?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nRegisterSuccess.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n }),\r\n};\r\n\r\nexport default withRouter(RegisterSuccess);\r\n","import React, { useContext, useEffect } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\n// import { checkUserVerification } from 'app/registerFlow/Helpers';\r\nimport {\r\n\tParagraph, Heading, PhrasePrimary, PhraseSecondary, Icon, Link\r\n} from 'atoms';\r\nimport { Button } from 'molecules';\r\nconst Signup = (props) => {\r\n\tconst context = useContext(Dictionary);\r\n\tconst dictionary = context?.loginnemidcreateaccount;\r\n\r\n\tconst handleMitIdClick = () => {\r\n \tconst errorReturnUrl = `${window.location.href.split('#')[0]}#${routes.generalError.url}`;\r\n \tconst loginSuccessUrl = window.location.href.split('#')[0];\r\n\t\twindow.location.href = `/api/tivolicasino/membership/mitid/loginidentity?isNewUser=true&loginSuccessUrl=${encodeURIComponent(loginSuccessUrl)}&errorReturnUrl=${encodeURIComponent(errorReturnUrl)}`;\r\n\t};\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n if (isMounted) {\r\n if (typeof window.TC?.gaEvent === 'function') {\r\n window?.TC?.gaEvent('signup_step1_opret_konto', 'signup', 'dli_tiv');\r\n }\r\n }\r\n return () => { isMounted = false; };\r\n }, []);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{dictionary?.Title}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{dictionary?.ManchetText}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{dictionary?.AlternativeText}\r\n\t\t\t\t\t { window?.TC?.gaEvent('klik_paa_login', 'signup', 'dli_tiv'); } } to={routes.login.url}>{dictionary?.AlternativeTextLinkText}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{dictionary?.HelpText}\r\n\t\t\t\t\t{dictionary?.HelpTextLinkText}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nSignup.propTypes = {\r\n\thistory: PropTypes.shape({\r\n\t\tpush: PropTypes.func.isRequired,\r\n\t\tgoBack: PropTypes.func\r\n\t}),\r\n};\r\n\r\nexport default withRouter(Signup);\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { postGlobalLimits } from 'app/shared/store/api/user';\r\nimport { populate, formatCurrency } from 'foundation/Helpers';\r\nimport { onError } from 'foundation/tracking/tracking';\r\nimport { BackBtn, Button } from 'molecules';\r\nimport {\r\n Heading,\r\n Paragraph,\r\n Label,\r\n PhrasePrimary,\r\n PhraseSecondary,\r\n Icon,\r\n Link,\r\n Loader,\r\n PhraseValidation,\r\n Input\r\n} from 'atoms';\r\nimport { update } from 'app/shared/store/slices/depositLimitSlice';\r\nimport {unwrapResult} from '@reduxjs/toolkit';\r\n\r\nconst DepositLimit = (props) => {\r\n const context = useContext(Dictionary);\r\n const data = useSelector(state => state);\r\n const depositlimit = context?.depositlimit;\r\n const errorMessages = context.ErrorMessages;\r\n const requiredValidation = depositlimit?.ValidationDictionary['forms.validationMessages.requiredField'];\r\n const dispatch = useDispatch();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [creationError, setCreationError] = useState(null);\r\n const [globalLimits, setGlobalLimits] = useState(null);\r\n const {\r\n register, handleSubmit, errors, clearErrors\r\n } = useForm({\r\n mode: 'onBlur',\r\n reValidateMode: 'onBlur',\r\n defaultValues: data.DepositLimit\r\n });\r\n\r\n const onSubmit = (formData) => {\r\n dispatch(update(formData));\r\n setIsLoading(true);\r\n\r\n props.history.push(routes.marketing.url);\r\n };\r\n\r\n const preventCharacters = () => {\r\n const depositInput = document.querySelector('.o-register-flow__input--deposit-input');\r\n if (depositInput) {\r\n depositInput.addEventListener('keydown', (evt) => {\r\n if (evt.keyCode === 188\r\n\t\t\t\t\t|| evt.keyCode === 190\r\n\t\t\t\t\t|| evt.keyCode === 107\r\n\t\t\t\t\t|| evt.keyCode === 69\r\n\t\t\t\t\t|| evt.keyCode === 110\r\n\t\t\t\t\t|| evt.keyCode === 187\r\n\t\t\t\t\t|| evt.keyCode === 109\r\n\t\t\t\t\t|| evt.keyCode === 189\r\n ) {\r\n evt.preventDefault();\r\n }\r\n });\r\n }\r\n };\r\n\r\n const validateGlobalLimit = (amount) => {\r\n let period;\r\n const selectedLimit = document.querySelector('input[name=\"SelectedLimit\"]:checked')?.value;\r\n\r\n if (selectedLimit === '1') period = 'Daily';\r\n if (selectedLimit === '2') period = 'Weekly';\r\n if (selectedLimit === '3') period = 'Monthly';\r\n\r\n if (period) {\r\n const maxGlobalLimitForPeriod = globalLimits[period]\r\n if (Number.parseFloat(amount) > Number.parseFloat(maxGlobalLimitForPeriod)) {\r\n const periodDictionary = depositlimit?.ValidationDictionary['forms.validationMessages.depositLimit' + period];\r\n return populate(depositlimit?.ValidationDictionary['forms.validationMessages.depositLimitGlobalError'],\r\n [\r\n { key: 'PERIOD', value: periodDictionary },\r\n { key: 'AMOUNT', value: formatCurrency(Number.parseFloat(maxGlobalLimitForPeriod))}\r\n ],\r\n true\r\n );\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n useEffect(() => {\r\n preventCharacters();\r\n\r\n dispatch(postGlobalLimits(data.personalNumber.PersonalNumber))\r\n .then(unwrapResult)\r\n .then((response) => {\r\n if (response && response?.data?.globalLimits) {\r\n const limitsMapped = {\r\n Daily: response.data.globalLimits?.day ?? '',\r\n Weekly: response.data.globalLimits?.week ?? '',\r\n Monthly : response.data.globalLimits?.month ?? ''\r\n }\r\n // Delay response enough to show spinner, otherwise UI looks broken.\r\n setTimeout(() => {\r\n setGlobalLimits(limitsMapped)\r\n }, 1000);\r\n }\r\n })\r\n .catch((error) => {\r\n const { statusText } = unwrapErrorStatusText(error);\r\n window?.TC?.gaEvent('endpointError', ErrorCategory, `endpoint_globallimits_failed_with_${statusText}`);\r\n });\r\n\r\n }, []);\r\n\r\n const backClick = () => {\r\n props.history.goBack();\r\n };\r\n\r\n const deposits = depositlimit ? Object.keys(depositlimit.ListInputDictionary) : [];\r\n const depositlimits = deposits.map((key, index) => (\r\n \r\n ));\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n {depositlimit && {depositlimit?.Title}}\r\n
\r\n \r\n \r\n \r\n {depositlimit?.ManchetText}\r\n {depositlimit && \r\n \r\n {context.depositlimit.AlternativeTextLinkText}}\r\n
\r\n
\r\n {globalLimits ?
\r\n
\r\n \r\n
\r\n {depositlimits}\r\n
\r\n {errors.SelectedLimit && errors.SelectedLimit.type === 'required' && \r\n {depositlimit?.ValidationDictionary['forms.validationMessages.depositLimitSelectPeriod']}}\r\n
\r\n
\r\n \r\n validateGlobalLimit(amount)\r\n }\r\n })}\r\n onChange={() => clearErrors('Limit')}\r\n name=\"Limit\"\r\n title=\"Limit\"\r\n type=\"number\"\r\n customAttributes={{\r\n inputMode: 'numeric'\r\n }}\r\n placeholder={depositlimit?.ValidationDictionary['forms.validationMessages.depositLimitMinAmount']}\r\n className=\"o-register-flow__input--deposit-input\"\r\n errors={errors.Limit}/>\r\n \r\n {depositlimit?.GuidanceDictionary['forms.guidanceMessages.currencydk']}\r\n
\r\n {creationError && {creationError}}\r\n \r\n
: }\r\n
\r\n
\r\n {depositlimit?.HelpText}\r\n {depositlimit?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nDepositLimit.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n goBack: PropTypes.func,\r\n go: PropTypes.func\r\n }),\r\n goBack: PropTypes.func\r\n};\r\n\r\nexport default withRouter(DepositLimit);\r\n","import React from 'react';\r\n\r\nexport default React.createContext({});\r\n","import React, { useState, useContext, useEffect } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { useForm } from 'react-hook-form';\r\nimport { onError } from 'foundation/tracking/tracking';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { populate } from 'app/registerFlow/Helpers';\r\nimport ExtraInputs from 'app/registerFlow/context/ExtraInputs';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\nimport {\r\n\tSendDocumentationIsRequired,\r\n\trandomUsername,\r\n\tloggedIn,\r\n\tfirstLoginAttempt,\r\n\tsecondLoginAttempt\r\n} from 'app/registerFlow/constants';\r\nimport routes from 'app/registerFlow/routes';\r\nimport { unwrapErrorStatusText } from 'foundation/apiRequest/apiRequest';\r\nimport { useDispatch } from 'react-redux';\r\nimport { ErrorCategory, userVerified } from 'app/registerFlow/constants';\r\nimport { createUser } from 'app/shared/store/api/user';\r\nimport { BackBtn, Button } from 'molecules';\r\nimport {\r\n\tHeading, Icon, Label, Paragraph, PhrasePrimary, Link\r\n} from 'atoms';\r\nimport { update } from 'app/shared/store/slices/marketingSlice';\r\nimport { getCurrentUser, empty } from 'app/shared/store/slices/currentUserSlice';\r\n\r\nconst Marketing = (props) => {\r\n\tconst context = useContext(Dictionary);\r\n\tconst extraInputContext = useContext(ExtraInputs);\r\n\tconst dispatch = useDispatch();\r\n\tconst [isPostBack, setIsPostBack] = useState(false);\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\tconst dictionary = context?.marketing;\r\n\tlet marketingTexts = 'dictionary::Membership.Registration.MarketingTerms Missing';\r\n\tif (extraInputContext?.MarketingTexts?.length && extraInputContext?.MarketingTexts[0].Text) {\r\n\t\tmarketingTexts = extraInputContext?.MarketingTexts[0].Text\r\n\t}\r\n\r\n\tconst {\r\n\t\tregister, handleSubmit, errors\r\n\t} = useForm({\r\n\t\tmode: 'onSubmit',\r\n\t\treValidateMode: 'onSubmit'\r\n\t});\r\n\r\n\tconst clearStorage = () => {\r\n\t\t// Remove all cpr-related sessionStorage-item when reaching this site\r\n\t\tsessionStorage.removeItem(loggedIn);\r\n\t\tsessionStorage.removeItem(firstLoginAttempt);\r\n\t\tsessionStorage.removeItem(secondLoginAttempt);\r\n\t\tsessionStorage.removeItem(randomUsername);\r\n\t};\r\n\r\n\tconst onSubmit = (formData) => {\r\n\t\tdispatch(update(formData));\r\n\t\tsetIsLoading(true);\r\n\t\tsetIsPostBack(true);\r\n\t\tlet registrationState = ''\r\n\r\n\t\tdispatch(createUser())\r\n\t\t\t.then(unwrapResult)\r\n\t\t\t.then((res) => {\r\n\t\t\t\t// Any error code 4xx and 5xx\r\n\t\t\t\tif (res.status >= 400 || res.status === undefined) {\r\n\t\t\t\t\tthrow res;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdispatch(empty());\r\n\t\t\t\tclearStorage();\r\n\r\n dispatch(getCurrentUser()).then(() => {\r\n props.history.push(routes.registerSuccess.url);\r\n }).catch((err) => {\r\n clearStorageAndSendToGeneralErrorPage();\r\n });\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tconst { statusText } = unwrapErrorStatusText(error);\r\n\r\n window?.TC?.gaEvent('signup_step8_fejl', ErrorCategory, `${statusText}`);\r\n\r\n\t\t\t\tif (statusText === SendDocumentationIsRequired) {\r\n sessionStorage.setItem(userVerified, 'false');\r\n dispatch(getCurrentUser()).then(() => {\r\n props.history.push(routes.registerAlertDocumentaionNeeded.url);\r\n });\r\n\t\t\t\t} else {\r\n clearStorageAndSendToGeneralErrorPage();\r\n\t\t\t\t}\r\n\t\t\t}).finally(() => {\r\n if (formData.AcceptMarketing) {\r\n window?.TC?.gaEvent('checkBoxActivated', 'permission', 'marketing_permission');\r\n } else {\r\n window?.TC?.gaEvent('checkBoxDeactivated', 'permission', 'marketing_permission');\r\n }\r\n dispatch({type: \"CLEAR\"}) // Clear all content of REDUX.\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst clearStorageAndSendToGeneralErrorPage = () => {\r\n clearStorage();\r\n sessionStorage.setItem(userVerified, 'false'); // We know user failed, lets make sure they cant use deposit/withdraw right away.\r\n props.history.push(routes.generalError.url);\r\n }\r\n\r\n\tconst backClick = () => {\r\n\t\tprops.history.goBack();\r\n\t};\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t{ isPostBack ?
Vent venligst
\r\n\t\t\t\t:
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{dictionary && \r\n\t\t\t\t\t\t\t\t{dictionary?.Title}}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{ populate(dictionary?.ManchetText, null, true)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{dictionary?.HelpText}\r\n\t\t\t\t\t\t\t{dictionary?.HelpTextLinkText}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t}\r\n\t\t
\r\n\t);\r\n};\r\n\r\nMarketing.propTypes = {\r\n\tsetView: PropTypes.func,\r\n\thistory: PropTypes.shape({\r\n\t\tpush: PropTypes.func.isRequired,\r\n\t\tgoBack: PropTypes.func\r\n\t})\r\n};\r\n\r\nexport default withRouter(Marketing);\r\n","import React, { useEffect, useContext, useState } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { useForm } from 'react-hook-form';\r\nimport ApiRequest from 'foundation/apiRequest/apiRequest';\r\nimport { validateEmail } from 'app/shared/store/api/user';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { onError } from 'foundation/tracking/tracking';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport intlTelInput from 'intl-tel-input';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\nimport { update } from 'app/shared/store/slices/personalInformationSlice';\r\nimport {\r\n Input, Heading, Paragraph, PhrasePrimary, Icon, Link, Label\r\n} from 'atoms';\r\nimport { BackBtn, Button } from 'molecules';\r\n\r\nconst PersonalInformation = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.personalinfo;\r\n const dispatch = useDispatch();\r\n const personalInformation = useSelector(state => state.personalInformation);\r\n const {\r\n register, handleSubmit, errors, clearErrors, setValue, setError\r\n } = useForm({\r\n mode: 'onBlur',\r\n reValidateMode: 'onBlur',\r\n defaultValues: personalInformation\r\n });\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [validZip, setValidZip] = useState(null);\r\n const [emailValid, setEmailValid] = useState(null);\r\n\r\n const onSubmit = async (formData) => {\r\n setIsLoading(true);\r\n dispatch(update(formData));\r\n props.history.push(routes.profile.url);\r\n if (document.querySelector('#FirstName')) {\r\n sessionStorage.setItem('firstName', document.querySelector('#FirstName').value);\r\n }\r\n };\r\n\r\n const backClick = () => {\r\n props.history.goBack();\r\n };\r\n\r\n const lookupZip = (zip) => {\r\n ApiRequest(`https://dawa.aws.dk/postnumre/${zip}`)\r\n .then((response) => {\r\n if (response.data.navn) {\r\n setValue('City', response.data.navn, {\r\n shouldValidate: true,\r\n shouldDirty: true\r\n });\r\n setValidZip(response.data.navn);\r\n }\r\n }).catch(() => {\r\n setError('Zipcode', {\r\n type: 'invalidZip',\r\n message: 'Ugyldigt postnummer'\r\n });\r\n // Invalid zip\r\n setValidZip(null);\r\n setValue('City', '');\r\n });\r\n };\r\n\r\n const countryCode = () => {\r\n const input = document.querySelector('#phone');\r\n intlTelInput(input, {\r\n initialCountry: 'dk',\r\n nationalMode: true,\r\n });\r\n input.addEventListener('keyup', () => {\r\n const countries = document.querySelector('.iti__selected-flag');\r\n const rawPhoneCode = countries.getAttribute('title');\r\n const slicedPhoneCode = rawPhoneCode.substring(rawPhoneCode.lastIndexOf('+'));\r\n const countryCodeAndPhone = slicedPhoneCode + input.value;\r\n input.setAttribute('value', countryCodeAndPhone);\r\n });\r\n };\r\n const regEx = () => {\r\n document.querySelector('.input-zipcode').setAttribute('maxLength', 4);\r\n document.querySelector('.input-zipcode').addEventListener('keydown', (evt) => {\r\n if (evt.keyCode === 188\r\n\t\t\t\t|| evt.keyCode === 190\r\n\t\t\t\t|| evt.keyCode === 107\r\n\t\t\t\t|| evt.keyCode === 69\r\n\t\t\t\t|| evt.keyCode === 110\r\n\t\t\t\t|| evt.keyCode === 187\r\n\t\t\t\t|| evt.keyCode === 109\r\n\t\t\t\t|| evt.keyCode === 189\r\n ) {\r\n evt.preventDefault();\r\n }\r\n document.querySelector('.input-zipcode').setAttribute('maxLength', 4);\r\n });\r\n document.querySelector('.o-register-flow__custom-input--phone').addEventListener('keydown', (evt) => {\r\n if (evt.keyCode === 188\r\n\t\t\t\t|| evt.keyCode === 190\r\n\t\t\t\t|| evt.keyCode === 107\r\n\t\t\t\t|| evt.keyCode === 69\r\n\t\t\t\t|| evt.keyCode === 110\r\n\t\t\t\t|| evt.keyCode === 187\r\n\t\t\t\t|| evt.keyCode === 109\r\n\t\t\t\t|| evt.keyCode === 189\r\n ) {\r\n evt.preventDefault();\r\n }\r\n document.querySelector('.input-zipcode').setAttribute('maxLength', 4);\r\n });\r\n };\r\n\r\n\r\n useEffect(() => {\r\n countryCode();\r\n regEx();\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {dictionary?.Title}\r\n
\r\n \r\n \r\n \r\n {dictionary?.ManchetText}\r\n
\r\n
\r\n
\r\n
\r\n \r\n emailValid\r\n })}\r\n onChange={() => {\r\n clearErrors('Email');\r\n setEmailValid(null);\r\n }}\r\n onBlur={(event) => {\r\n if (event.target.value.length > 0 && !emailValid) {\r\n dispatch(validateEmail(event.target.value))\r\n .then(unwrapResult)\r\n .then((res) => {\r\n if (res.data && !res.data.Avaliable) {\r\n setEmailValid(res.data.Message);\r\n setError('Email', {\r\n message: res.data.Message\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n const unknownEmailError = 'Ukendt fejl ved validering af email';\r\n setEmailValid(unknownEmailError);\r\n setError('Email', {\r\n message: unknownEmailError\r\n });\r\n });\r\n }\r\n }}\r\n name=\"Email\"\r\n title=\"Email\"\r\n errors={errors.Email}\r\n type=\"email\" />\r\n
\r\n\r\n
\r\n \r\n clearErrors('PhoneNo')}\r\n autocomplete=\"off\" data-intl-tel-input-id=\"0\" placeholder=\"\"\r\n id=\"phone\"\r\n name=\"PhoneNo\"\r\n title=\"Telefonnummer\"\r\n className=\"o-register-flow__custom-input o-register-flow__custom-input--phone\"\r\n errors={errors.PhoneNo}\r\n type=\"number\" />\r\n
\r\n
\r\n \r\n clearErrors('FirstName')}\r\n name=\"FirstName\"\r\n title=\"Fornavn\"\r\n errors={errors.FirstName} />\r\n
\r\n\r\n
\r\n \r\n clearErrors('SurName')}\r\n name=\"SurName\"\r\n title=\"Efternavn\"\r\n errors={errors.SurName} />\r\n
\r\n\r\n
\r\n \r\n clearErrors('City')}\r\n name=\"Address\"\r\n title=\"Adresse\"\r\n errors={errors.Address} />\r\n
\r\n\r\n
\r\n
\r\n \r\n clearErrors('Zipcode')}\r\n onBlur={(event) => {\r\n if (event.target.value.length >= 4)\t {\r\n // Exclude arrow keys from the event\r\n lookupZip(event.target.value);\r\n }\r\n }}\r\n name=\"Zipcode\"\r\n title=\"Postnr\"\r\n type=\"text\"\r\n customAttributes={{\r\n inputMode: 'numeric'\r\n }}\r\n errors={errors.Zipcode} />\r\n
\r\n
\r\n \r\n clearErrors('City')}\r\n onFocus={() => {\r\n if (validZip) { // If the user clears this field we lookup the zipcode again.\r\n setValue('City', validZip, {\r\n shouldDirty: true\r\n });\r\n }\r\n }}\r\n name=\"City\"\r\n title=\"By\"\r\n errors={errors.City} />\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {dictionary?.HelpText}\r\n {dictionary?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nPersonalInformation.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n goBack: PropTypes.func\r\n }),\r\n};\r\n\r\nexport default withRouter(PersonalInformation);\r\n","import React, { useEffect, useState, useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Cleave from 'cleave.js';\r\nimport { unwrapErrorStatusText } from 'foundation/apiRequest/apiRequest';\r\nimport { validatePersonalNumber } from 'app/shared/store/api/user';\r\nimport { onError } from 'foundation/tracking/tracking';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { ErrorCategory } from 'app/shared/constants';\r\nimport ExtraInputs from 'app/registerFlow/context/ExtraInputs';\r\nimport {\r\n CprNumberInvalid,\r\n loggedIn,\r\n firstLoginAttempt,\r\n secondLoginAttempt\r\n} from 'app/registerFlow/constants';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\nimport { Button } from 'molecules';\r\nimport {\r\n Heading, Paragraph, Icon, Link, PhrasePrimary, PhraseValidation, Label, Input\r\n} from 'atoms';\r\nimport { update } from 'app/shared/store/slices/personalNumberSlice';\r\n\r\nconst PersonalNumber = (props) => {\r\n const context = useContext(Dictionary);\r\n const extraInputContext = useContext(ExtraInputs);\r\n const personalNumber = useSelector(state => state.PersonalNumber);\r\n const dispatch = useDispatch();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [cprValid, setCprValid] = useState(null);\r\n\r\n const dictionary = context?.cprandconsent;\r\n const errorMessages = context?.ErrorMessages;\r\n const consents = extraInputContext?.CprAndConsentTexts;\r\n\r\n const {\r\n register, handleSubmit, errors, clearErrors, setError\r\n } = useForm({\r\n mode: 'onBlur',\r\n reValidateMode: 'onBlur',\r\n defaultValues: personalNumber\r\n });\r\n\r\n const onSubmit = async (formData) => {\r\n if (!consents) {\r\n window.location.href = window.location.pathname; // User was not able to read consents, lets try to reload page.\r\n }\r\n setIsLoading(true);\r\n dispatch(update(formData));\r\n props.history.push(routes.personalInformation.url);\r\n };\r\n\r\n\r\n // Convert to React way\r\n const personalNumberSlice = () => {\r\n // Add focus to the next field when max value has been set\r\n const primaryInput = document.querySelector('.o-register-flow__input--primary input');\r\n primaryInput.addEventListener('keyup', () => {\r\n const cleave = new Cleave(primaryInput, {\r\n numericOnly: true,\r\n delimiter: '-',\r\n blocks: [6, 4]\r\n });\r\n\r\n return cleave;\r\n });\r\n };\r\n useEffect(() => {\r\n const form = document.querySelector('.o-form');\r\n if (form) {\r\n form.reset();\r\n }\r\n dispatch(update({\r\n PersonalNumber: null,\r\n AcceptedDanskespilTerms: false,\r\n AcceptedDanskespilSpilscanner: false\r\n })); // Force reducer to clear\r\n personalNumberSlice();\r\n sessionStorage.setItem(loggedIn, true);\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n {dictionary?.Title}\r\n \r\n \r\n \r\n {dictionary?.ManchetText}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n cprValid\r\n })}\r\n onFocus={() => {\r\n clearErrors('PersonalNumber');\r\n setCprValid(null);\r\n }}\r\n onBlur={(event) => {\r\n if (event.target.value.length > 0) {\r\n dispatch(validatePersonalNumber(event.target.value))\r\n .then(unwrapResult)\r\n .then((res) => {\r\n if (res.status >= 400 || res.status === undefined) {\r\n throw res;\r\n }\r\n })\r\n .catch((error) => {\r\n window?.TC?.gaEvent('endpointError', ErrorCategory, 'endpoint_cprnumberpidvalidation_failed');\r\n\r\n setIsLoading(false);\r\n // Check for second error then redirect\r\n if (secondLoginAttempt in sessionStorage) {\r\n props.history.push(routes.personalNumberFail.url);\r\n }\r\n // Check for first error and update session\r\n if (firstLoginAttempt in sessionStorage) {\r\n sessionStorage.setItem(secondLoginAttempt, true);\r\n }\r\n const { statusText } = unwrapErrorStatusText(error);\r\n // Flag for first CprNumberInvalid error\r\n if (statusText === CprNumberInvalid) {\r\n sessionStorage.setItem(firstLoginAttempt, true);\r\n }\r\n\r\n const prettyError = errorMessages[statusText];\r\n if (prettyError) {\r\n setCprValid(prettyError);\r\n setError('PersonalNumber', {\r\n message: prettyError\r\n });\r\n } else {\r\n props.history.push(routes.generalError.url);\r\n }\r\n });\r\n }\r\n }}\r\n name=\"PersonalNumber\"\r\n title=\"PersonalNumber\"\r\n errors={errors.PersonalNumber}\r\n type=\"text\"\r\n customAttributes={{\r\n inputMode: 'numeric'\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n {consents\r\n ?
\r\n
: 'Mangler indhold'}\r\n {errors.AcceptedDanskespilTerms && errors.AcceptedDanskespilTerms.type === 'required' && \r\n {dictionary.ValidationDictionary['forms.validationMessages.requiredAcceptedDanskespilTerms']}\r\n }\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n {consents\r\n ?
: 'Mangler indhold'}\r\n {errors.AcceptedDanskespilSpilscanner && errors.AcceptedDanskespilSpilscanner.type === 'required' && \r\n {dictionary.ValidationDictionary['forms.validationMessages.requiredAcceptedDanskespilSpilscanner']}\r\n }\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n {dictionary?.HelpText}\r\n {dictionary?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nPersonalNumber.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n })\r\n};\r\n\r\nexport default withRouter(PersonalNumber);\r\n","import React, { useState, useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { onError } from 'foundation/tracking/tracking';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { Button } from 'molecules';\r\nimport {\r\n Heading, Paragraph, Icon, Link, PhrasePrimary, Label, Input\r\n} from 'atoms';\r\nimport { loginIdentityWithCpr } from 'app/shared/store/api/user';\r\nimport { update } from 'app/shared/store/slices/personalNumberSlice';\r\nimport { InternalLoginError, ErrorCategory } from 'app/registerFlow/constants';\r\nimport { unwrapErrorStatusText } from 'foundation/apiRequest/apiRequest';\r\nimport { validatePersonalNumber } from 'app/shared/store/api/user';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\nimport { getCurrentUser } from 'app/shared/store/slices/currentUserSlice';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Cookies from 'js-cookie';\r\n\r\nconst PersonalNumberConfirm = (props) => {\r\n const context = useContext(Dictionary);\r\n const dispatch = useDispatch();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [cprValid, setCprValid] = useState(true);\r\n\r\n const dictionary = context?.cprunknownuser;\r\n const errorMessages = context?.ErrorMessages;\r\n\r\n const {\r\n register, handleSubmit, errors, clearErrors, setError\r\n } = useForm({\r\n mode: 'onBlur',\r\n reValidateMode: 'onBlur'\r\n });\r\n\r\n const onSubmit = (formData) => {\r\n\t\tsetIsLoading(true);\r\n const errorReturnUrl = `${window.location.href.split('#')[0]}#${routes.loginFail.url}`;\r\n\r\n\t\tdispatch(loginIdentityWithCpr(formData.PersonalNumber, errorReturnUrl))\r\n\t\t\t.then(unwrapResult)\r\n\t\t\t.then((res) => {\r\n\t\t\t\t// Any error code 4xx and 5xx\r\n\t\t\t\tif (res.status >= 400 || res.status === undefined) {\r\n\t\t\t\t\tthrow res;\r\n\t\t\t\t}\r\n\r\n dispatch(getCurrentUser()).then((userResponse) => {\r\n const headerClasses = document.getElementsByClassName('h-header');\r\n if (headerClasses && headerClasses[0].classList.contains('not-logged-in')) {\r\n headerClasses[0].classList.remove('not-logged-in');\r\n headerClasses[0].classList.add('is-logged-in');\r\n let parsedDate = Date.parse(userResponse?.payload.currentUser?.loginTimeStamp);\r\n let startTime = new Date(parsedDate);\r\n Cookies.set('realityCheckStartTime', startTime);\r\n } \r\n \r\n if (userResponse?.payload?.currentUser) {\r\n props.history.push(routes.postLogin.url);\r\n } else {\r\n props.history.push(routes.loginFail.url);\r\n }\r\n }).catch((err) => {\r\n props.history.push(routes.generalError.url);\r\n });\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n const { statusText } = unwrapErrorStatusText(error);\r\n\r\n window?.TC?.gaEvent('endpointError', ErrorCategory, `endpoint_loginnemid_failed_with_${statusText}`);\r\n // InternalLoginError --> pre-site for signup redirect\r\n if (statusText === InternalLoginError) {\r\n props.history.push(routes.loginFail.url);\r\n return;\r\n }\r\n\r\n // TooManyAttemptsError --> general Error\r\n // InternalAuthError --> general error\r\n props.history.push(routes.loginFail.url);\r\n\t\t\t}).finally(() => {\r\n dispatch({type: \"CLEAR\"}) // Clear all content of REDUX.\r\n\t\t\t});\r\n\t};\r\n\r\n return (\r\n
\r\n
\r\n {dictionary?.Title}\r\n \r\n \r\n \r\n {dictionary?.ManchetText}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n cprValid\r\n })}\r\n onFocus={() => {\r\n clearErrors('PersonalNumber');\r\n setCprValid(null);\r\n }}\r\n onKeyUp={(event) => {\r\n var formattedCpr = event.target.value.replace(/(\\d{6})(\\d{3,4})/, '$1-$2');\r\n event.target.value = formattedCpr.substring(0, 11);\r\n }}\r\n onBlur={(event) => {\r\n if (event.target.value.length > 0) {\r\n dispatch(validatePersonalNumber(event.target.value))\r\n .then(unwrapResult)\r\n .then((res) => {\r\n if (res.status >= 400 || res.status === undefined) {\r\n throw res;\r\n }\r\n })\r\n .catch((error) => {\r\n window?.TC?.gaEvent('endpointError', ErrorCategory, 'endpoint_cprnumberpidvalidation_failed');\r\n\r\n setIsLoading(false);\r\n\r\n const { statusText } = unwrapErrorStatusText(error);\r\n const prettyError = errorMessages[statusText];\r\n if (prettyError) {\r\n setCprValid(prettyError);\r\n setError('PersonalNumber', {\r\n message: prettyError\r\n });\r\n } else {\r\n props.history.push(routes.generalError.url);\r\n }\r\n });\r\n }\r\n }}\r\n name=\"PersonalNumber\"\r\n title=\"PersonalNumber\"\r\n errors={errors.PersonalNumber}\r\n type=\"text\"\r\n customAttributes={{\r\n inputMode: 'numeric'\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n {dictionary?.HelpText}\r\n {dictionary?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nPersonalNumberConfirm.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n })\r\n};\r\n\r\nexport default withRouter(PersonalNumberConfirm);\r\n","import React, { useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/registerFlow/containers';\r\n\r\nconst PersonalNumberFail = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.cprandconsentfailed;\r\n\r\n const clickHandle = () => {\r\n props.history.push(routes.signup.url);\r\n sessionStorage.removeItem('loginError');\r\n };\r\n\r\n return (\r\n );\r\n};\r\n\r\nPersonalNumberFail.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n }),\r\n};\r\n\r\nexport default withRouter(PersonalNumberFail);\r\n","import React, {useContext, useState, useEffect} from 'react';\r\nimport {withRouter} from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport {useForm} from 'react-hook-form';\r\nimport ApiRequest from 'foundation/apiRequest/apiRequest';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {unwrapResult} from '@reduxjs/toolkit';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport {validateUsername} from 'app/shared/store/api/user';\r\nimport {onError} from 'foundation/tracking/tracking';\r\nimport {randomUsername} from 'app/registerFlow/constants';\r\nimport {update} from 'app/shared/store/slices/profileSlice';\r\nimport {BackBtn, Button} from 'molecules';\r\nimport {\r\n Heading, Paragraph, PhrasePrimary, Icon, Link, Label, Input\r\n} from 'atoms';\r\n\r\n\r\nconst Profile = (props) => {\r\n const context = useContext(Dictionary);\r\n const profile = useSelector(state => state.profile);\r\n const dispatch = useDispatch();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [usernameValid, setUsernameValid] = useState(null);\r\n const dictionary = context?.gameprofile;\r\n\r\n const {\r\n register, handleSubmit, watch, errors, clearErrors, setError\r\n } = useForm({\r\n mode: 'onBlur',\r\n reValidateMode: 'onBlur',\r\n defaultValues: profile\r\n });\r\n\r\n const onSubmit = async (formData) => {\r\n setIsLoading(true);\r\n\r\n dispatch(update(formData));\r\n props.history.push(routes.securityQuestion.url);\r\n };\r\n\r\n const makeid = (length) => {\r\n // Fetch the profile name from previous step\r\n let result = '';\r\n const characters = 'abcdefghijklmnopqrstuvwxyz0123456789';\r\n const charactersLength = characters.length;\r\n for (let i = 0; i < length; i++) {\r\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n }\r\n return result;\r\n };\r\n\r\n const usernameGnerator = () => {\r\n const randomProfileName = document.querySelector('input[name=\"Username\"]');\r\n\r\n // Overrule the name generator with typed value\r\n randomProfileName.addEventListener('keyup', () => {\r\n sessionStorage.setItem(randomUsername, randomProfileName.value);\r\n });\r\n\r\n // Fetch the generated username from sessionStorage\r\n if (randomUsername in sessionStorage) {\r\n randomProfileName.value = sessionStorage.getItem(randomUsername);\r\n } else {\r\n sessionStorage.setItem(randomUsername, makeid(7));\r\n randomProfileName.value = sessionStorage.getItem(randomUsername);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n usernameGnerator();\r\n const passwordField = document.querySelectorAll('.o-register-flow__input--password');\r\n passwordField.value = '';\r\n }, []);\r\n\r\n const backClick = () => {\r\n props.history.goBack();\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {dictionary?.Title}\r\n
\r\n \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n {dictionary?.ManchetText}\r\n
\r\n
\r\n
\r\n
\r\n \r\n usernameValid\r\n })}\r\n onChange={() => {\r\n clearErrors('Username');\r\n setUsernameValid(null);\r\n }}\r\n onBlur={(event) => {\r\n if (event.target.value.length > 0 && !usernameValid) {\r\n dispatch(validateUsername(event.target.value))\r\n .then(unwrapResult)\r\n .then((res) => {\r\n if (res.data && res.data.userExists) {\r\n const usernameTaken = dictionary?.ValidationDictionary['forms.validationMessages.usernameTaken'];\r\n setUsernameValid(usernameTaken);\r\n setError('Username', {\r\n message: usernameTaken\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n const unknownUsernameError = dictionary?.ValidationDictionary['forms.validationMessages.usernameValidationUnknownError'];\r\n setUsernameValid(unknownUsernameError);\r\n setError('Username', {\r\n message: unknownUsernameError\r\n });\r\n });\r\n }\r\n }}\r\n name=\"Username\"\r\n className=\"o-register-flow__input--profile-name\"\r\n title=\"Username\"\r\n autocomplete=\"off\"\r\n errors={errors.Username}\r\n type=\"text\"/>\r\n {!errors.Username\r\n ? \r\n\t\t\t\t\t\t\t\t{dictionary?.GuidanceDictionary['forms.guidanceDictionary.username']}\r\n\t\t\t\t\t\t\t\r\n : null}\r\n
\r\n
\r\n \r\n clearErrors('Password')}\r\n name=\"Password\"\r\n className=\"o-register-flow__input--password\"\r\n title=\"Adgangskode\"\r\n autocomplete=\"new-password\"\r\n errors={errors.Password}\r\n placeholder={dictionary?.GuidanceDictionary['forms.guidanceMessages.passwordFormat']}\r\n type=\"password\"/>\r\n
\r\n
\r\n \r\n (value !== watch('Password') ? dictionary?.ValidationDictionary['forms.validationMessages.passwordnotequal'] : null)\r\n })}\r\n onChange={() => clearErrors('PasswordRepeat')}\r\n name=\"PasswordRepeat\"\r\n className=\"o-register-flow__input--repeat-password\"\r\n autocomplete=\"new-password\"\r\n title=\"Adgangskode\"\r\n errors={errors.PasswordRepeat}\r\n type=\"password\"/>\r\n
\r\n {/*
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
*/}\r\n \r\n
\r\n
\r\n
\r\n {dictionary?.HelpText}\r\n {dictionary?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nProfile.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n goBack: PropTypes.func\r\n }),\r\n goBack: PropTypes.func\r\n};\r\n\r\nexport default withRouter(Profile);\r\n","import React, {useContext, useEffect} from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { onError } from 'foundation/tracking/tracking';\r\nimport {\r\n Paragraph, Heading, PhrasePrimary, Icon, Link, Label, Input\r\n} from 'atoms';\r\nimport { BackBtn, Button } from 'molecules';\r\nimport { update } from 'app/shared/store/slices/securityQuestionSlice';\r\n\r\nconst SecurityQuestion = (props) => {\r\n const context = useContext(Dictionary);\r\n const securityquestion = context?.securityquestion;\r\n const data = useSelector(state => state.securityQuestion);\r\n const dispatch = useDispatch();\r\n const {\r\n register, handleSubmit, errors, clearErrors\r\n } = useForm({\r\n mode: 'onBlur',\r\n reValidateMode: 'onBlur',\r\n defaultValues: data\r\n });\r\n\r\n const onSubmit = (formData) => {\r\n dispatch(update(formData));\r\n props.history.push(routes.depositLimit.url);\r\n };\r\n\r\n const backClick = () => {\r\n props.history.goBack();\r\n };\r\n\r\n const questions = securityquestion ? Object.keys(securityquestion.ListInputDictionary) : [];\r\n\r\n const securityQuestions = questions.map(key => (\r\n \r\n ));\r\n\r\n const optionSelected = () => {\r\n sessionStorage.setItem('questionAnswered', true);\r\n };\r\n const defaultSelected = () => {\r\n const defaultSelectedOption = document.querySelector('.questionDropdown option:first-child');\r\n if ('questionAnswered' in sessionStorage) {\r\n defaultSelectedOption.removeAttribute('selected');\r\n } else {\r\n defaultSelectedOption.setAttribute('selected', 'true');\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n defaultSelected();\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {securityquestion?.Title}\r\n
\r\n \r\n \r\n \r\n {securityquestion?.ManchetText}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n clearErrors('Answer')}\r\n name=\"Answer\"\r\n title=\"Answer\"\r\n errors={errors.Answer}\r\n type=\"text\" />\r\n
\r\n \r\n
\r\n
\r\n
\r\n {securityquestion?.HelpText}\r\n {securityquestion?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nSecurityQuestion.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n goBack: PropTypes.func\r\n }),\r\n goBack: PropTypes.func\r\n};\r\n\r\nexport default withRouter(SecurityQuestion);\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n\r\nconst initialState = {\r\n // eslint-disable-next-line camelcase\r\n image_uploads: null\r\n};\r\n\r\nconst documentationSlice = createSlice({\r\n name: 'documentation',\r\n initialState: initialState,\r\n reducers: {\r\n update: (state, action) => {\r\n const { payload } = action;\r\n\r\n return {\r\n ...state,\r\n ...payload\r\n };\r\n },\r\n empty: () => {\r\n return initialState;\r\n }\r\n }\r\n});\r\n\r\nconst { reducer, actions } = documentationSlice;\r\n\r\nexport const { update, empty } = actions;\r\n\r\nexport default reducer;\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport { useForm } from 'react-hook-form';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\nimport { fetchPopupActions, hasUploaded, ErrorCategory } from 'app/registerFlow/constants';\r\nimport { unwrapErrorStatusText } from 'foundation/apiRequest/apiRequest';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { sendDocumentation } from 'app/shared/store/api/user';\r\nimport { onError } from 'foundation/tracking/tracking';\r\nimport { Button } from 'molecules';\r\nimport {\r\n Heading, Paragraph, PhrasePrimary, Icon, Link, PhraseValidation,\r\n File\r\n} from 'atoms';\r\nimport { update } from 'app/shared/store/slices/documentationSlice';\r\n\r\nconst CTA_SINGLE = 'Vedhæft dokument';\r\nconst CTA_MULTIPLE = 'Vedhæft flere dokumenter';\r\n\r\nconst Documentation = (props) => {\r\n const context = useContext(Dictionary);\r\n const dispatch = useDispatch();\r\n const {\r\n handleSubmit, register, setValue, setError, clearErrors, errors\r\n } = useForm();\r\n const [fileList, setFileList] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [shake, setShake] = useState(false);\r\n const [ctaText, setCtaText] = useState(CTA_SINGLE);\r\n const allowedFormats = ['image/png', 'image/jpeg', 'image/jpg'];\r\n\r\n const validate = (files) => {\r\n files.forEach((file) => {\r\n if (!allowedFormats.includes(file.type)) { // Valid formats is .png, .jpg, .jpeg\r\n setError('image_uploads', {\r\n type: 'unsupportedFormat',\r\n message: 'Unsupported Format'\r\n });\r\n // eslint-disable-next-line no-param-reassign\r\n file.invalid = true;\r\n }\r\n if (file.size > 4000000) { // Valid file size is less than 4mb.\r\n setError('image_uploads', {\r\n type: 'fileSizeExceed',\r\n message: 'File is too large'\r\n });\r\n // eslint-disable-next-line no-param-reassign\r\n file.invalid = true;\r\n }\r\n });\r\n const invalidFiles = files.filter(file => file.invalid).length > 0;\r\n if (!invalidFiles) {\r\n clearErrors('image_uploads');\r\n }\r\n return !invalidFiles;\r\n };\r\n\r\n const onSubmit = async (formData) => {\r\n dispatch(update(formData));\r\n setIsLoading(true);\r\n const files = fileList;\r\n\r\n if (!files.length) {\r\n setError('image_uploads', {\r\n type: 'noimages',\r\n });\r\n }\r\n\r\n if (!validate(files)) { // If any of the files is invalid early return.\r\n setShake(true);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n dispatch(sendDocumentation(files))\r\n .then(unwrapResult)\r\n .then((res) => {\r\n // Any error code 4xx and 5xx\r\n if (res?.response?.data?.StatusCode >= 400) {\r\n throw res?.response?.data;\r\n }\r\n\r\n sessionStorage.setItem(fetchPopupActions, 'true');\r\n sessionStorage.setItem(hasUploaded, 'true');\r\n props.history.push(routes.documentationSuccess.url);\r\n }).catch((ignoreError) => {\r\n window?.TC?.gaEvent('endpointError', ErrorCategory, 'endpoint_document_upload_failed');\r\n setIsLoading(false);\r\n setError('image_uploads', {\r\n type: 'unsupportedFormat',\r\n message: 'Unsupported Format'\r\n });\r\n });\r\n };\r\n\r\n const checkCtaText = () => {\r\n if (fileList.length > 0) {\r\n setCtaText(CTA_MULTIPLE);\r\n } else {\r\n setCtaText(CTA_SINGLE);\r\n }\r\n };\r\n\r\n const dictionary = context?.documentation;\r\n const requiredValidation = dictionary?.ValidationDictionary['forms.validationMessages.requiredField'];\r\n const uploadDocumentGuidance = dictionary?.GuidanceDictionary['forms.guidanceDictionary.uploadDocument'];\r\n\r\n const addFiles = (event) => {\r\n const { files } = event.target;\r\n\r\n const newFiles = [];\r\n\r\n Object.keys(files).forEach((fileNum) => {\r\n newFiles.push(files[fileNum]);\r\n });\r\n const allFiles = [...fileList, ...newFiles];\r\n validate(allFiles);\r\n setFileList(allFiles);\r\n setValue('image_uploads', null);\r\n };\r\n\r\n\r\n const remove = (file) => {\r\n const currentList = [...fileList];\r\n const index = currentList.indexOf(file);\r\n currentList.splice(index, 1);\r\n validate(currentList);\r\n setFileList(currentList);\r\n };\r\n\r\n const addUploadSubmit = () => {\r\n const uploadBtn = document.querySelector('.o-register-flow__custom-upload-btn');\r\n const uploadContainer = document.querySelector('.o-register-flow__file-display');\r\n const uploadSubmit = document.querySelector('.o-register-flow__file-catcher .o-register-flow__cta');\r\n uploadSubmit.style.display = 'none';\r\n\r\n uploadBtn.addEventListener('change', () => {\r\n setTimeout(() => {\r\n if (uploadContainer.childNodes.length > 0) {\r\n uploadSubmit.style.display = 'flex';\r\n }\r\n }, 3);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n checkCtaText();\r\n // TODO: Reactify the code / Nice to have\r\n // addUploadSubmit();\r\n });\r\n\r\n return (\r\n
\r\n
\r\n {dictionary?.Title}\r\n \r\n \r\n \r\n {dictionary?.ManchetText}\r\n
\r\n
\r\n
\r\n
\r\n Vedhæft dokumenter\r\n
\r\n
    \r\n {fileList.map((file, index) => (\r\n \r\n ))}\r\n
\r\n \r\n {errors.image_uploads?.type === 'required' && {requiredValidation}}\r\n {errors.image_uploads?.type === 'noimages' && {requiredValidation}}\r\n
\r\n
\r\n \r\n {uploadDocumentGuidance}\r\n \r\n { fileList.length > 0\r\n ?\t : null }\r\n
\r\n
\r\n
\r\n {dictionary?.HelpText}\r\n {dictionary?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nDocumentation.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n goBack: PropTypes.func\r\n }),\r\n goBack: PropTypes.func\r\n};\r\n\r\nexport default withRouter(Documentation);\r\n","import React, { useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n\tHeading, Paragraph, PhrasePrimary, Icon, Link\r\n} from 'atoms';\r\nimport { Button } from 'molecules';\r\nimport Dictionary from '../../context/Dictionary';\r\n\r\nconst DocumentationSuccess = (props) => {\r\n\tconst context = useContext(Dictionary);\r\n\tconst dictionary = context?.documentationsent;\r\n\tconst clickHandle = () => {\r\n\t\twindow.location.href = dictionary?.CtaLink || window.location.pathname;\r\n\t};\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{dictionary && {dictionary.Title}}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{dictionary?.ManchetText}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{dictionary?.HelpText}\r\n\t\t\t\t\t{dictionary?.HelpTextLinkText}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nDocumentationSuccess.propTypes = {\r\n\tsetView: PropTypes.func,\r\n\thistory: PropTypes.shape({\r\n\t\tpush: PropTypes.func.isRequired,\r\n\t\tgoBack: PropTypes.func\r\n\t}),\r\n};\r\n\r\nexport default withRouter(DocumentationSuccess);\r\n","import React, { useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/registerFlow/containers';\r\n\r\nconst DocumentationPendingVerify = () => {\r\n\tconst context = useContext(Dictionary);\r\n\tconst dictionary = context?.documentationpendingverify;\r\n\r\n\tconst clickHandle = (link) => {\r\n\t\tif (link.includes('#')) {\r\n\t\t\twindow.location.hash = link;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\twindow.location = window.location.pathname;\r\n\t};\r\n\r\n\treturn (\r\n\t\t clickHandle(dictionary?.CtaLink)}\r\n\t\t\tButtonText={dictionary?.CtaText}\r\n\t\t\tlinkTarget={dictionary?.HelpTextLinkTarget}\r\n\t\t/>);\r\n};\r\n\r\n\r\nexport default withRouter(DocumentationPendingVerify);\r\n","import React, { useContext, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter } from 'react-router-dom';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/registerFlow/containers';\r\nimport routes from 'app/registerFlow/routes';\r\nimport { hasUploaded } from 'app/registerFlow/constants';\r\n\r\nconst DocumentationPending = (props) => {\r\n\tconst context = useContext(Dictionary);\r\n\tconst dictionary = context?.documentationpending;\r\n\r\n\tconst clickHandle = () => {\r\n\t\tprops.history.push(routes.documentation.url);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tlet isMounted = true;\r\n\t\tif (isMounted) {\r\n\t\t\tif (sessionStorage\r\n\t\t\t\t&& sessionStorage.getItem(hasUploaded)\r\n\t\t\t\t&& sessionStorage.getItem(hasUploaded).replace(/[^\\w!?]/g, '') === 'true') {\r\n\t\t\t\tprops.history.push(routes.documentationPendingVerify.url);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn () => { isMounted = false; };\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t clickHandle()}\r\n\t\t\tButtonText={dictionary?.CtaText}\r\n\t\t\tlinkTarget={'_self'}\r\n\t\t/>);\r\n};\r\n\r\nDocumentationPending.propTypes = {\r\n\thistory: PropTypes.shape({\r\n\t\tpush: PropTypes.func.isRequired,\r\n\t})\r\n};\r\n\r\n\r\nexport default withRouter(DocumentationPending);\r\n","import React, { useContext, useEffect } from 'react';\r\nimport { useSelector} from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/registerFlow/routes';\r\nimport { alreadyLoggedIn, replaceWithComponent } from 'app/registerFlow/Helpers';\r\nimport { Heading, Paragraph, PhrasePrimary, PhraseSecondary, Icon, Link } from 'atoms';\r\nimport { BackBtn, Button } from 'molecules';\r\nimport { getParam } from 'foundation/url';\r\nimport Dictionary from '../../context/Dictionary';\r\n\r\nconst ForgotPassword = (props) => {\r\n\tconst context = useContext(Dictionary);\r\n\tconst dictionary = context?.forgottenpassword;\r\n const currentUser = useSelector(state => state.currentUser);\r\n\r\n\tconst backClick = () => {\r\n\t\tprops.history.goBack();\r\n\t};\r\n\r\n const handleSignUpClick = () => {\r\n props.history.push(routes.signup.url);\r\n };\r\n\r\n const handleMitIdClick = () => {\r\n const errorReturnUrl = `${window.location.href.split('#')[0]}#${routes.personalNumberConfirm.url}`;\r\n const loginSuccessParam = getParam('loginSuccessUrl');\r\n let loginSuccessUrl = dictionary?.AlternativeTextLink ?? window.location.href.split('#')[0];\r\n \r\n if (loginSuccessParam) {\r\n loginSuccessUrl = loginSuccessParam;\r\n }\r\n \r\n window.location.href = `/api/tivolicasino/membership/mitid/loginidentity?loginSuccessUrl=${encodeURIComponent(loginSuccessUrl)}&errorReturnUrl=${encodeURIComponent(errorReturnUrl)}`;\r\n };\r\n\r\n\tuseEffect(() => {\r\n if (currentUser?.currentUser?.isAuthenticated) {\r\n alreadyLoggedIn(props);\r\n }\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t{dictionary?.Title}\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{dictionary?.ManchetText}\r\n\t\t\t
\r\n\r\n
\r\n \r\n \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n \r\n {dictionary?.HelpText}\r\n {dictionary?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nForgotPassword.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n goBack: PropTypes.func\r\n }),\r\n goBack: PropTypes.func,\r\n setErrorState: PropTypes.func\r\n};\r\n\r\nexport default withRouter(ForgotPassword);\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useForm } from 'react-hook-form';\r\nimport { withRouter } from 'react-router-dom';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { ErrorCategory } from 'app/registerFlow/constants';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport ApiRequest, { unwrapErrorStatusText } from 'foundation/apiRequest/apiRequest';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\nimport {\r\n\tHeading, Paragraph, Label, PhrasePrimary, Icon, Link, PhraseValidation\r\n} from 'atoms';\r\nimport { Button } from 'molecules';\r\nimport { update } from 'app/shared/store/slices/changePasswordSlice';\r\nimport { changePassword } from 'app/shared/store/api/user';\r\n\r\nconst ChangePassword = (props) => {\r\n\tconst context = useContext(Dictionary);\r\n\tconst changePasswordState = useSelector(state => state.ChangePassword);\r\n\tconst dispatch = useDispatch();\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\tconst params = new URLSearchParams(window.location.search);\r\n\tlet resetToken = params.get('resettoken');\r\n\tif (!resetToken) { // fallback if eloqua does not honor https protocol\r\n\t\tconst currentHash = window.location.hash;\r\n\t\tif (currentHash.indexOf('resettoken')) {\r\n\t\t\tlet hashResetToken = currentHash.substr(currentHash.indexOf('resettoken'));\r\n\t\t\thashResetToken = hashResetToken.substr(hashResetToken.indexOf('=') + 1);\r\n\t\t\tresetToken = hashResetToken.substr(0, hashResetToken.indexOf('&'));\r\n\t\t}\r\n\t}\r\n\r\n\tconst dictionary = context?.changepassword;\r\n\tconst requiredValidation = dictionary?.ValidationDictionary['forms.validationMessages.requiredField'];\r\n\tconst notEqualValidation = dictionary?.ValidationDictionary['forms.validationMessages.passwordnotequal'];\r\n\tconst passwordGuide = dictionary?.GuidanceDictionary['forms.guidanceMessages.passwordFormat'];\r\n\r\n\tconst {\r\n\t\tregister, handleSubmit, watch, errors, clearErrors\r\n\t} = useForm({ defaultValues: changePasswordState });\r\n\r\n\r\n\tconst onSubmit = async (formData) => {\r\n\t\tdispatch(update(formData));\r\n\t\tsetIsLoading(true);\r\n\t\tdispatch(changePassword())\r\n\t\t\t.then(unwrapResult)\r\n\t\t\t.then((res) => {\r\n\t\t\t\t// Any error code 4xx and 5xx\r\n\t\t\t\tif (res.status >= 400 || res.status === undefined) {\r\n\t\t\t\t\tthrow res;\r\n\t\t\t\t}\r\n\t\t\t\tprops.history.push(routes.passwordChanged.url);\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tconst { statusText } = unwrapErrorStatusText(error);\r\n\t\t\t\tif (statusText === 'WrongUserPassword') {\r\n\t\t\t\t\tprops.setErrorState('forms.validationMessages.resetTokenAlreadyUsed');\r\n\t\t\t\t}\r\n\t\t\t\tif (statusText === 'TokenExpired') { // Probably not supported yet.\r\n\t\t\t\t\tprops.setErrorState('forms.validationMessages.resetTokenExpired');\r\n\t\t\t\t}\r\n\r\n\t\t\t\twindow?.TC?.gaEvent('endpointError', ErrorCategory, `endpoint_changepassword_failed_with_${statusText}`);\r\n\t\t\t\tprops.history.push(routes.passwordFailed.url);\r\n\t\t\t});\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tdispatch(update({\r\n\t\t\tResetToken: null,\r\n\t\t\tPassword: null,\r\n\t\t\tPasswordRepeat: null\r\n\t\t}));\r\n\t\tif (!resetToken) {\r\n\t\t\tprops.setErrorState('forms.validationMessages.resetTokenMissing');\r\n\t\t\tprops.history.push(routes.passwordFailed.url);\r\n\t\t} else {\r\n\t\t\tdocument.getElementById('ResetToken').value = resetToken;\r\n\t\t}\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{dictionary?.Title}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{dictionary?.ManchetText}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t clearErrors('Password')}\r\n\t\t\t\t\t\t\t\tdisabled={isLoading}\r\n\t\t\t\t\t\t\t\taria-invalid={errors.Password ? 'true' : 'false'}\r\n\t\t\t\t\t\t\t\tname=\"Password\"\r\n\t\t\t\t\t\t\t\tid=\"Password\"\r\n\t\t\t\t\t\t\t\taria-label=\"Password\"\r\n\t\t\t\t\t\t\t\ttitle=\"Password\"\r\n\t\t\t\t\t\t\t\tplaceholder={passwordGuide}\r\n\t\t\t\t\t\t\t\tclassName=\"a-input a-input--string\"\r\n\t\t\t\t\t\t\t\ttype=\"password\" />\r\n\t\t\t\t\t\t\t{errors.Password && errors.Password.type === 'minLength' && Minimun 6 tegn}\r\n\t\t\t\t\t\t\t{errors.Password && errors.Password.type === 'required' && {requiredValidation}}\r\n\t\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\t\tDin adgangskode skal være mellem 6-20 karaktere lang\r\n\t\t\t\t\t\t\t */}\r\n\t\t\t\t\t\t\t{/* {routes.changePassword.label} */}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t value === watch('Password') })}\r\n\t\t\t\t\t\t\t\taria-invalid={errors.PasswordRepeat ? 'true' : 'false'}\r\n\t\t\t\t\t\t\t\tname=\"PasswordRepeat\" id=\"confirm_password\"\r\n\t\t\t\t\t\t\t\taria-label=\"input\"\r\n\t\t\t\t\t\t\t\ttitle=\"input\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"\"\r\n\t\t\t\t\t\t\t\tclassName=\"a-input a-input--string\"\r\n\t\t\t\t\t\t\t\ttype=\"password\" />\r\n\t\t\t\t\t\t\t{errors.PasswordRepeat && errors.PasswordRepeat.type === 'required' && {requiredValidation}}\r\n\t\t\t\t\t\t\t{errors.PasswordRepeat && errors.PasswordRepeat.type === 'validate' && {notEqualValidation}}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{dictionary?.HelpText}\r\n\t\t\t\t\t{dictionary?.HelpTextLinkText}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\nChangePassword.propTypes = {\r\n\tsetView: PropTypes.func,\r\n\thistory: PropTypes.shape({\r\n\t\tpush: PropTypes.func.isRequired,\r\n\t\tgoBack: PropTypes.func\r\n\t}),\r\n\tgoBack: PropTypes.func,\r\n\tsetErrorState: PropTypes.func\r\n};\r\n\r\nexport default withRouter(ChangePassword);\r\n","import React, { useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { populate } from 'app/registerFlow/Helpers';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport {\r\n Heading, Paragraph, PhrasePrimary, Icon, Link\r\n} from 'atoms';\r\nimport { Button } from 'molecules';\r\n\r\nconst PasswordFailed = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context.passwordfailed;\r\n const error = dictionary?.ValidationDictionary[props.error] ?? ' Ukendt fejl';\r\n\r\n const clickHandle = () => {\r\n window.location.href = dictionary?.CtaLink || '/';\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {dictionary?.Title}\r\n \r\n \r\n \r\n \r\n {populate(dictionary?.ManchetText,\r\n [\r\n { key: 'ERROR', value: error }\r\n ],\r\n true\r\n )}\r\n \r\n
\r\n
\r\n \r\n {dictionary?.AlternativeText ? \r\n {dictionary?.AlternativeText}\r\n \r\n {dictionary?.AlternativeTextLinkText}\r\n \r\n : null\r\n }\r\n
\r\n
\r\n {dictionary?.HelpText}\r\n {dictionary?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nPasswordFailed.propTypes = {\r\n error: PropTypes.string,\r\n setError: PropTypes.func\r\n};\r\n\r\nexport default withRouter(PasswordFailed);\r\n","import React, { useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/registerFlow/routes';\r\nimport {\r\n Heading, Paragraph, PhrasePrimary, PhraseSecondary, Icon, Link\r\n} from 'atoms';\r\nimport { Button } from 'molecules';\r\nimport Dictionary from '../../context/Dictionary';\r\n\r\nconst RegisterSuccess = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.passwordsent;\r\n const clickHandle = () => {\r\n window.location.href = dictionary?.CtaLink || '/';\r\n };\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n {dictionary?.Title}\r\n \r\n \r\n \r\n {dictionary?.ManchetText}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {dictionary?.AlternativeText}\r\n {dictionary?.AlternativeTextLinkText}\r\n \r\n \r\n {dictionary?.HelpText}\r\n {dictionary?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nRegisterSuccess.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n }),\r\n};\r\n\r\nexport default withRouter(RegisterSuccess);\r\n","import React, { useContext } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/registerFlow/routes';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/registerFlow/containers';\r\n\r\nconst SessionFail = (props) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.sessionexpired;\r\n\r\n const clickHandle = () => {\r\n props.history.push(routes.login.url);\r\n };\r\n\r\n return (\r\n );\r\n};\r\n\r\nSessionFail.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n }),\r\n};\r\n\r\nexport default withRouter(SessionFail);\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter } from 'react-router-dom';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/registerFlow/containers';\r\n\r\nconst GeneralError = (props) => {\r\n\tconst context = useContext(Dictionary);\r\n\tconst dictionary = context?.generalerror;\r\n\r\n\tconst clickHandle = (link) => {\r\n\t\tif (link.includes('#')) {\r\n\t\t\twindow.location.hash = link;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\twindow.location = window.location.pathname;\r\n\t};\r\n\r\n\treturn (\r\n\t\t clickHandle(dictionary?.CtaLink)}\r\n\t\t\tButtonText={dictionary?.CtaText}\r\n\t\t/>);\r\n};\r\n\r\nGeneralError.propTypes = {\r\n\tsetView: PropTypes.func,\r\n\thistory: PropTypes.shape({\r\n\t\tpush: PropTypes.func.isRequired\r\n\t})\r\n};\r\n\r\n\r\nexport default withRouter(GeneralError);\r\n","import React, { useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport routes from 'app/registerFlow/routes';\r\nimport { checkUserVerification } from 'app/registerFlow/Helpers';\r\nimport { showFlowAfterLogin } from 'app/shared/store/slices/currentUserSlice';\r\nimport ApiRequest from 'foundation/apiRequest/apiRequest';\r\nimport { Loader } from 'atoms';\r\n\r\nconst PostLogin = (props) => {\r\n const dispatch = useDispatch();\r\n const currentUser = useSelector(state => state.currentUser);\r\n\r\n useEffect(() => {\r\n if (typeof window.TC?.gaEvent === 'function') {\r\n window?.TC?.gaEvent('success', 'login', 'login_med_mitid');\r\n }\r\n\r\n ApiRequest(`${process.env.API_URL}/tivolicasino/membership/checkUserVerification`).then((response) => {\r\n checkUserVerification(response, props);\r\n\r\n if (currentUser?.showDeposit) {\r\n dispatch(showFlowAfterLogin({ showDeposit: false }));\r\n props.history.push(routes.deposit.url);\r\n }\r\n else if (currentUser?.showWithdraw) {\r\n dispatch(showFlowAfterLogin({ showWithdraw: false }));\r\n props.history.push(routes.withdraw.url);\r\n } else {\r\n props.history.push('');\r\n }\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default withRouter(PostLogin);\r\n","import { useEffect } from 'react';\r\nimport routes from 'app/registerFlow/routes';\r\n\r\nconst DetectLogin = (props) => {\r\n useEffect(() => {\r\n props.history.push(routes.login.url);\r\n }, []);\r\n\r\n return null;\r\n};\r\n\r\nexport default DetectLogin;\r\n","import React, {useContext, useState} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport routes from 'app/registerFlow/routes';\r\nimport { useSelector } from 'react-redux';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { isObject, isJsonString} from 'foundation/Helpers';\r\nimport { populate } from 'foundation/dictionary/dictionary';\r\nimport { Heading, Paragraph, PhrasePrimary, Icon, Link } from 'atoms';\r\nimport { Button } from 'molecules';\r\nconst ConfirmAction = (props) => {\r\n const context = useContext(Dictionary);\r\n const [nemIdOpen, setNemIdOpen] = useState(false);\r\n const {dictionaryType, dictionaryData, returnUrl, errorReturnUrl, mitIdDefault, hideAlert, actionType} = props.location.state ? props.location.state\r\n : Object.fromEntries(new URLSearchParams(props.location.search)) ;\r\n const dictionary = context && context[dictionaryType];\r\n const dictionaryDecodeDate = isObject(dictionaryData) ? dictionaryData : JSON.parse(isJsonString(decodeURIComponent(dictionaryData)) ? decodeURIComponent(dictionaryData) : '{}');\r\n const currentUser = useSelector(state => state.currentUser.currentUser);\r\n\r\n const handleMitIdClick = () => {\r\n const mitIdErrorReturnUrl = `${window.location.href.split('#')[0]}#${errorReturnUrl || routes.confirmActionError.url}`;\r\n const mitIdReturnUrl = `${window.location.href.split('#')[0]}#${returnUrl}`;\r\n window.location.href = `/api/tivolicasino/membership/mitid/verifyidentity?returnUrl=${encodeURIComponent(mitIdReturnUrl)}&errorReturnUrl=${encodeURIComponent(mitIdErrorReturnUrl)}`;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {!hideAlert && !nemIdOpen && \r\n \r\n }\r\n {nemIdOpen ? 'Bekræft' : populate(dictionary?.Title, dictionaryDecodeDate)}\r\n \r\n \r\n \r\n {currentUser.cannotConfirmWithNemID ?\r\n {nemIdOpen ? null : populate(dictionary?.GuidanceDictionary['forms.guidanceMessages.Components.mitidlogin.cannotConfirmNemIDManchet'], dictionaryDecodeDate)}\r\n : {nemIdOpen ? null : populate(dictionary?.ManchetText, dictionaryDecodeDate)}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {dictionary?.HelpText}\r\n {dictionary?.HelpTextLinkText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nConfirmAction.propTypes = {\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired,\r\n goBack: PropTypes.func\r\n }),\r\n location: PropTypes.shape({\r\n state: PropTypes.shape({\r\n errorReturnUrl: PropTypes.string,\r\n returnUrl: PropTypes.string\r\n })\r\n }),\r\n goBack: PropTypes.func\r\n};\r\n\r\nexport default ConfirmAction;\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter } from 'react-router-dom';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { ErrorMessage } from 'app/registerFlow/containers';\r\n\r\nconst ErrorPage = ({ dictionaryPath, setView, history }) => {\r\n const context = useContext(Dictionary);\r\n const dictionary = context && context[dictionaryPath];\r\n\r\n const clickHandle = (link) => {\r\n if (link.includes('#')) {\r\n window.location.hash = link;\r\n return;\r\n }\r\n\r\n window.location = window.location.pathname;\r\n };\r\n\r\n return (\r\n clickHandle(dictionary?.CtaLink)}\r\n ButtonText={dictionary?.CtaText}\r\n />);\r\n};\r\n\r\nErrorPage.propTypes = {\r\n dictionaryPath: PropTypes.string,\r\n setView: PropTypes.func,\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n })\r\n};\r\n\r\n\r\nexport default withRouter(ErrorPage);\r\n","import ApiRequest from 'foundation/apiRequest/apiRequest';\r\nimport { clearCookies } from 'foundation/Helpers/utils';\r\n\r\nexport const logout = async () => {\r\n try {\r\n const response = await ApiRequest(`${process.env.API_URL}/tivolicasino/membership/logout`, { method: 'POST' });\r\n\r\n if (response.status === 200) {\r\n window.localStorage.clear();\r\n window.sessionStorage.clear();\r\n clearCookies();\r\n }\r\n\r\n return response;\r\n } catch (error) {\r\n return error;\r\n }\r\n};","import React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getParam } from 'foundation/url';\r\nimport { logout } from 'foundation/authentication/logout';\r\nimport { emptyCurrentUser } from 'app/shared/store/slices/currentUserSlice';\r\n\r\nconst Logout = (props) => {\r\n const dispatch = useDispatch();\r\n const currentUser = useSelector(state => state.currentUser);\r\n const returnUrl = getParam('logoutSuccessUrl');\r\n\r\n useEffect(() => {\r\n const requestLogout = async () => {\r\n const response = await logout(returnUrl);\r\n if (response.status === 200) {\r\n dispatch(emptyCurrentUser());\r\n \r\n if (returnUrl) {\r\n window.location.href = returnUrl;\r\n return;\r\n } else {\r\n window.location.href = window.location.origin;\r\n }\r\n } else {\r\n props.history.push('');\r\n }\r\n };\r\n\r\n if (currentUser.currentUser?.isAuthenticated) {\r\n requestLogout();\r\n } else {\r\n props.history.push('');\r\n }\r\n }, []);\r\n\r\n return (\r\n
\r\n );\r\n};\r\n\r\nLogout.propTypes = {\r\n history: PropTypes.shape({\r\n push: PropTypes.func.isRequired\r\n }),\r\n};\r\n\r\nexport default Logout;\r\n","import React, { useContext } from 'react';\r\nimport Dictionary from 'app/registerFlow/context/Dictionary';\r\nimport { Confirm } from 'organisms';\r\nimport { CloseButton } from 'molecules';\r\n\r\nconst DeleteReciept = (props) => {\r\n\tconst { toggleModal } = props;\r\n const context = useContext(Dictionary);\r\n const dictionary = context?.deletereciept;\r\n\r\n\tconst deleteReceiptContent = {\r\n\t\theader: dictionary.Title,\r\n\t\tparagraph: dictionary.ManchetText,\r\n\t\tctaText: dictionary.CtaText,\r\n\t\ticon: '#icon-check',\r\n\t\tonClick: () => {\r\n\t\t\twindow.location.href = dictionary.CtaLink;\r\n\t\t},\r\n\t\tsecondaryCta: {\r\n\t\t\ttext: dictionary.HelpText,\r\n\t\t\tlink: {\r\n\t\t\t\turl: dictionary.HelpTextLink,\r\n\t\t\t\ttext: dictionary.HelpTextLinkText,\r\n\t\t\t}\r\n\t\t}\r\n };\r\n\r\n return (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\ttoggleModal(false);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n \t\r\n\t\t\r\n );\r\n};\r\n\r\nexport default DeleteReciept;\r\n","import React, { useState, useEffect } from 'react';\r\nimport {\r\n\tSwitch, Route, withRouter, useLocation\r\n} from 'react-router-dom';\r\nimport { SwitchTransition, CSSTransition } from 'react-transition-group';\r\nimport routes from 'app/registerFlow/routes';\r\nimport { Provider } from 'react-redux';\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\nimport PropTypes from 'prop-types';\r\nimport { fetchAuth } from 'foundation/Helpers/fetchAuth';\r\nimport { ErrorCategory, GaEvent } from 'app/registerFlow/constants';\r\nimport { authProtectedRoute } from 'app/registerFlow/constants/sessionStorage';\r\nimport AuthContext from 'app/registerFlow/context/Auth';\r\nimport { PrivateRoute } from 'app/registerFlow/Helpers';\r\nimport {\r\n\tForgotPassword, Login, LoginFail, Signup, PersonalNumber,\r\n\tPersonalInformation, Profile, DepositLimit, SecurityQuestion, RegisterSuccess,\r\n \tRegisterAlertDocumentaionNeeded, Documentation, DocumentationSuccess, DocumentationPendingVerify,\r\n\tMarketing,\r\n\tDocumentationPending,\r\n\tChangePassword,\r\n\tPasswordChanged,\r\n\tPasswordFailed,\r\n\tPasswordSent,\r\n\tPersonalNumberFail,\r\n\tNemIdFail,\r\n\tLoginError,\r\n\tSessionFail,\r\n\tGeneralError,\r\n\tPostLogin,\r\n\tConfirmAction,\r\n\tErrorPage,\r\n\tDetectLogin,\r\n\tFirstTimeSecureLogin,\r\n\tPersonalNumberConfirm,\r\n\tLogout,\r\n\tDeleteReciept\r\n} from 'app/registerFlow/Views';\r\nimport { store, persistor } from 'app/shared/store';\r\nimport { ProgressBar } from 'molecules';\r\nimport { Modal } from 'organisms';\r\n\r\nconst RegisterApp = (props) => {\r\n\tconst [isModalOpen, setModalVisibility] = useState(null);\r\n\tconst [auth, setAuth] = useState({ require: null });\r\n\tconst [error, setErrorState] = useState(null);\r\n\tconst { pathname } = props.location;\r\n\tconst currentRoute = Object.values(routes).filter((route) => {\r\n\r\n\t\tif (route.url.indexOf(':') > -1) {\r\n\t\t\tconst tempRoute = route.url.substring(0, route.url.indexOf(':'));\r\n\t\t\tconst isPartOfRoute = pathname.indexOf(tempRoute);\r\n\t\t\tif (isPartOfRoute === 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn route.url === pathname;\r\n\t})[0];\r\n\tconst { progress, label, isVisible, skipAuth, closeTitle } = currentRoute || {};\r\n\tconst location = useLocation();\r\n\r\n\tuseEffect(() => {\r\n\t\ttry {\r\n\t\t\tconst pathArray = pathname.split('/');\r\n\t\t\tlet name = pathArray[pathArray.length - 1];\r\n\r\n\t\t\tif (!name.length) {\r\n\t\t\t\tname = 'forside';\r\n\t\t\t}\r\n\t\t\tif (currentRoute) {\r\n\t\t\t\tif (!skipAuth) {\r\n\t\t\t\t\tfetchAuth()\r\n\t\t\t\t\t\t.then((authResponse) => {\r\n\t\t\t\t\t\t\tlet requiredAuth = null;\r\n\t\t\t\t\t\t\tif (currentRoute.pidRequired && authResponse?.data?.Data?.IsPidValid.toLowerCase() === 'false') {\r\n\t\t\t\t\t\t\t\trequiredAuth = 'pid';\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (currentRoute.authRequired && authResponse?.data?.Data?.IsAuthValid.toLowerCase() === 'false') {\r\n\t\t\t\t\t\t\t\trequiredAuth = 'login';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tsetAuth({require: requiredAuth});\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch((authError) => {\r\n\t\t\t\t\t\t\tsetAuth({ require: 'failed' });\r\n\t\t\t\t\t\t\twindow?.TC?.gaEvent('sessionError', ErrorCategory, `session_failed_with_${authError.statusText}`);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\twindow?.TC?.pushVirtualPage(name, `/virtualPath/registrering${pathname}`);\r\n if(currentRoute.gaEvent) {\r\n window?.TC?.gaEvent(currentRoute.gaEvent.action, currentRoute.gaEvent.category, currentRoute.gaEvent.label);\r\n }\r\n\t\t\t\tsetModalVisibility(true);\r\n\t\t\t} else {\r\n\t\t\t\tprops.history.push(routes.generalError.url);\r\n\t\t\t}\r\n\t\t} catch (pathError) {\r\n\t\t\tconsole.error('Could not get route', pathname, pathError);\r\n\t\t}\r\n\r\n\t\tsetSessionStateIfProtectedRoute();\r\n\t}, [location]);\r\n\r\n\tconst setSessionStateIfProtectedRoute = () => {\r\n\t\tif (window.location.hash.includes('user=tivolicasino_da%5cAnonymous')) {\r\n\t\t\tsessionStorage.setItem(authProtectedRoute, 'true');\r\n\t\t}\r\n\t};\r\n\r\n\tconst toggleModal = (isModalVisible) => {\r\n\t\tsetModalVisibility(isModalVisible);\r\n\r\n\t\tif (isModalVisible) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\twindow.location.hash = ''; // Lets cleanup react route\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t } />\r\n\t\t\t\t\t\t\t\t\t\t } />\r\n\t\t\t\t\t\t\t\t\t\t } />\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t }/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nRegisterApp.propTypes = {\r\n\thistory: PropTypes.shape({\r\n\t\tpush: PropTypes.func.isRequired,\r\n\t}),\r\n\tlocation: PropTypes.shape({\r\n\t\tpathname: PropTypes.string\r\n\t}),\r\n\tmodelId: PropTypes.string,\r\n\tappBaseRoute: PropTypes.string\r\n};\r\n\r\nexport default withRouter(RegisterApp);\r\n","const appBaseRoute = window?.TC?.appRoutes?.search || '/soeg';\r\n\r\nconst routes = {\r\n search: {\r\n url: `${appBaseRoute}/:searchString?`,\r\n },\r\n noResults: {\r\n url: `${appBaseRoute}/ingen-resultater`,\r\n }\r\n};\r\n\r\nexport default routes;\r\n","import React from 'react';\r\n\r\nexport default React.createContext({});\r\n","import React, { useState, useContext, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\nimport { Loader, Paragraph, Link, Icon } from 'atoms';\r\nimport { TopSection } from 'molecules';\r\nimport { GameCard } from 'organisms';\r\nimport Dictionary from 'app/searchApp/context/Dictionary';\r\nimport { pushGaEventOnPageRedirect } from '../../../foundation/tracking/tracking';\r\nimport {pushGaEventVirtualPageOnPageRedirect} from \"../../../foundation/tracking/tracking\";\r\n\r\nconst SearchResults = () => {\r\n const dictionary = useContext(Dictionary);\r\n const minCharacters = 2;\r\n const { searchString } = useParams();\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isNew, setIsNew] = useState(true);\r\n const [results, setResults] = useState([]);\r\n const games = useSelector(state => state.games.games);\r\n const gamesStatus = useSelector(state => state.games.status);\r\n const currentUser = useSelector(state => state.currentUser.currentUser);\r\n\r\n const closeLinkHandler = () => {\r\n document.body.classList.remove('hide-main-content');\r\n document.body.classList.remove('has-search-open');\r\n window.location.hash = '/';\r\n };\r\n\r\n useEffect(() => {\r\n if (gamesStatus === 'succeeded') {\r\n setIsLoading(false);\r\n }\r\n }, [gamesStatus]);\r\n\r\n useEffect(() => {\r\n if (searchString) {\r\n document.getElementById('search').value = searchString;\r\n document.body.classList.add('hide-main-content');\r\n }\r\n }, [window.location])\r\n\r\n useEffect(() => {\r\n if (!searchString || searchString?.length < minCharacters) {\r\n setIsNew(true);\r\n setResults([]);\r\n return;\r\n }\r\n\r\n if (isNew) {\r\n setIsNew(false);\r\n }\r\n\r\n const results = games.filter(game => {\r\n const searchStr = searchString.toLowerCase();\r\n const titleMatch = game.title.toLowerCase().includes(searchStr);\r\n const providerMatch = game.metadata.provider.toLowerCase().includes(searchStr);\r\n\r\n return titleMatch || providerMatch;\r\n });\r\n\r\n setResults(results);\r\n }, [games, searchString]);\r\n\r\n useEffect( () => {\r\n pushGaEventOnPageRedirect('search', '', searchString);\r\n pushGaEventVirtualPageOnPageRedirect(searchString, window.location.hash);\r\n\r\n }, [searchString]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n {dictionary?.closeButtonText}\r\n \r\n \r\n\r\n \r\n\r\n {isLoading && }\r\n\r\n {!isLoading && !isNew && !results.length && {dictionary?.noSearchResultsText}}\r\n\r\n {!isLoading && !isNew && results.length ?\r\n <>\r\n
\r\n {results.map((game, index) => (\r\n \r\n ))}\r\n
\r\n : null}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n\r\nexport default SearchResults;\r\n","import React from 'react';\r\nimport { Switch, Route, withRouter } from 'react-router-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\nimport { store, persistor } from 'app/shared/store';\r\nimport routes from 'app/searchApp/routes';\r\nimport { SearchResults } from 'app/searchApp/Views';\r\n\r\nconst SearchApp = () => {\r\n return (\r\n \r\n\t\t \r\n \r\n \r\n \r\n \r\n\t \r\n\t);\r\n};\r\n\r\nexport default withRouter(SearchApp);\r\n","import React from 'react';\r\n\r\nexport default React.createContext({});\r\n","/* add list to be able to exclude ssome based on a reqex on a page to where the StateFetxh is used\r\n* in this case, we want to avoid calling the livecasino state on the /konto/ pages\r\n* with:\r\n*\r\n* Example:\r\n*\r\n* export const stateFetchConfigDisabledOnUrls = [\r\n /konto/\r\n];\r\n\r\n if (!stateFetchConfigDisabledOnUrls.some(rx => rx.test(location.pathname))) {\r\n // page matches som of the regex urls\r\n dispatch(getAllLivecasinoGames());\r\n }\r\n*\r\n* */\r\n\r\nexport const stateFetchConfigDisabledOnUrls = [\r\n /\\/konto/,\r\n];","import { useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getAllGames, getAllJackpots, getAllLivecasinoGames, getAllRecentGames, getUsersFavoriteGames } from 'app/shared/store/slices/gamesSlice';\r\nimport { getCurrentBalance, getCurrentBonus, emptyCurrentUser, getUserPulse } from 'app/shared/store/slices/currentUserSlice';\r\nimport { getGaEventAfterPageRedirect, getGaEventVirtualPageAfterPageRedirect } from 'foundation/tracking/tracking';\r\nimport { stateFetchConfigDisabledOnUrls } from './StateFetchConfig';\r\n\r\nconst StateFetch = () => {\r\n const dispatch = useDispatch();\r\n const gamesStatus = useSelector(state => state.games.status);\r\n const currentUser = useSelector(state => state.currentUser.currentUser);\r\n let getRecentGamesInterval;\r\n let getBalanceInterval;\r\n let getBonusInterval;\r\n let getUserPulseInterval;\r\n let getLivecasinoGamesInterval;\r\n let getJackpotsInterval;\r\n\r\n useEffect(() => {\r\n if (gamesStatus === 'idle') {\r\n dispatch(getAllGames());\r\n } else {\r\n if (!stateFetchConfigDisabledOnUrls.some(rx => rx.test(location.pathname))) {\r\n dispatch(getAllJackpots());\r\n dispatch(getAllLivecasinoGames());\r\n }\r\n\r\n if (currentUser.isAuthenticated) {\r\n dispatch(getCurrentBalance()); // Lets always load balance upon new page load.\r\n dispatch(getCurrentBonus());\r\n dispatch(getUserPulse());\r\n\r\n if (!stateFetchConfigDisabledOnUrls.some(rx => rx.test(location.pathname))) {\r\n dispatch(getAllRecentGames());\r\n dispatch(getUsersFavoriteGames());\r\n }\r\n }\r\n }\r\n\r\n if (!stateFetchConfigDisabledOnUrls.some(rx => rx.test(location.pathname))) {\r\n getLivecasinoGamesInterval = setInterval(async() => {\r\n dispatch(getAllLivecasinoGames());\r\n }, 15 * 1000);\r\n getJackpotsInterval = setInterval(async() => {\r\n dispatch(getAllJackpots());\r\n }, 60 * 1000);\r\n }\r\n\r\n if (currentUser.isAuthenticated) {\r\n if (!stateFetchConfigDisabledOnUrls.some(rx => rx.test(location.pathname))) {\r\n getRecentGamesInterval = setInterval(async () => {\r\n dispatch(getAllRecentGames());\r\n }, 120 * 1000);\r\n }\r\n\r\n getBalanceInterval = setInterval(async () => {\r\n dispatch(getCurrentBalance());\r\n }, 60 * 1000);\r\n getBonusInterval = setInterval(async () => {\r\n dispatch(getCurrentBonus());\r\n }, 60 * 1000);\r\n getUserPulseInterval = setInterval(async() => {\r\n dispatch(getUserPulse());\r\n }, 15 * 1000);\r\n } else {\r\n dispatch(emptyCurrentUser());\r\n }\r\n\r\n return () => {\r\n\r\n if (!stateFetchConfigDisabledOnUrls.some(rx => rx.test(location.pathname))) {\r\n clearInterval(getLivecasinoGamesInterval);\r\n clearInterval(getJackpotsInterval);\r\n clearInterval(getRecentGamesInterval);\r\n }\r\n clearInterval(getBalanceInterval);\r\n clearInterval(getBonusInterval);\r\n clearInterval(getUserPulseInterval);\r\n };\r\n }, [gamesStatus, dispatch]);\r\n\r\n useEffect(() => {\r\n if (!currentUser.isAuthenticated && currentUser.status !== 'idle') {\r\n clearInterval(getRecentGamesInterval);\r\n clearInterval(getBalanceInterval);\r\n clearInterval(getBonusInterval);\r\n clearInterval(getUserPulseInterval);\r\n }\r\n }, [currentUser]);\r\n\r\n useEffect( () => {\r\n if (localStorage.getItem('localStorageGaEventTracking') !== null) {\r\n getGaEventAfterPageRedirect();\r\n }\r\n\r\n if (localStorage.getItem('localStorageGaEventVirtualPageTracking') !== null) {\r\n getGaEventVirtualPageAfterPageRedirect();\r\n }\r\n }, []);\r\n\r\n return null;\r\n};\r\n\r\nexport default StateFetch;","import React from 'react';\r\nimport { Provider } from 'react-redux';\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\nimport { store, persistor } from 'app/shared/store';\r\nimport StateFetch from './StateFetch';\r\n\r\nconst StateInit = () => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default StateInit;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { HashRouter, Switch, Route } from 'react-router-dom';\r\nimport DepositApp from 'app/depositFlow/DepositApp';\r\nimport DepositRedirectRoute from 'app/depositFlow/Views/DepositRedirect';\r\nimport DepositDictionary from 'app/depositFlow/context/Dictionary';\r\nimport DepositExtraInputs from 'app/depositFlow/context/ExtraInputs';\r\nimport WithdrawApp from 'app/withdrawFlow/WithdrawApp';\r\nimport WithdrawDictionary from 'app/withdrawFlow/context/Dictionary';\r\nimport WithdrawExtraInputs from 'app/withdrawFlow/context/ExtraInputs';\r\nimport RegisterApp from 'app/registerFlow/RegisterApp';\r\nimport RegisterDictionary from 'app/registerFlow/context/Dictionary';\r\nimport RegisterExtraInputs from 'app/registerFlow/context/ExtraInputs';\r\nimport SearchApp from 'app/searchApp/SearchApp';\r\nimport SearchDictionary from 'app/searchApp/context/Dictionary';\r\nimport PopupApp from 'app/popup/PopupApp';\r\nimport PopupDictionary from 'app/popup/context/Dictionary';\r\nimport PopupExtraInputs from 'app/popup/context/ExtraInputs';\r\nimport { fetchDictionary } from 'foundation/dictionary/dictionary';\r\nimport { initTracking } from 'foundation/tracking/tracking';\r\nimport StateInit from 'app/shared/StateInit';\r\nimport BaseFeature from 'foundation/base/base';\r\n\r\nconst API_BASE_URL = '/tivolicasino/membership';\r\nconst API_DEPOSIT_BASE_URL = '/tivolicasino/payment';\r\nconst API_WITHDRAW_BASE_URL = '/tivolicasino/payment';\r\n\r\nconst APP_BASE_ROUTES = {\r\n register: '/bruger',\r\n deposit: '/indbetaling',\r\n depositredirect: '/indbetaling-redirect',\r\n withdraw: '/udbetaling',\r\n popup: '/info',\r\n search: '/soeg'\r\n};\r\n\r\nclass AppWrapper extends BaseFeature {\r\n constructor(element) {\r\n super(element);\r\n this.element = element;\r\n\r\n // Configuration for Dictionaries\r\n this.registrationId = this.settings.registrationId;\r\n this.registrationTTL = parseInt(this.settings.registrationTTL, 10);\r\n this.registrationDictionary = null;\r\n this.registrationApi = `${API_BASE_URL}/getregistrationformdata`;\r\n\r\n this.depositId = this.settings.depositId;\r\n this.depositTTL = parseInt(this.settings.depositTTL, 10);\r\n this.depositDictionary = null;\r\n this.depositApi = `${API_DEPOSIT_BASE_URL}/getdepositformdata`;\r\n\r\n this.withdrawId = this.settings.withdrawId;\r\n this.withdrawTTL = parseInt(this.settings.withdrawTTL, 10);\r\n this.withdrawDictionary = null;\r\n this.withdrawApi = `${API_WITHDRAW_BASE_URL}/getwithdrawformdata`;\r\n\r\n this.popupId = this.settings.popupId;\r\n this.popupTTL = parseInt(this.settings.popupTTL, 10);\r\n this.popupDictionary = null;\r\n this.popupApi = `${API_BASE_URL}/getpopupformdata`;\r\n\r\n this.searchDictionary = this.settings.searchDictionary;\r\n\r\n this.init();\r\n\r\n initTracking();\r\n }\r\n\r\n async init() {\r\n try {\r\n this.registrationDictionary = await fetchDictionary({\r\n id: this.registrationId,\r\n ttl: this.registrationTTL,\r\n api: this.registrationApi\r\n });\r\n this.depositDictionary = await fetchDictionary({\r\n id: this.depositId,\r\n ttl: this.depositTTL,\r\n api: this.depositApi\r\n });\r\n this.withdrawDictionary = await fetchDictionary({\r\n id: this.withdrawId,\r\n ttl: this.withdrawTTL,\r\n api: this.withdrawApi\r\n });\r\n this.popupDictionary = await fetchDictionary({\r\n id: this.popupId,\r\n ttl: this.popupTTL,\r\n api: this.popupApi,\r\n isPopupContent: true\r\n });\r\n } catch (error) {\r\n console.error(error.message);\r\n } finally {\r\n window.TC = window.TC || {};\r\n window.TC.appRoutes = APP_BASE_ROUTES;\r\n window.TC.baseUrl = API_BASE_URL;\r\n\r\n this.loadReactApp();\r\n }\r\n }\r\n\r\n loadReactApp() {\r\n ReactDOM.render(\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
, this.element);\r\n }\r\n}\r\nexport default AppWrapper;\r\n","import ApiRequest from 'foundation/apiRequest/apiRequest';\r\nimport { getItem as getCacheItem, setItem as setCacheItem } from 'foundation/utilities/cache';\r\n\r\nexport const dictionaryRequest = (id, api, isPopupContent) => {\r\n const params = { itemId: id };\r\n\r\n return ApiRequest(`${process.env.API_URL}${api}`, { method: 'GET', params: params })\r\n .then((response) => {\r\n const dictionary = {};\r\n const dictionaryItems = isPopupContent\r\n ? response.data.PopupContentModelList : response.data.FormContentModelList;\r\n\r\n dictionaryItems.forEach((dictionaryItem) => {\r\n dictionary[dictionaryItem.Type] = dictionaryItem;\r\n });\r\n\r\n dictionary.extraInputs = response.data.ExtraFormInput;\r\n dictionary.ErrorMessages = response.data.ErrorMessages;\r\n dictionary.config = {\r\n isMitIDEnabled: typeof response.data.IsMitIDEnabled !== 'undefined' ? response.data.IsMitIDEnabled : false,\r\n isNemIDEnabled: typeof response.data.IsNemIDEnabled !== 'undefined' ? response.data.IsNemIDEnabled : true,\r\n isPayoutVerifyEnabled: response.data.IsPayoutVerifyEnabled || false,\r\n isPayoutVerifyEnabledMobile: response.data.IsPayoutVerifyEnabledMobile || false\r\n };\r\n\r\n return dictionary;\r\n }).catch(() => new Error(`Could not load endpoint: ${api}`));\r\n};\r\n\r\nexport const populate = (dictionary, data) => {\r\n let populated = dictionary;\r\n if (data) {\r\n Object.keys(data).forEach((key) => {\r\n if (dictionary && dictionary.includes(key)) {\r\n populated = populated.replace(new RegExp('{' + key + '}', 'gi'), data[key]);\r\n }\r\n });\r\n }\r\n\r\n return populated;\r\n};\r\n\r\nexport const fetchDictionary = async ({\r\n id,\r\n ttl,\r\n api,\r\n isPopupContent\r\n}) => {\r\n let localDictionary = {};\r\n\r\n\r\n try {\r\n const data = getCacheItem(id);\r\n\r\n if (!data) {\r\n throw new Error(`No data found for id: ${id}`);\r\n }\r\n\r\n localDictionary = data;\r\n return Promise.resolve(localDictionary);\r\n } catch (error) {\r\n if (!(api && id)) {\r\n return Promise.reject(new Error(`Api cannot be reached, or id does not exist. API: ${api}, ID: ${id}`));\r\n }\r\n\r\n localDictionary = await dictionaryRequest(id, api, isPopupContent);\r\n setCacheItem(id, localDictionary, ttl);\r\n\r\n return Promise.resolve(localDictionary);\r\n }\r\n};\r\n","export const getParam = (name, query = window.location.search) => {\r\n const params = new URLSearchParams(query);\r\n return params.get(name);\r\n};\r\n\r\nexport const addParam = (name, val, query = window.location.search) => {\r\n const params = new URLSearchParams(query);\r\n params.append(name, val);\r\n\r\n return params;\r\n};\r\n\r\nexport const deleteParam = (name, query = window.location.search) => {\r\n const params = new URLSearchParams(query);\r\n params.delete(name);\r\n\r\n return params;\r\n};"],"names":["React","loggedIn","userVerified","firstLoginAttempt","secondLoginAttempt","randomUsername","hasUploaded","authProtectedRoute","props","auth","useContext","AuthContext","require","Redirect","to","pathname","routes","sessionFail","url","login","generalError","Route","showLastLoginEvent","event","CustomEvent","window","dispatchEvent","checkUserVerification","response","data","unwrapSuccessData","isAuthProtectedRouteReferrer","sessionStorage","getItem","LastLoginTime","setItem","UserVerified","HasUploaded","toLowerCase","removeItem","ForceRedirectUrl","location","href","ForceTermsRedirectUrl","history","push","terms","loginSuccessUrl","getParam","returnUrl","document","body","dataset","reloadonlogin","hash","substring","registerRoutes","postLogin","search","reload","alreadyLoggedIn","replaceState","populate","dictionary","dangerously","populated","forEach","entry","includes","key","replace","RegExp","value","html","__html","dangerouslySetInnerHTML","Login","dispatch","useDispatch","context","Dictionary","loginusernamepwd","isLoading","setIsLoading","useState","currentUser","useSelector","state","register","handleSubmit","errors","clearErrors","setError","useForm","useEffect","isAuthenticated","loginLinks","replaceWithComponent","text","components","variable","needle","matches","match","parts","split","innerText","map","jsxStr","part","index","hasOwnProperty","reactElem","component","GuidanceDictionary","Link","onClick","handleMitIdClick","errorReturnUrl","personalNumberConfirm","loginSuccessParam","encodeURIComponent","className","BackBtn","backClick","goBack","Heading","Title","Icon","iconId","Paragraph","ManchetText","onSubmit","credentials","username","password","ApiRequest","method","then","TC","gaEvent","getCurrentUser","userResponse","headerClasses","getElementsByClassName","classList","contains","remove","add","parsedDate","Date","parse","payload","loginTimeStamp","startTime","Cookies","set","showDeposit","showFlowAfterLogin","deposit","showWithdraw","withdraw","catch","error","statusText","status","unwrapErrorStatusText","ErrorCategory","firstTimeSecureLogin","loginError","loginExcluded","err","ErrorMessages","type","message","onError","Label","ref","required","ValidationDictionary","id","name","PhraseValidation","minLength","maxLength","onChange","title","Password","forgotPassword","handleForgotPasswordClick","forgottenpassword","Button","PhraseSecondary","useDiv","handleClick","signup","CtaText","PhrasePrimary","HelpText","HelpTextLink","HelpTextLinkText","propTypes","PropTypes","isRequired","ErrorMessage","_ref","clickHandle","ButtonText","linkTarget","target","LoginFail","noaccountalert","personalNumber","setView","LoginError","loginusernamepwdfailed","link","AlternativeTextLink","NemID","firsttimesecurelogin","config","isMitIDEnabled","isNemIDEnabled","nemidFail","addParam","NemIdFail","loginnemidfailed","RegisterAlertDocumentaionNeeded","accountcreatedalert","documentation","withRouter","RegisterSuccess","accountconfirmed","CtaLink","Signup","loginnemidcreateaccount","isMounted","AlternativeText","AlternativeTextLinkText","DepositLimit","depositlimit","creationError","setCreationError","globalLimits","setGlobalLimits","mode","reValidateMode","defaultValues","preventCharacters","depositInput","querySelector","addEventListener","evt","keyCode","preventDefault","postGlobalLimits","PersonalNumber","unwrapResult","limitsMapped","Daily","day","Weekly","week","Monthly","month","setTimeout","depositlimits","Object","keys","ListInputDictionary","formData","update","marketing","SelectedLimit","cssClass","Input","useRef","min","validate","max","amount","period","selectedLimit","maxGlobalLimitForPeriod","Number","parseFloat","periodDictionary","formatCurrency","validateGlobalLimit","customAttributes","inputMode","placeholder","Limit","Loader","go","Marketing","extraInputContext","ExtraInputs","isPostBack","setIsPostBack","marketingTexts","MarketingTexts","length","Text","clearStorage","clearStorageAndSendToGeneralErrorPage","createUser","res","undefined","empty","registerSuccess","registerAlertDocumentaionNeeded","finally","AcceptMarketing","PersonalInformation","personalinfo","personalInformation","setValue","validZip","setValidZip","emailValid","setEmailValid","countryCode","input","intlTelInput","initialCountry","nationalMode","rawPhoneCode","getAttribute","countryCodeAndPhone","lastIndexOf","setAttribute","async","profile","onBlur","validateEmail","Avaliable","Message","unknownEmailError","Email","pattern","autocomplete","PhoneNo","FirstName","SurName","Address","zip","navn","shouldValidate","shouldDirty","Zipcode","onFocus","City","disabled","cprValid","setCprValid","cprandconsent","errorMessages","consents","CprAndConsentTexts","form","reset","AcceptedDanskespilTerms","AcceptedDanskespilSpilscanner","personalNumberSlice","primaryInput","Cleave","numericOnly","delimiter","blocks","validatePersonalNumber","personalNumberFail","prettyError","PersonalNumberConfirm","cprunknownuser","loginFail","loginIdentityWithCpr","onKeyUp","formattedCpr","PersonalNumberFail","cprandconsentfailed","Profile","usernameValid","setUsernameValid","gameprofile","watch","usernameGnerator","randomProfileName","result","i","charAt","Math","floor","characters","random","makeid","querySelectorAll","securityQuestion","validateUsername","userExists","usernameTaken","unknownUsernameError","Username","PasswordRepeat","SecurityQuestion","securityquestion","securityQuestions","defaultSelected","defaultSelectedOption","removeAttribute","depositLimit","SelectedQuestion","optionSelected","Answer","initialState","image_uploads","documentationSlice","createSlice","reducers","action","reducer","actions","CTA_SINGLE","Documentation","fileList","setFileList","shake","setShake","ctaText","setCtaText","allowedFormats","files","file","invalid","size","invalidFiles","filter","requiredValidation","uploadDocumentGuidance","currentList","indexOf","splice","sendDocumentation","StatusCode","documentationSuccess","ignoreError","File","newFiles","fileNum","allFiles","accept","join","multiple","animation","onAnimationEnd","DocumentationSuccess","documentationsent","DocumentationPendingVerify","documentationpendingverify","HelpTextLinkTarget","DocumentationPending","documentationpending","documentationPendingVerify","ForgotPassword","handleSignUpClick","setErrorState","ChangePassword","changePasswordState","resetToken","URLSearchParams","get","currentHash","hashResetToken","substr","changepassword","notEqualValidation","passwordGuide","ResetToken","getElementById","passwordFailed","changePassword","passwordChanged","PasswordFailed","passwordfailed","passwordsent","SessionFail","sessionexpired","GeneralError","generalerror","ConfirmAction","nemIdOpen","setNemIdOpen","dictionaryType","dictionaryData","mitIdDefault","hideAlert","actionType","fromEntries","dictionaryDecodeDate","isObject","JSON","isJsonString","decodeURIComponent","cannotConfirmWithNemID","mitIdErrorReturnUrl","confirmActionError","mitIdReturnUrl","ErrorPage","dictionaryPath","Logout","localStorage","clear","clearCookies","logout","emptyCurrentUser","origin","requestLogout","toggleModal","deletereciept","deleteReceiptContent","header","paragraph","icon","secondaryCta","CloseButton","Confirm","RegisterApp","isModalOpen","setModalVisibility","setAuth","currentRoute","values","route","tempRoute","progress","label","isVisible","skipAuth","closeTitle","useLocation","pathArray","fetchAuth","authResponse","requiredAuth","pidRequired","Data","IsPidValid","authRequired","IsAuthValid","authError","pushVirtualPage","category","pathError","console","setSessionStateIfProtectedRoute","isModalVisible","Provider","store","PersistGate","loading","persistor","Modal","ProgressBar","heading","current","visible","SwitchTransition","CSSTransition","classNames","timeout","Switch","exact","path","noload","detectLogin","DetectLogin","FirstTimeSecureLogin","PostLogin","passwordSent","PasswordSent","PasswordChanged","PrivateRoute","documentationPending","referer","confirmExclude","confirmAction","deleteReceipt","DeleteReciept","modelId","appBaseRoute","appRoutes","noResults","SearchResults","searchString","useParams","isNew","setIsNew","results","setResults","games","gamesStatus","game","searchStr","titleMatch","providerMatch","metadata","provider","pushGaEventOnPageRedirect","pushGaEventVirtualPageOnPageRedirect","closeLinkHandler","closeButtonText","TopSection","pageTitle","pageDescription","loadingText","noSearchResultsText","GameCard","_extends","canFavorize","isFavorite","SearchApp","stateFetchConfigDisabledOnUrls","StateFetch","getRecentGamesInterval","getBalanceInterval","getBonusInterval","getUserPulseInterval","getLivecasinoGamesInterval","getJackpotsInterval","getAllGames","some","rx","test","getAllJackpots","getAllLivecasinoGames","getCurrentBalance","getCurrentBonus","getUserPulse","getAllRecentGames","getUsersFavoriteGames","setInterval","clearInterval","getGaEventAfterPageRedirect","getGaEventVirtualPageAfterPageRedirect","StateInit","API_BASE_URL","APP_BASE_ROUTES","depositredirect","popup","AppWrapper","BaseFeature","constructor","element","super","this","registrationId","settings","registrationTTL","parseInt","registrationDictionary","registrationApi","depositId","depositTTL","depositDictionary","depositApi","withdrawId","withdrawTTL","withdrawDictionary","withdrawApi","popupId","popupTTL","popupDictionary","popupApi","searchDictionary","init","initTracking","fetchDictionary","ttl","api","isPopupContent","baseUrl","loadReactApp","ReactDOM","HashRouter","RegisterDictionary","RegisterExtraInputs","extraInputs","DepositDictionary","DepositExtraInputs","DepositApp","DepositRedirectRoute","WithdrawDictionary","WithdrawExtraInputs","WithdrawApp","PopupDictionary","PopupExtraInputs","PopupApp","SearchDictionary","dictionaryRequest","params","itemId","PopupContentModelList","FormContentModelList","dictionaryItem","Type","ExtraFormInput","IsMitIDEnabled","IsNemIDEnabled","isPayoutVerifyEnabled","IsPayoutVerifyEnabled","isPayoutVerifyEnabledMobile","IsPayoutVerifyEnabledMobile","Error","localDictionary","getCacheItem","Promise","resolve","setCacheItem","reject","query","arguments","val","append"],"sourceRoot":""}