{"version":3,"file":"dist/build-client/static/js/2319.f7c62410.chunk.js","mappings":"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","sources":["Atoms/Buttons/TabButton.tsx","Molecules/ButtonGroups/TabButtonGroup.tsx","Organisms/AccountModal/AccountLogin/BankIdLoginForm.tsx","Organisms/AccountModal/AccountLogin/SwitchToRegisterView.tsx","Organisms/AccountModal/AccountRegister/AccountRegister.tsx","Shared/Hooks/usePost.tsx","Organisms/AccountModal/AccountLogin/AccountLogin.tsx","Organisms/AccountModal/AccountForgottenPassword/AccountForgottenPassword.tsx","Organisms/AccountModal/AccountNewPassword/AccountNewPassword.tsx","Organisms/AccountModal/AccountModal.tsx","Organisms/AccountModal/AccountRegister/BankIdRegisterForm.tsx","Organisms/AccountModal/AccountRegister/SwitchToLoginView.tsx","Organisms/AccountModal/BankIdIcon.tsx","Organisms/AccountModal/Containers/BankIdAuthentication/BankIdAuthentication.tsx","Pages/AccountPage/Account.ts","Models/Pages/AccountPage/CollectTypeEnum.interface.ts","Pages/AccountPage/BankId.ts"],"sourcesContent":["import { styled } from 'stitches.config';\r\nimport { ButtonBase } from './BaseButtonStyle';\r\nimport { timings, animation } from 'Theme/Settings/animation';\r\nimport { CSS } from '@stitches/react';\r\n\r\ntype PropType = {\r\n children: React.ReactNode;\r\n onClick?: () => void;\r\n active?: boolean;\r\n css?: CSS;\r\n};\r\n\r\nfunction TabButton({ onClick, children, active, css }: PropType) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nconst StyledTabButton = styled('button', {\r\n ...ButtonBase,\r\n color: '$tabButtonText',\r\n backgroundColor: '$tabButtonBackground',\r\n border: 'none',\r\n flexGrow: 1,\r\n flexBasis: '33.33%',\r\n py: 3.5,\r\n transition: `all ${timings.oneFifth} ${animation.timingFn}`,\r\n '&:hover': {\r\n backgroundColor: '$tabButtonHoverBackground',\r\n },\r\n fs: 6,\r\n '@mediaMinLarge': {\r\n fs: 8,\r\n },\r\n variants: {\r\n active: {\r\n true: {\r\n backgroundColor: '$tabButtonActiveBackground',\r\n color: '$tabButtonActiveText',\r\n pointerEvents: 'none',\r\n '&:hover': {\r\n backgroundColor: '$tabButtonActiveBackground',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport default TabButton;\r\n","import { styled } from 'stitches.config';\r\n\r\ntype Proptype = {\r\n children?: React.ReactNode;\r\n};\r\n\r\nfunction TabButtonGroup({ children }: Proptype) {\r\n return {children};\r\n}\r\n\r\nconst StyledTabButtonGroup = styled('div', {\r\n ls: '$ls05',\r\n lineHeight: '$lh175',\r\n cursor: 'pointer',\r\n overflow: 'auto',\r\n '@mediaMinLarge': {\r\n overflow: 'unset',\r\n },\r\n display: 'inline-flex',\r\n gap: '4px',\r\n w: '100%',\r\n '@mediaMaxLarge': {\r\n w: '100vw',\r\n px: 4,\r\n left: '50%',\r\n right: '50%',\r\n maxWidth: '100vw',\r\n position: 'relative',\r\n marginLeft: `-50vw`,\r\n marginRight: '-50vw',\r\n },\r\n '&::-webkit-scrollbar': {\r\n display: 'none',\r\n },\r\n});\r\n\r\nexport default TabButtonGroup;\r\n","import Button from 'Atoms/Buttons/Button';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport BankIdIcon from '../BankIdIcon';\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport BankIdModel from 'Models/Pages/AccountPage/BankIdModel.interface';\r\nimport {\r\n Authenticate,\r\n pollLoginBankId,\r\n InitiateBankIdQRCode,\r\n} from 'Pages/AccountPage/BankId';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\n\r\ntype BankIdLoginType = {\r\n inputBackground?: 'primary4' | 'primary6';\r\n setIsAuthenticating: (state: boolean) => void;\r\n setBankIdQrCode: (state: string) => void;\r\n setBankIdPollStatus: (state: string) => void;\r\n setIsOpenBankId: (state: boolean) => void;\r\n setIntervalId: (state: ReturnType) => void;\r\n};\r\n\r\nconst BankIdLoginForm = ({\r\n setIsAuthenticating,\r\n setBankIdQrCode,\r\n setBankIdPollStatus,\r\n setIsOpenBankId,\r\n setIntervalId,\r\n}: BankIdLoginType) => {\r\n const { accountLabels } = useTranslationData();\r\n const isDesktop = useMedia(mediaQueryTypes.mediaMinLarge);\r\n const { languageRoute } = useAppSettingsData();\r\n\r\n const kexBankIdNavigate = (url: string) => {\r\n window.location.href = url;\r\n };\r\n\r\n const openBankIdTypeLogin = async () => {\r\n const bankIdModel: BankIdModel = {\r\n forceLogout: true,\r\n useSameDevice: true,\r\n language: languageRoute,\r\n };\r\n\r\n setIsOpenBankId(true);\r\n setIsAuthenticating(true);\r\n\r\n var retval = await Authenticate(\r\n bankIdModel,\r\n () => {},\r\n () => {},\r\n kexBankIdNavigate\r\n );\r\n\r\n pollBankIdCollectLogin(retval?.[0]);\r\n };\r\n\r\n const startQRCodeTypeRegister = async () => {\r\n setIsAuthenticating(true);\r\n setIsOpenBankId(false);\r\n\r\n const response = await InitiateBankIdQRCode(languageRoute, true);\r\n pollBankIdCollectLogin(response?.[0]);\r\n };\r\n\r\n const pollBankIdCollectLogin = (orderRef: string) => {\r\n const pollBankIdOnce = async () => {\r\n const res = await pollLoginBankId(\r\n orderRef,\r\n languageRoute,\r\n setBankIdPollStatus,\r\n setBankIdQrCode\r\n );\r\n\r\n if (res.status !== 'pending') {\r\n clearInterval(pollingIntervalId);\r\n }\r\n };\r\n\r\n pollBankIdOnce();\r\n const pollingIntervalId = setInterval(pollBankIdOnce, 3000);\r\n setIntervalId(pollingIntervalId);\r\n };\r\n\r\n return (\r\n <>\r\n {isDesktop && (\r\n <>\r\n \r\n \r\n {accountLabels.bankIdOnMobileDevice}\r\n \r\n \r\n \r\n {accountLabels.openBankId}\r\n \r\n >\r\n )}\r\n {!isDesktop && (\r\n <>\r\n \r\n \r\n {accountLabels.openBankId}\r\n \r\n \r\n \r\n {accountLabels.bankIdOnMobileDevice}\r\n \r\n >\r\n )}\r\n >\r\n );\r\n};\r\n\r\nconst cssButton = { width: '100%', mt: 4, mb: 4 };\r\n\r\nexport default BankIdLoginForm;\r\n","import { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { styled } from 'stitches.config';\r\n\r\ntype PropTypes = {\r\n switchView: () => void;\r\n};\r\n\r\nconst SwitchToRegisterView = ({ switchView }: PropTypes) => {\r\n const { accountLabels } = useTranslationData();\r\n return (\r\n \r\n {accountLabels.haveNoAccount}\r\n \r\n {accountLabels.createAccount}\r\n \r\n \r\n );\r\n};\r\n\r\nconst fontStyleCss = {\r\n fontFamily: '$fontSecondary400',\r\n letterSpacing: '$ls0',\r\n lineHeight: '$lh125',\r\n color: '$secondary2',\r\n fs: 8,\r\n};\r\n\r\nconst TextWrapper = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n});\r\n\r\nconst StyledText = styled('span', {\r\n ...fontStyleCss,\r\n});\r\n\r\nconst StyledLink = styled('span', {\r\n ...fontStyleCss,\r\n paddingLeft: '4px',\r\n textDecoration: 'underline',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n});\r\n\r\nexport default SwitchToRegisterView;\r\n","import { InputValidation } from 'Atoms/Input/InputValidation';\r\nimport { H2 } from 'Atoms/Typography/Headings/Heading';\r\nimport Input from 'Atoms/Input/Input';\r\nimport { styled } from 'stitches.config';\r\nimport { useEffect, useState } from 'react';\r\nimport TabButton from 'Atoms/Buttons/TabButton';\r\nimport TabButtonGroup from 'Molecules/ButtonGroups/TabButtonGroup';\r\nimport BulletPoint from 'Atoms/BulletPoint/BulletPoint';\r\nimport Button from 'Atoms/Buttons/Button';\r\nimport { InfoIcon } from 'Atoms/Icons';\r\nimport LoadingCircle from 'Atoms/Loaders/LoadingCircle';\r\nimport {\r\n ModalName,\r\n ModalState,\r\n TabType,\r\n} from 'Organisms/AccountModal/AccountModal';\r\nimport {\r\n RegisterNewEmailUser,\r\n RequestStatus,\r\n SendRegistrationEmail,\r\n} from 'Pages/AccountPage/Account';\r\nimport UserCredentialsModels from 'Models/Pages/AccountPage/UserCredentialsModel.interface';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport BankIdRegisterForm from './BankIdRegisterForm';\r\nimport { accountFormValidation } from '../../../Shared/Common/AccountFormValidation';\r\nimport SwitchToLoginView from './SwitchToLoginView';\r\nimport BankIdAuthentication from '../Containers/BankIdAuthentication/BankIdAuthentication';\r\n\r\ntype PropTypes = {\r\n switchModal: (state: ModalState) => void;\r\n currentTab: TabType;\r\n setCurrentTab: (type: TabType) => void;\r\n};\r\n\r\nfunction AccountRegister({\r\n switchModal,\r\n currentTab,\r\n setCurrentTab,\r\n}: PropTypes) {\r\n const [email, setEmail] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [btnEnabled, setBtnEnabled] = useState(false);\r\n const [isAuthenticating, setIsAuthenticating] = useState(false);\r\n const [isAuthFailed, setIsAuthFailed] = useState(false);\r\n const [userAlreadyExists, setUserAlreadyExists] = useState(false);\r\n\r\n const [bankIdQrCode, setBankIdQrCode] = useState('');\r\n const [bankIdPollStatus, setBankIdPollStatus] = useState('');\r\n const [isOpenBankId, setIsOpenBankId] = useState(false);\r\n const [intervalId, setIntervalId] = useState(0);\r\n\r\n const [registerStatus, setRegisterStatus] = useState();\r\n const [emailValidationMsg, setEmailValidationMsg] = useState('');\r\n const [resendStatus, setResendStatus] = useState<\r\n RequestStatus | 'alreadyRegistered'\r\n >('');\r\n const [isAccountCreated, setIsAccountCreated] = useState(false);\r\n\r\n const { languageRoute } = useAppSettingsData();\r\n const { accountLabels, validationLabels, errorLabels } = useTranslationData();\r\n\r\n useEffect(() => {\r\n if (registerStatus === 'success') {\r\n setIsAccountCreated(true);\r\n }\r\n }, [registerStatus]);\r\n\r\n useEffect(() => {\r\n switch (bankIdPollStatus.toLocaleLowerCase()) {\r\n case 'failed':\r\n setIsAuthFailed(true);\r\n setIsAuthenticating(false);\r\n break;\r\n case 'pending':\r\n setIsAuthenticating(true);\r\n break;\r\n case 'complete':\r\n setIsAuthFailed(false);\r\n setIsAuthenticating(false);\r\n setIsAccountCreated(true);\r\n break;\r\n default:\r\n }\r\n }, [bankIdPollStatus]);\r\n\r\n const onInputsValid = () => {\r\n setBtnEnabled(true);\r\n };\r\n\r\n const onInputsInvalid = () => {\r\n setBtnEnabled(false);\r\n };\r\n\r\n const BankidRegisterForm = () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n switchModal({ name: ModalName.LOGIN })}\r\n />\r\n >\r\n );\r\n };\r\n\r\n const onSubmitHandlerEmail = async () => {\r\n if (email === '' || password === '') return;\r\n\r\n const userCredentials: UserCredentialsModels = {\r\n email: email,\r\n password: password,\r\n language: languageRoute,\r\n };\r\n\r\n await RegisterNewEmailUser(\r\n userCredentials,\r\n setRegisterStatus,\r\n setEmailValidationMsg\r\n );\r\n };\r\n\r\n const EmailRegisterForm = () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {registerStatus === 'error' && (\r\n {emailValidationMsg}\r\n )}\r\n \r\n {accountLabels.createAccount}\r\n \r\n \r\n switchModal({ name: ModalName.LOGIN })}\r\n />\r\n >\r\n );\r\n };\r\n\r\n const AccountCreated = () => {\r\n const resend = async () => {\r\n if (email === '') {\r\n console.error('No email');\r\n return;\r\n }\r\n\r\n await SendRegistrationEmail(\r\n {\r\n email: email,\r\n language: languageRoute,\r\n },\r\n setResendStatus\r\n );\r\n };\r\n\r\n if (resendStatus === 'alreadyRegistered') {\r\n return (\r\n \r\n {accountLabels.emailAlreadyConfirmed}\r\n switchModal({ name: ModalName.LOGIN })}\r\n />\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n {resendStatus === 'loading' && (\r\n \r\n )}\r\n {resendStatus !== 'loading' && (\r\n <>\r\n {accountLabels.didYouGetMail}\r\n \r\n {accountLabels.sendAgain}\r\n \r\n >\r\n )}\r\n \r\n \r\n );\r\n };\r\n\r\n const BankIdAuthAborted = () => {\r\n return (\r\n \r\n \r\n \r\n {userAlreadyExists\r\n ? errorLabels.errorBankIdExistingUser\r\n : errorLabels.bankIdAuthInterrupted}\r\n \r\n \r\n );\r\n };\r\n\r\n const createAccountOrAccountCreated = isAccountCreated\r\n ? accountLabels.accountCreated\r\n : accountLabels.createAccount;\r\n\r\n return (\r\n <>\r\n {createAccountOrAccountCreated}\r\n {isAccountCreated && AccountCreated()}\r\n {isAuthenticating && (\r\n \r\n )}\r\n {isAuthFailed && !isAuthenticating && BankIdAuthAborted()}\r\n {!isAuthenticating && !isAccountCreated && (\r\n <>\r\n \r\n {\r\n setCurrentTab('BANKID');\r\n }}\r\n >\r\n {accountLabels.bankId}\r\n \r\n {\r\n setCurrentTab('EPOSTADRESS');\r\n setIsAuthFailed(false);\r\n }}\r\n >\r\n {accountLabels.email}\r\n \r\n \r\n \r\n {currentTab === 'BANKID' && BankidRegisterForm()}\r\n {currentTab === 'EPOSTADRESS' && EmailRegisterForm()}\r\n \r\n >\r\n )}\r\n >\r\n );\r\n}\r\n\r\nexport default AccountRegister;\r\n\r\nconst cssBulletPoint = {};\r\n\r\nconst AccountCreatedContainer = styled('div', {\r\n mt: 15,\r\n});\r\n\r\nconst BulletsContainer = styled('div', {\r\n pb: 11,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: 16,\r\n fs: 6,\r\n '@mediaMinLarge': {\r\n fs: 8,\r\n },\r\n});\r\n\r\nconst fontStyleCss = {\r\n fontFamily: '$fontSecondary400',\r\n letterSpacing: '$ls0',\r\n lineHeight: '$lh125',\r\n color: '$secondary2',\r\n fs: 8,\r\n};\r\n\r\nconst StyledH2 = {\r\n mt: 4,\r\n mb: 8,\r\n '@mediaMinLarge': {\r\n mt: 10,\r\n mb: 12,\r\n },\r\n};\r\n\r\nconst StyledTabContent = styled('div', {\r\n color: '$secondary2',\r\n pt: 12,\r\n pb: 16,\r\n});\r\n\r\nconst TextWrapper = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n});\r\n\r\nconst ErrorText = styled('div', {\r\n ...fontStyleCss,\r\n fs: 7,\r\n lineHeight: '$lh133',\r\n color: '$errorColor',\r\n textAlign: 'center',\r\n mt: 10,\r\n});\r\n\r\nconst ErrorTextWrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n marginBottom: '16px',\r\n gap: '0',\r\n});\r\n\r\nconst StyledText = styled('span', {\r\n ...fontStyleCss,\r\n});\r\n\r\nconst StyledLink = styled('span', {\r\n ...fontStyleCss,\r\n paddingLeft: '4px',\r\n textDecoration: 'underline',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n});\r\n","import { useEffect, useReducer, useRef } from 'react';\r\n\r\ninterface State {\r\n data?: T;\r\n error?: Error;\r\n}\r\n\r\ntype Cache = { [url: string]: T };\r\n\r\ninterface OptionsType {\r\n method: string;\r\n headers?: HeadersInit | undefined;\r\n body: string | FormData;\r\n}\r\n\r\ntype Action =\r\n | { type: 'loading' }\r\n | { type: 'fetched'; payload: T }\r\n | { type: 'error'; payload: Error };\r\n\r\nfunction usePost(\r\n url?: string,\r\n body: any = {},\r\n triggerDirectly: boolean = true,\r\n stringifyBody: boolean = true,\r\n sendHeaders: boolean = true\r\n): State {\r\n const cache = useRef>({});\r\n\r\n const options: OptionsType = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: stringifyBody ? JSON.stringify(body) : body,\r\n };\r\n\r\n if (!sendHeaders) {\r\n delete options.headers;\r\n }\r\n\r\n // Used to prevent state update if the component is unmounted\r\n\r\n const cancelRequest = useRef(false);\r\n\r\n const initialState: State = {\r\n error: undefined,\r\n data: undefined,\r\n };\r\n\r\n // Keep state logic separated\r\n\r\n const fetchReducer = (state: State, action: Action): State => {\r\n switch (action.type) {\r\n case 'loading':\r\n return { ...initialState };\r\n case 'fetched':\r\n return { ...initialState, data: action.payload };\r\n case 'error':\r\n return { ...initialState, error: action.payload };\r\n default:\r\n return state;\r\n }\r\n };\r\n\r\n const [state, dispatch] = useReducer(fetchReducer, initialState);\r\n\r\n useEffect(() => {\r\n // Do nothing if the url is not given or if call isn't requested\r\n if (!url) return;\r\n if (!triggerDirectly) return;\r\n\r\n const fetchData = async () => {\r\n dispatch({ type: 'loading' });\r\n\r\n // If a cache exists for this url, return it\r\n if (cache.current[url]) {\r\n dispatch({\r\n type: 'fetched',\r\n payload: cache.current[url],\r\n });\r\n return;\r\n }\r\n\r\n try {\r\n const response = await fetch(url, options);\r\n\r\n if (!response.ok) {\r\n throw new Error(response.statusText);\r\n }\r\n\r\n // server needs to send json otherwise response.json() will crash\r\n const data = (await response.json()) as T;\r\n cache.current[url] = data;\r\n\r\n if (cancelRequest.current) return;\r\n\r\n dispatch({ type: 'fetched', payload: data });\r\n } catch (error) {\r\n if (cancelRequest.current) return;\r\n\r\n dispatch({\r\n type: 'error',\r\n payload: error as Error,\r\n });\r\n }\r\n };\r\n\r\n void fetchData();\r\n\r\n // Use the cleanup function for avoiding a possibly...\r\n // ...state update after the component was unmounted\r\n return () => {\r\n cancelRequest.current = true;\r\n };\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [url, triggerDirectly]);\r\n\r\n return state;\r\n}\r\n\r\nexport default usePost;\r\n","import { H2 } from 'Atoms/Typography/Headings/Heading';\r\nimport { useEffect, useState } from 'react';\r\nimport Button from 'Atoms/Buttons/Button';\r\nimport {\r\n ModalName,\r\n ModalState,\r\n TabType,\r\n} from 'Organisms/AccountModal/AccountModal';\r\nimport TabButton from 'Atoms/Buttons/TabButton';\r\nimport TabButtonGroup from 'Molecules/ButtonGroups/TabButtonGroup';\r\nimport { InputValidation } from 'Atoms/Input/InputValidation';\r\nimport Input from 'Atoms/Input/Input';\r\nimport UserCredentialsModel from 'Models/Pages/AccountPage/UserCredentialsModel.interface';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { SignIn } from 'Pages/AccountPage/Account';\r\nimport { canUseDOM, isEmpty } from 'Shared/Common/Helpers';\r\nimport BankIdLoginForm from './BankIdLoginForm';\r\nimport SwitchToRegisterView from './SwitchToRegisterView';\r\nimport { accountFormValidation } from '../../../Shared/Common/AccountFormValidation';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { styled } from 'stitches.config';\r\nimport usePost from '../../../Shared/Hooks/usePost';\r\nimport UserTokenCredentialsModels from '../../../Models/Pages/AccountPage/UserTokenCredentialsModel.interface';\r\nimport { InfoIcon } from 'Atoms/Icons';\r\nimport BankIdAuthentication from '../Containers/BankIdAuthentication/BankIdAuthentication';\r\n\r\ntype PropTypes = {\r\n switchModal: (state: ModalState) => void;\r\n initialEmail?: string;\r\n confirmEmail?: UserTokenCredentialsModels;\r\n closeModal: () => void;\r\n currentTab: TabType;\r\n setCurrentTab: (type: TabType) => void;\r\n clearTokens: () => void;\r\n};\r\n\r\nconst API_URL = '/Account/ConfirmEmail';\r\n\r\nfunction AccountLogin({\r\n switchModal,\r\n closeModal,\r\n initialEmail,\r\n confirmEmail,\r\n clearTokens,\r\n currentTab,\r\n setCurrentTab,\r\n}: PropTypes) {\r\n const { accountLabels, validationLabels, errorLabels } = useTranslationData();\r\n\r\n const [email, setEmail] = useState(initialEmail ?? '');\r\n const [password, setPassword] = useState('');\r\n\r\n const confirmationInfo = usePost(\r\n API_URL,\r\n confirmEmail,\r\n !!confirmEmail\r\n );\r\n\r\n const [isLoadingEmailLoginBtn, setIsLoadingEmailLoginBtn] =\r\n useState(false);\r\n const [emailValidationMsg, setEmailValidationMsg] = useState('');\r\n const [isAuthenticating, setIsAuthenticating] = useState(false);\r\n const [isAuthFailed, setIsAuthFailed] = useState(false);\r\n const [bankIdQrCode, setBankIdQrCode] = useState('');\r\n const [bankIdPollStatus, setBankIdPollStatus] = useState('');\r\n const [isOpenBankId, setIsOpenBankId] = useState(false);\r\n const [intervalId, setIntervalId] = useState(0);\r\n\r\n useEffect(() => {\r\n if (confirmationInfo.data || confirmationInfo.error) {\r\n clearTokens();\r\n }\r\n }, [confirmationInfo, clearTokens]);\r\n\r\n const { languageRoute } = useAppSettingsData();\r\n\r\n useEffect(() => {\r\n switch (bankIdPollStatus.toLocaleLowerCase()) {\r\n case 'failed':\r\n setIsAuthFailed(true);\r\n setIsAuthenticating(false);\r\n break;\r\n case 'pending':\r\n setIsAuthenticating(true);\r\n break;\r\n case 'complete':\r\n setIsAuthFailed(false);\r\n setIsAuthenticating(false);\r\n closeModal();\r\n break;\r\n default:\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [bankIdPollStatus]);\r\n\r\n const resetFormCredentials = () => {\r\n setEmail('');\r\n setPassword('');\r\n };\r\n\r\n const BankidLoginForm = () => {\r\n return (\r\n <>\r\n \r\n switchModal({ name: ModalName.REGISTER })}\r\n />\r\n >\r\n );\r\n };\r\n\r\n const onClickEmailLogin = async () => {\r\n if (email === '' || password === '') return;\r\n\r\n const userCredentials: UserCredentialsModel = {\r\n email: email,\r\n password: password,\r\n language: languageRoute,\r\n };\r\n\r\n const status = await SignIn(\r\n userCredentials,\r\n setEmailValidationMsg,\r\n setIsLoadingEmailLoginBtn\r\n );\r\n\r\n if (status === 200 && canUseDOM()) {\r\n closeModal();\r\n // eslint-disable-next-line no-self-assign\r\n window.location.href = window.location.href;\r\n }\r\n };\r\n\r\n const EmailLoginForm = () => {\r\n return (\r\n <>\r\n {confirmationInfo.data && (\r\n {accountLabels.emailConfirmed}\r\n )}\r\n {!!confirmationInfo.error && (\r\n \r\n {accountLabels.emailConfirmationFailed}\r\n \r\n )}\r\n\r\n \r\n e.key === 'Enter' && onClickEmailLogin()}\r\n validation={{\r\n ...accountFormValidation.email,\r\n errorMessage: validationLabels.invalidEmail,\r\n }}\r\n autoComplete=\"email\"\r\n defaultValue={confirmEmail?.email}\r\n />\r\n\r\n e.key === 'Enter' && onClickEmailLogin()}\r\n validation={{\r\n ...accountFormValidation.password,\r\n errorMessage: validationLabels.invalidPassword,\r\n }}\r\n />\r\n \r\n {\r\n switchModal({\r\n name: ModalName.FORGOTTEN,\r\n email,\r\n });\r\n }}\r\n >\r\n {accountLabels.forgotPassword}\r\n \r\n \r\n {!isEmpty(emailValidationMsg) && (\r\n {emailValidationMsg}\r\n )}\r\n \r\n {accountLabels.signIn}\r\n \r\n \r\n switchModal({ name: ModalName.REGISTER })}\r\n />\r\n >\r\n );\r\n };\r\n\r\n const BankIdAuthAborted = () => {\r\n return (\r\n \r\n \r\n \r\n {errorLabels.bankIdAuthInterrupted}\r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {accountLabels.signIn}\r\n {isAuthenticating && (\r\n \r\n )}\r\n {isAuthFailed && !isAuthenticating && BankIdAuthAborted()}\r\n {!isAuthenticating && (\r\n <>\r\n \r\n {\r\n resetFormCredentials();\r\n setCurrentTab('BANKID');\r\n }}\r\n >\r\n {accountLabels.bankId}\r\n \r\n {\r\n resetFormCredentials();\r\n setCurrentTab('EPOSTADRESS');\r\n setIsAuthFailed(false);\r\n }}\r\n >\r\n {accountLabels.email}\r\n \r\n \r\n \r\n {currentTab === 'BANKID' && BankidLoginForm()}\r\n {currentTab === 'EPOSTADRESS' && EmailLoginForm()}\r\n \r\n >\r\n )}\r\n >\r\n );\r\n}\r\n\r\nexport default AccountLogin;\r\n\r\nconst fontStyleCss = {\r\n fontFamily: '$fontSecondary400',\r\n letterSpacing: '$ls0',\r\n lineHeight: '$lh125',\r\n color: '$secondary2',\r\n fs: 8,\r\n};\r\n\r\nconst StyledH2 = {\r\n mt: 4,\r\n mb: 8,\r\n '@mediaMinLarge': {\r\n mt: 10,\r\n mb: 12,\r\n },\r\n};\r\n\r\nconst StyledTabContent = styled('div', {\r\n color: '$secondary2',\r\n pt: 12,\r\n pb: 16,\r\n});\r\n\r\nconst TextWrapper = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n});\r\n\r\nconst ErrorText = styled('div', {\r\n ...fontStyleCss,\r\n fs: 7,\r\n lineHeight: '$lh133',\r\n color: '$errorColor',\r\n textAlign: 'center',\r\n mt: 10,\r\n});\r\n\r\nconst StyledLink = styled('span', {\r\n ...fontStyleCss,\r\n paddingLeft: '4px',\r\n textDecoration: 'underline',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n});\r\n\r\nconst ErrorMessage = styled('p', {\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n flexBasis: '0%',\r\n m: 0,\r\n});\r\n\r\nconst ConfirmationText = styled('p', {\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n flexBasis: '0%',\r\n mb: 2,\r\n color: '$JE68GreenPrimary',\r\n});\r\n\r\nconst ErrorTextWrapper = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n marginBottom: '16px',\r\n gap: '0',\r\n});\r\n","import Button from 'Atoms/Buttons/Button';\r\nimport { InputValidation } from 'Atoms/Input/InputValidation';\r\nimport { H2 } from 'Atoms/Typography/Headings/Heading';\r\nimport Input from 'Atoms/Input/Input';\r\nimport { useState } from 'react';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { accountFormValidation } from '../../../Shared/Common/AccountFormValidation';\r\nimport { styled } from 'stitches.config';\r\nimport {\r\n RequestNewPassword,\r\n RequestStatus,\r\n} from '../../../Pages/AccountPage/Account';\r\nimport { useAppSettingsData } from '../../../Shared/Providers/AppSettingsProvider';\r\nimport BulletPoint from '../../../Atoms/BulletPoint/BulletPoint';\r\n\r\ntype PropTypes = {\r\n initialEmail?: string;\r\n};\r\n\r\nfunction AccountForgottenPassword({ initialEmail }: PropTypes) {\r\n const { accountLabels, validationLabels } = useTranslationData();\r\n const { languageRoute } = useAppSettingsData();\r\n const [email, setEmail] = useState(\r\n !!initialEmail ? initialEmail : ''\r\n );\r\n const [state, setState] = useState('');\r\n\r\n const requestPassword = () => {\r\n RequestNewPassword(\r\n {\r\n email,\r\n language: languageRoute,\r\n },\r\n setState\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {accountLabels.forgotPassword}\r\n {accountLabels.passwordChangeBodyText}\r\n \r\n {state === 'error' && (\r\n \r\n {/* */}\r\n \r\n {accountLabels.requestNewPasswordFailed}\r\n \r\n \r\n )}\r\n \r\n\r\n \r\n {accountLabels.requestPasswordChange}\r\n \r\n\r\n {state === 'success' && (\r\n \r\n )}\r\n \r\n >\r\n );\r\n}\r\n\r\nexport default AccountForgottenPassword;\r\n\r\nconst fontStyleCss = {\r\n fontFamily: '$fontSecondary400',\r\n fontWeight: '$fw400',\r\n letterSpacing: '$ls0',\r\n lineHeight: '$lh125',\r\n color: '$secondary2',\r\n fs: 8,\r\n};\r\n\r\nconst InfoText = styled('p', {\r\n ...fontStyleCss,\r\n mb: 8.5,\r\n});\r\n\r\nconst ValidationMessage = styled('div', {\r\n fs: 8,\r\n fontWeight: '$fs400',\r\n lineHeight: '$lh1625',\r\n backgroundColor: '$errorBackground',\r\n color: '$errorText',\r\n p: 6,\r\n my: 6,\r\n display: 'flex',\r\n});\r\n\r\nconst ErrorMessage = styled('p', {\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n flexBasis: '0%',\r\n m: 0,\r\n});\r\n","import { useEffect, useState } from 'react';\r\nimport { styled } from '@stitches/react';\r\nimport { NewPassword, RequestStatus } from '../../../Pages/AccountPage/Account';\r\nimport { InputValidation } from '../../../Atoms/Input/InputValidation';\r\nimport Input from '../../../Atoms/Input/Input';\r\nimport { useTranslationData } from '../../../Shared/Providers/TranslationProvider';\r\nimport { useAppSettingsData } from '../../../Shared/Providers/AppSettingsProvider';\r\nimport LoadingCircle from '../../../Atoms/Loaders/LoadingCircle';\r\nimport Button from '../../../Atoms/Buttons/Button';\r\nimport { H1 } from '../../../Atoms/Typography/Headings/Heading';\r\nimport { accountFormValidation } from '../../../Shared/Common/AccountFormValidation';\r\nimport UserResetPasswordModel from '../../../Models/Pages/AccountPage/UserResetPasswordModel.interface';\r\n\r\nexport type PropType = {\r\n email: string;\r\n token: string;\r\n onComplete: (email: string) => void;\r\n};\r\n\r\nfunction AccountNewPassword({ email, token, onComplete }: PropType) {\r\n const { accountLabels, validationLabels } = useTranslationData();\r\n const [password, setPassword] = useState('');\r\n const [state, setState] = useState('');\r\n const { languageRoute } = useAppSettingsData();\r\n\r\n const newPassword = () => {\r\n const userCredentials: UserResetPasswordModel = {\r\n email,\r\n newPassword: password,\r\n token,\r\n language: languageRoute,\r\n };\r\n NewPassword(userCredentials, setState);\r\n };\r\n\r\n useEffect(() => {\r\n if (state === 'success') {\r\n onComplete(email);\r\n }\r\n }, [onComplete, state, email]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {accountLabels.newPassword}\r\n \r\n\r\n {state === 'error' && (\r\n \r\n {/* */}\r\n {accountLabels.resetPasswordFailed}\r\n \r\n )}\r\n \r\n {state === 'loading' ? (\r\n {email}\r\n ) : (\r\n e.key === 'Enter' && newPassword()}\r\n newPassword={true}\r\n validation={{\r\n ...accountFormValidation.password,\r\n errorMessage: validationLabels.invalidPassword,\r\n }}\r\n />\r\n )}\r\n \r\n \r\n {state === 'loading' ? (\r\n \r\n ) : (\r\n <>{accountLabels.savePassword}>\r\n )}\r\n \r\n \r\n \r\n \r\n >\r\n );\r\n}\r\n\r\nconst ValidationMessage = styled('div', {\r\n fs: 8,\r\n fontWeight: '$fs400',\r\n lineHeight: '$lh1625',\r\n backgroundColor: '$errorBackground',\r\n color: '$errorText',\r\n p: 6,\r\n my: 6,\r\n display: 'flex',\r\n});\r\n\r\nconst ErrorMessage = styled('p', {\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n flexBasis: '0%',\r\n m: 0,\r\n});\r\n\r\nconst Text = styled('p', {\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n flexBasis: '0%',\r\n m: 0,\r\n});\r\n\r\nconst ButtonContainer = styled('div', {\r\n display: 'flex',\r\n mt: 8,\r\n});\r\n\r\nconst Container = styled('div', {\r\n height: '80vh',\r\n overflowY: 'auto',\r\n scrollbarWidth: 'none',\r\n '&::-webkit-scrollbar': {\r\n WebkitAppearance: 'none',\r\n display: 'none',\r\n },\r\n '&::scrollbar': {\r\n display: 'none',\r\n },\r\n});\r\n\r\nconst StyledLoadingCircle = {\r\n color: '$white',\r\n h: 4,\r\n mx: 'auto',\r\n my: 'auto',\r\n};\r\n\r\nconst KexLinkStyle = {\r\n fontWeight: '$fw400',\r\n ls: '$ls125',\r\n backgroundColor: '$accountLinkButtonBackgroundPrimary',\r\n color: '$textSecondary',\r\n br: 'none',\r\n width: '100%',\r\n minH: 11,\r\n mt: 7,\r\n};\r\n\r\nexport default AccountNewPassword;\r\n","import Modal from 'Organisms/Modal/Modal';\r\nimport { useCallback, useState } from 'react';\r\n\r\nimport AccountRegister from './AccountRegister/AccountRegister';\r\nimport AccountLogin from './AccountLogin/AccountLogin';\r\nimport AccountForgottenPassword from './AccountForgottenPassword/AccountForgottenPassword';\r\nimport { useAppSettingsData } from '../../Shared/Providers/AppSettingsProvider';\r\nimport AccountNewPassword from './AccountNewPassword/AccountNewPassword';\r\n\r\nexport enum ModalName {\r\n REGISTER = 'register',\r\n LOGIN = 'login',\r\n FORGOTTEN = 'forgotten',\r\n RESET = 'reset',\r\n CONFIRM = 'confirm',\r\n}\r\n\r\nexport type ModalNameWithToken = ModalName.RESET | ModalName.CONFIRM;\r\nexport type ModalNameWithoutToken =\r\n | ModalName.REGISTER\r\n | ModalName.LOGIN\r\n | ModalName.FORGOTTEN;\r\n\r\nexport type ModalState =\r\n | {\r\n name: ModalNameWithToken;\r\n email: string;\r\n token: string;\r\n }\r\n | {\r\n name: ModalNameWithoutToken;\r\n email?: string;\r\n };\r\n\r\nexport type PropType = {\r\n showModal: boolean;\r\n toggle: () => void;\r\n clearTokens: () => void;\r\n initialModalState: ModalState;\r\n};\r\n\r\nexport type TabType = 'BANKID' | 'EPOSTADRESS';\r\n\r\nfunction AccountModal({\r\n initialModalState,\r\n showModal,\r\n toggle,\r\n clearTokens,\r\n}: PropType) {\r\n const [modal, setModal] = useState(initialModalState);\r\n const { languageRoute } = useAppSettingsData();\r\n\r\n const [currentTab, setCurrentTab] = useState(\r\n initialModalState.name === ModalName.CONFIRM ? 'EPOSTADRESS' : 'BANKID'\r\n );\r\n\r\n const clearTokensAndSwitchToLogin = useCallback(\r\n (email?: string) => {\r\n setModal({\r\n name: ModalName.LOGIN,\r\n email,\r\n });\r\n setCurrentTab('EPOSTADRESS');\r\n clearTokens();\r\n },\r\n [setModal, clearTokens, setCurrentTab]\r\n );\r\n\r\n const resetModalAfterToggle = () => {\r\n toggle();\r\n setTimeout(() => {\r\n setModal(initialModalState);\r\n }, 400);\r\n };\r\n\r\n return (\r\n \r\n {modal.name === ModalName.REGISTER && (\r\n \r\n )}\r\n {modal.name === ModalName.LOGIN && (\r\n \r\n )}\r\n {modal.name === ModalName.CONFIRM && (\r\n \r\n )}\r\n {modal.name === ModalName.FORGOTTEN && (\r\n \r\n )}\r\n {modal.name === ModalName.RESET && (\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default AccountModal;\r\n","import { useState } from 'react';\r\nimport { InputValidation } from 'Atoms/Input/InputValidation';\r\nimport Input from 'Atoms/Input/Input';\r\nimport Button from 'Atoms/Buttons/Button';\r\nimport { accountFormValidation } from '../../../Shared/Common/AccountFormValidation';\r\nimport {\r\n Authenticate,\r\n InitiateBankIdQRCode,\r\n pollRegisterBankId,\r\n} from 'Pages/AccountPage/BankId';\r\nimport BankIdModel from 'Models/Pages/AccountPage/BankIdModel.interface';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport BankIdIcon from '../BankIdIcon';\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport { styled } from 'stitches.config';\r\n\r\nconst USER_EXISTS = 'exists_other_email';\r\n\r\ntype BankIdRegisterType = {\r\n inputBackground?: 'primary6' | 'primary4';\r\n setIsAuthenticating: (state: boolean) => void;\r\n setBankIdQrCode: (state: string) => void;\r\n setBankIdPollStatus: (state: string) => void;\r\n setConfirmedEmail: (state: string) => void;\r\n setIsOpenBankId: (state: boolean) => void;\r\n setIntervalId: (state: ReturnType) => void;\r\n setUserAlreadyExists: (state: boolean) => void;\r\n};\r\n\r\nconst BankIdRegisterForm = ({\r\n inputBackground,\r\n setIsAuthenticating,\r\n setBankIdQrCode,\r\n setBankIdPollStatus,\r\n setConfirmedEmail,\r\n setIsOpenBankId,\r\n setIntervalId,\r\n setUserAlreadyExists,\r\n}: BankIdRegisterType) => {\r\n const { languageRoute } = useAppSettingsData();\r\n const { accountLabels, validationLabels } = useTranslationData();\r\n const isDesktop = useMedia(mediaQueryTypes.mediaMinLarge);\r\n\r\n const [email, setEmail] = useState('');\r\n const [isEmailValid, setIsEmailValid] = useState(false);\r\n\r\n const [showValidationMsg, setShowValidationMsg] = useState(false);\r\n\r\n const kexBankIdNavigate = (url: string) => {\r\n window.location.href = url;\r\n };\r\n\r\n const openBankIdTypeRegister = async () => {\r\n if (email === '' || !isEmailValid) {\r\n setShowValidationMsg(true);\r\n return;\r\n }\r\n const bankIdModel: BankIdModel = {\r\n forceLogout: true,\r\n useSameDevice: true,\r\n language: languageRoute,\r\n };\r\n\r\n setIsOpenBankId(true);\r\n setIsAuthenticating(true);\r\n\r\n var retval = await Authenticate(\r\n bankIdModel,\r\n () => {},\r\n () => {},\r\n kexBankIdNavigate\r\n );\r\n\r\n pollBankIdCollectRegister(retval?.[0]);\r\n };\r\n\r\n const startQRCodeTypeRegister = async () => {\r\n if (email === '' || !isEmailValid) {\r\n setShowValidationMsg(true);\r\n return;\r\n }\r\n\r\n setIsAuthenticating(true);\r\n setIsOpenBankId(false);\r\n\r\n const response = await InitiateBankIdQRCode(languageRoute, true);\r\n pollBankIdCollectRegister(response?.[0]);\r\n };\r\n\r\n const pollBankIdCollectRegister = (orderRef: string) => {\r\n const pollBankIdOnce = async () => {\r\n const res = await pollRegisterBankId(\r\n orderRef,\r\n email,\r\n languageRoute,\r\n setBankIdPollStatus,\r\n () => {},\r\n setBankIdQrCode\r\n );\r\n\r\n if (res.status !== 'pending') {\r\n setUserAlreadyExists(res.message === USER_EXISTS);\r\n clearInterval(pollingIntervalId);\r\n }\r\n };\r\n\r\n pollBankIdOnce();\r\n const pollingIntervalId = setInterval(pollBankIdOnce, 3000);\r\n setIntervalId(pollingIntervalId);\r\n };\r\n\r\n const setEmails = (mail: string) => {\r\n setConfirmedEmail(mail);\r\n setEmail(mail);\r\n };\r\n\r\n const onInputsInvalid = () => {\r\n setIsEmailValid(false);\r\n };\r\n\r\n const onInputsValid = () => {\r\n setIsEmailValid(true);\r\n setShowValidationMsg(false);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {showValidationMsg && (\r\n {validationLabels.fillInEmail}\r\n )}\r\n \r\n {isDesktop && (\r\n <>\r\n \r\n \r\n {accountLabels.bankIdOnMobileDevice}\r\n \r\n \r\n \r\n {accountLabels.openBankId}\r\n \r\n >\r\n )}\r\n {!isDesktop && (\r\n <>\r\n \r\n \r\n {accountLabels.openBankId}\r\n \r\n \r\n \r\n {accountLabels.bankIdOnMobileDevice}\r\n \r\n >\r\n )}\r\n \r\n >\r\n );\r\n};\r\n\r\nconst cssButton = { width: '100%', mt: 4, mb: 4 };\r\n\r\nconst fontStyleCss = {\r\n fontFamily: '$fontSecondary400',\r\n fontWeight: '$fw400',\r\n letterSpacing: '$ls0',\r\n lineHeight: '$lh125',\r\n color: '$secondary2',\r\n fs: 8,\r\n};\r\n\r\nconst ErrorText = styled('div', {\r\n ...fontStyleCss,\r\n fs: 7,\r\n lineHeight: '$lh133',\r\n color: '$errorColor',\r\n textAlign: 'center',\r\n mt: 10,\r\n});\r\n\r\nconst Padding = styled('div', {\r\n paddingTop: '8px',\r\n});\r\n\r\nexport default BankIdRegisterForm;\r\n","import { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { styled } from 'stitches.config';\r\n\r\ntype PropTypes = {\r\n switchView: () => void;\r\n};\r\n\r\nconst AlreadyHasAccount = ({ switchView }: PropTypes) => {\r\n const { accountLabels } = useTranslationData();\r\n return (\r\n \r\n {accountLabels.alreadyHaveAccount}\r\n {accountLabels.signIn}\r\n \r\n );\r\n};\r\n\r\nconst fontStyleCss = {\r\n fontFamily: '$fontSecondary400',\r\n fontWeight: '$fw400',\r\n letterSpacing: '$ls0',\r\n lineHeight: '$lh125',\r\n color: '$secondary2',\r\n fs: 8,\r\n};\r\n\r\nconst TextWrapper = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n mt: 6,\r\n});\r\n\r\nconst StyledText = styled('span', {\r\n ...fontStyleCss,\r\n});\r\n\r\nconst StyledLink = styled('span', {\r\n ...fontStyleCss,\r\n paddingLeft: '4px',\r\n textDecoration: 'underline',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n});\r\n\r\nexport default AlreadyHasAccount;\r\n","import { BankidIcon } from 'Atoms/Icons';\r\n\r\nconst BankIdIcon = () => {\r\n return ;\r\n};\r\n\r\nconst cssBankidIcon = { position: 'absolute', left: '24px', top: '12px' };\r\n\r\nexport default BankIdIcon;\r\n","import LoadingCircle from 'Atoms/Loaders/LoadingCircle';\r\nimport QRCode from 'react-qr-code';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { styled } from 'stitches.config';\r\n\r\ntype PropTypes = {\r\n setIsAuthenticating: (state: boolean) => void;\r\n setIsAuthFailed: (state: boolean) => void;\r\n isOpenBankId: boolean;\r\n bankIdQrCode: string;\r\n isAuthenticating: boolean;\r\n intervalId: number;\r\n setIntervalId: (state: number) => void;\r\n};\r\n\r\nconst BankIdAuthentication = ({\r\n setIsAuthenticating,\r\n setIsAuthFailed,\r\n isOpenBankId,\r\n bankIdQrCode,\r\n isAuthenticating,\r\n intervalId,\r\n setIntervalId,\r\n}: PropTypes) => {\r\n const { accountLabels } = useTranslationData();\r\n\r\n const CancelSignIn = () => {\r\n const stopPollingInterval = () => {\r\n if (intervalId) {\r\n clearInterval(intervalId);\r\n setIntervalId(0);\r\n }\r\n };\r\n\r\n return (\r\n \r\n {\r\n setIsAuthenticating(false);\r\n setIsAuthFailed(false);\r\n stopPollingInterval();\r\n }}\r\n >\r\n {accountLabels.cancelSignIn}\r\n \r\n \r\n );\r\n };\r\n return (\r\n <>\r\n {!isOpenBankId && (\r\n <>\r\n \r\n 1. {accountLabels.bankIdLoginStep1}\r\n 2. {accountLabels.bankIdLoginStep2}\r\n 3. {accountLabels.bankIdLoginStep3}\r\n \r\n {bankIdQrCode && (\r\n <>\r\n \r\n \r\n \r\n \r\n >\r\n )}\r\n >\r\n )}\r\n {isOpenBankId && (\r\n <>\r\n \r\n \r\n \r\n \r\n {accountLabels.searchingForBankId}\r\n \r\n \r\n >\r\n )}\r\n >\r\n );\r\n};\r\n\r\nexport default BankIdAuthentication;\r\n\r\nconst fontStyleCss = {\r\n fontFamily: '$fontSecondary400',\r\n letterSpacing: '$ls0',\r\n lineHeight: '$lh125',\r\n color: '$secondary2',\r\n fs: 8,\r\n};\r\n\r\nconst TextWrapper = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n});\r\n\r\nconst StyledLink = styled('span', {\r\n ...fontStyleCss,\r\n paddingLeft: '4px',\r\n textDecoration: 'underline',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n});\r\n\r\nconst StyledLoadingIcon = styled('div', {\r\n marginTop: '25vh',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n w: 16,\r\n pb: 8,\r\n});\r\n\r\nconst WrapperStyledText = styled('div', {\r\n ...fontStyleCss,\r\n textAlign: 'center',\r\n marginBottom: '32px',\r\n});\r\n\r\nconst QRCodeContainer = styled('div', {\r\n backgroundColor: 'white',\r\n padding: '16px',\r\n maxWidth: '224px',\r\n marginTop: '40px',\r\n marginBottom: '48px',\r\n mx: 'auto',\r\n});\r\n\r\nconst StyledListItem = styled('li', {\r\n textAlign: 'center',\r\n color: '$secondary2',\r\n});\r\n","import UserCredentialsModel from 'Models/Pages/AccountPage/UserCredentialsModel.interface';\r\nimport UserEmailModel from 'Models/Pages/AccountPage/UserEmailModel.interface';\r\nimport UpdateUserPersonalInformationRequest from 'Models/User/UpdateUserPersonalInformationRequest.interface';\r\nimport UpdateUserProfileRequest from 'Models/User/UpdateUserProfileRequest.interface';\r\nimport { updateHeader } from 'Shared/Hooks/useQueryHeader';\r\nimport { updateUserState } from 'Shared/Hooks/useQueryUserState';\r\nimport UserResetPasswordModel from '../../Models/Pages/AccountPage/UserResetPasswordModel.interface';\r\n\r\nexport async function SignIn(\r\n userCredentials: UserCredentialsModel,\r\n setValidationMessage: (value: string) => void,\r\n setIsLoading: (value: boolean) => void\r\n) {\r\n setIsLoading(true);\r\n setValidationMessage('');\r\n\r\n let statusCode;\r\n\r\n await fetch(`/Account/SignIn`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(userCredentials),\r\n })\r\n .then((res) => {\r\n if (!res.ok) {\r\n throw Error('Could not fetch data from resource');\r\n }\r\n return res.json();\r\n })\r\n .then((data) => {\r\n statusCode = data.statusCode;\r\n if (data.statusCode === 200) {\r\n updateHeader(userCredentials.language);\r\n updateUserState();\r\n } else {\r\n setValidationMessage(data.message);\r\n }\r\n })\r\n .catch((err) => {\r\n setValidationMessage(err.message);\r\n });\r\n\r\n setIsLoading(false);\r\n return statusCode;\r\n}\r\n\r\nexport type RequestStatus = 'error' | 'loading' | 'success' | '';\r\n\r\nexport async function RequestNewPassword(\r\n userCredentials: UserEmailModel,\r\n onState: (type: RequestStatus) => void\r\n) {\r\n onState('loading');\r\n\r\n const res = await fetch('Account/RequestNewPassword', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(userCredentials),\r\n });\r\n\r\n if (res.ok) {\r\n updateHeader(userCredentials.language);\r\n onState('success');\r\n } else {\r\n console.error(res);\r\n onState('error');\r\n }\r\n}\r\n\r\nexport async function NewPassword(\r\n userCredentials: UserResetPasswordModel,\r\n onState: (state: RequestStatus) => void\r\n) {\r\n onState('loading');\r\n const res = await fetch('Account/NewPassword', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(userCredentials),\r\n });\r\n\r\n try {\r\n const data = await res.json();\r\n if (data.statusCode === 200) {\r\n updateHeader(userCredentials.language);\r\n updateUserState();\r\n onState('success');\r\n } else {\r\n onState('error');\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n onState('error');\r\n }\r\n}\r\n\r\nexport async function SignOut(languageRoute: string) {\r\n const res = await fetch(`/Account/SignOut?language=${languageRoute}`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n const data = await res.json();\r\n\r\n if (data.statusCode === 200) {\r\n updateUserState();\r\n window.location.href = data.redirectUrl;\r\n }\r\n}\r\n\r\nexport async function SendRegistrationEmail(\r\n model: UserEmailModel,\r\n onState: (state: RequestStatus | 'alreadyRegistered') => void\r\n) {\r\n onState('loading');\r\n\r\n await fetch('/Account/SendRegistrationMail', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(model),\r\n })\r\n .then((res) => {\r\n if (!res.ok) {\r\n throw Error('Could not fetch data from resource');\r\n }\r\n return res.json();\r\n })\r\n .then((data) => {\r\n if (data.statusCode === 200) {\r\n onState('success');\r\n } else if (data.statusCode === 422) {\r\n onState('alreadyRegistered');\r\n } else {\r\n onState('error');\r\n console.error(data);\r\n }\r\n })\r\n .catch((err) => {\r\n onState('error');\r\n console.error(err.message);\r\n });\r\n}\r\n\r\nexport async function RegisterNewEmailUser(\r\n userCredentials: UserCredentialsModel,\r\n onState: (state: RequestStatus) => void,\r\n setValidationMessage: (value: string) => void\r\n) {\r\n onState('loading');\r\n setValidationMessage('');\r\n\r\n await fetch('/Account/register', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(userCredentials),\r\n })\r\n .then((res) => {\r\n if (!res.ok) {\r\n throw Error('Could not fetch data from resource');\r\n }\r\n return res.json();\r\n })\r\n .then((data) => {\r\n if (data.statusCode === 200) {\r\n onState('success');\r\n } else {\r\n onState('error');\r\n setValidationMessage(data.message);\r\n }\r\n })\r\n .catch((err) => {\r\n onState('error');\r\n setValidationMessage(err.message);\r\n });\r\n}\r\n\r\nexport async function UpdatePersonalInformation(\r\n request: UpdateUserPersonalInformationRequest,\r\n languageRoute: string,\r\n onState: (state: RequestStatus) => void,\r\n setValidationMessage: (value: string) => void\r\n) {\r\n onState('loading');\r\n setValidationMessage('');\r\n\r\n const queryParams = {\r\n language: languageRoute,\r\n };\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n await fetch(`/Account/UpdatePersonalInformation?${queryString}`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(request),\r\n })\r\n .then((res) => {\r\n if (!res.ok) {\r\n throw Error('Could not fetch data from resource');\r\n }\r\n return res.json();\r\n })\r\n .then((data) => {\r\n if (data.statusCode === 200) {\r\n onState('success');\r\n } else {\r\n onState('error');\r\n setValidationMessage(data.message);\r\n }\r\n })\r\n .catch((err) => {\r\n onState('error');\r\n setValidationMessage(err.message);\r\n });\r\n}\r\n\r\nexport async function UpdateProfile(\r\n request: UpdateUserProfileRequest,\r\n languageRoute: string,\r\n onState: (state: RequestStatus) => void,\r\n setValidationMessage: (value: string) => void\r\n) {\r\n onState('loading');\r\n setValidationMessage('');\r\n\r\n const queryParams = {\r\n language: languageRoute,\r\n };\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n await fetch(`/Account/UpdateProfile?${queryString}`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(request),\r\n })\r\n .then((res) => {\r\n if (!res.ok) {\r\n throw Error('Could not fetch data from resource');\r\n }\r\n return res.json();\r\n })\r\n .then((data) => {\r\n if (data.statusCode === 200) {\r\n onState('success');\r\n } else {\r\n onState('error');\r\n setValidationMessage(data.message);\r\n }\r\n })\r\n .catch((err) => {\r\n onState('error');\r\n setValidationMessage(err.message);\r\n });\r\n}\r\n","\r\nenum CollectTypeEnum {\r\n Login = 0,\r\n Register = 1,\r\n Identify = 2,\r\n}\r\n\r\nexport default CollectTypeEnum;\r\n","import BankIdModel from 'Models/Pages/AccountPage/BankIdModel.interface';\r\nimport BankIdCollectModel from 'Models/Pages/AccountPage/BankIdCollectModel.interface';\r\nimport { updateHeader } from 'Shared/Hooks/useQueryHeader';\r\nimport { updateUserState } from 'Shared/Hooks/useQueryUserState';\r\nimport { canUseDOM } from 'Shared/Common/Helpers';\r\nimport CollectTypeEnum from 'Models/Pages/AccountPage/CollectTypeEnum.interface';\r\n\r\nexport async function Authenticate(\r\n bankIdModel: BankIdModel,\r\n setError: (value: boolean) => void,\r\n setValidationMessage: (value: string) => void,\r\n kexBankIdNavigate: (value: string) => void\r\n) {\r\n setError(false);\r\n setValidationMessage('');\r\n\r\n const res = await fetch(`/bankid/AuthenticateAsync`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(bankIdModel),\r\n });\r\n try {\r\n const data = await res.json();\r\n if (data.statusCode === 200) {\r\n updateHeader(bankIdModel.language);\r\n updateUserState();\r\n kexBankIdNavigate(data.bankIdUrl);\r\n return [data.orderRef, data.qrStartToken, data.qrStartSecret];\r\n } else {\r\n setError(true);\r\n setValidationMessage(data.message);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n}\r\n\r\nexport async function InitiateBankIdQRCode(\r\n languageRoute: string,\r\n forceLogout: boolean\r\n) {\r\n const res = await fetch(`/bankid/AuthenticateAsync`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({\r\n forceLogout: forceLogout,\r\n language: languageRoute,\r\n personalNumber: '',\r\n useSameDevice: false,\r\n }),\r\n });\r\n\r\n try {\r\n const data = await res.json();\r\n if (data.statusCode === 200) {\r\n updateHeader(languageRoute);\r\n updateUserState();\r\n return [data.orderRef, data.qrStartToken, data.qrStartSecret];\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n}\r\n\r\nexport async function Collect(bankIdCollectModel: BankIdCollectModel) {\r\n if (bankIdCollectModel.orderRef) {\r\n const res = await fetch(`/bankid/CollectAsync`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(bankIdCollectModel),\r\n });\r\n try {\r\n const data = await res.json();\r\n return data;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport async function pollRegisterBankId(\r\n orderRef: string,\r\n email: string,\r\n languageRoute: string,\r\n setBankIdPollStatus: (text: string) => void,\r\n setBankIdPollHint: (text: string) => void,\r\n setBankIdQrCode: (text: string) => void\r\n) {\r\n return pollBankId(\r\n orderRef,\r\n CollectTypeEnum.Register,\r\n email,\r\n languageRoute,\r\n setBankIdPollStatus,\r\n setBankIdPollHint,\r\n setBankIdQrCode\r\n );\r\n}\r\n\r\nexport async function pollLoginBankId(\r\n orderRef: string,\r\n languageRoute: string,\r\n setBankIdPollStatus: (text: string) => void,\r\n setBankIdQrCode: (text: string) => void\r\n) {\r\n return pollBankId(\r\n orderRef,\r\n CollectTypeEnum.Login,\r\n '',\r\n languageRoute,\r\n setBankIdPollStatus,\r\n () => {},\r\n setBankIdQrCode\r\n );\r\n}\r\n\r\nexport async function pollIdentifyBankId(\r\n orderRef: string,\r\n languageRoute: string,\r\n setBankIdPollStatus: (text: string) => void,\r\n setBankIdQrCode: (text: string) => void\r\n) {\r\n return pollBankId(\r\n orderRef,\r\n CollectTypeEnum.Identify,\r\n '',\r\n languageRoute,\r\n setBankIdPollStatus,\r\n () => {},\r\n setBankIdQrCode\r\n );\r\n}\r\n\r\nexport async function pollBankId(\r\n orderRef: string,\r\n pollType: CollectTypeEnum,\r\n email: string,\r\n languageRoute: string,\r\n setBankIdPollStatus: (text: string) => void,\r\n setBankIdPollHint: (text: string) => void,\r\n setBankIdQrCode: (text: string) => void\r\n) {\r\n const collectModel: BankIdCollectModel = {\r\n collectType: pollType,\r\n email: email,\r\n orderRef: orderRef,\r\n language: languageRoute,\r\n };\r\n\r\n var data = await Collect(collectModel);\r\n if (data) {\r\n setBankIdPollStatus(data.status);\r\n setBankIdPollHint(data.hintCode);\r\n setBankIdQrCode(data.qrCodeString);\r\n\r\n if (data.status !== 'pending') {\r\n setBankIdQrCode('');\r\n }\r\n\r\n if (data.status === 'complete') {\r\n updateUserState();\r\n updateHeader(languageRoute);\r\n // Purpose to get updated state so we can populate existing information - edge case checkout page stores delivery address etc. on currentPage\r\n canUseDOM() && window.location.reload();\r\n }\r\n\r\n return {\r\n status: data.status as string,\r\n hintCode: data.hintCode as string,\r\n qrCode: data.qrCodeString as string,\r\n message: data.message as string,\r\n };\r\n } else {\r\n return {\r\n status: 'error',\r\n hintCode: 'failed to collect',\r\n qrCode: '',\r\n };\r\n }\r\n}\r\n"],"names":["StyledTabButton","styled","ButtonBase","color","backgroundColor","border","flexGrow","flexBasis","py","transition","timings","animation","fs","variants","active","true","pointerEvents","onClick","children","css","StyledTabButtonGroup","ls","lineHeight","cursor","overflow","display","gap","w","px","left","right","maxWidth","position","marginLeft","marginRight","cssButton","width","mt","mb","setIsAuthenticating","setBankIdQrCode","setBankIdPollStatus","setIsOpenBankId","setIntervalId","accountLabels","useTranslationData","isDesktop","useMedia","mediaQueryTypes","languageRoute","useAppSettingsData","kexBankIdNavigate","url","window","location","href","openBankIdTypeLogin","bankIdModel","forceLogout","useSameDevice","language","Authenticate","retval","pollBankIdCollectLogin","startQRCodeTypeRegister","InitiateBankIdQRCode","response","orderRef","pollBankIdOnce","pollLoginBankId","status","clearInterval","pollingIntervalId","setInterval","type","bankIdOnMobileDevice","openBankId","fontStyleCss","fontFamily","letterSpacing","TextWrapper","justifyContent","StyledText","StyledLink","paddingLeft","textDecoration","switchView","haveNoAccount","createAccount","switchModal","currentTab","setCurrentTab","useState","email","setEmail","password","setPassword","btnEnabled","setBtnEnabled","isAuthenticating","isAuthFailed","setIsAuthFailed","userAlreadyExists","setUserAlreadyExists","bankIdQrCode","bankIdPollStatus","isOpenBankId","intervalId","registerStatus","setRegisterStatus","emailValidationMsg","setEmailValidationMsg","resendStatus","setResendStatus","isAccountCreated","setIsAccountCreated","validationLabels","errorLabels","useEffect","toLocaleLowerCase","onInputsValid","onInputsInvalid","onSubmitHandlerEmail","userCredentials","RegisterNewEmailUser","createAccountOrAccountCreated","accountCreated","H2","StyledH2","resend","console","error","SendRegistrationEmail","AccountCreatedContainer","emailAlreadyConfirmed","SwitchToLoginView","name","ModalName","LOGIN","BulletPoint","my","flexShrink","text","confirmYourAccount","replace","LoadingCircle","isLoading","didYouGetMail","sendAgain","AccountCreated","BankIdAuthentication","ErrorText","textAlign","ErrorTextWrapper","space","size","errorBankIdExistingUser","bankIdAuthInterrupted","TabButtonGroup","TabButton","bankId","StyledTabContent","BulletsContainer","cssBulletPoint","accountBulletFirst","accountBulletSecond","accountBulletThird","BankIdRegisterForm","setConfirmedEmail","InputValidation","Input","title","placeholder","onChange","validation","accountFormValidation","errorMessage","invalidEmail","invalidPassword","Button","fullWidth","disabled","pb","flexDirection","pt","marginBottom","body","triggerDirectly","stringifyBody","sendHeaders","cache","useRef","options","method","headers","JSON","stringify","cancelRequest","initialState","undefined","data","fetchReducer","state","action","payload","useReducer","dispatch","fetchData","current","fetch","ok","Error","statusText","json","closeModal","initialEmail","confirmEmail","clearTokens","confirmationInfo","usePost","isLoadingEmailLoginBtn","setIsLoadingEmailLoginBtn","resetFormCredentials","onClickEmailLogin","SignIn","canUseDOM","signIn","BankIdLoginForm","SwitchToRegisterView","REGISTER","ConfirmationText","emailConfirmed","ErrorMessage","emailConfirmationFailed","onKeyDown","e","key","autoComplete","defaultValue","FORGOTTEN","forgotPassword","isEmpty","m","setState","InfoText","passwordChangeBodyText","ValidationMessage","requestNewPasswordFailed","RequestNewPassword","requestPasswordChange","fontWeight","p","Text","ButtonContainer","Container","height","overflowY","scrollbarWidth","WebkitAppearance","StyledLoadingCircle","h","mx","KexLinkStyle","br","minH","token","onComplete","newPassword","NewPassword","H1","resetPasswordFailed","savePassword","initialModalState","showModal","toggle","modal","setModal","CONFIRM","clearTokensAndSwitchToLogin","useCallback","Modal","setTimeout","overlay","RESET","Padding","paddingTop","inputBackground","isEmailValid","setIsEmailValid","showValidationMsg","setShowValidationMsg","openBankIdTypeRegister","pollBankIdCollectRegister","pollRegisterBankId","res","message","mail","fillInEmail","alreadyHaveAccount","cssBankidIcon","top","fillColor","CancelSignIn","cancelSignIn","StyledListItem","bankIdLoginStep1","bankIdLoginStep2","bankIdLoginStep3","QRCodeContainer","value","StyledLoadingIcon","WrapperStyledText","searchingForBankId","marginTop","padding","setValidationMessage","setIsLoading","then","statusCode","updateHeader","updateUserState","catch","err","onState","SignOut","redirectUrl","model","UpdatePersonalInformation","request","queryString","URLSearchParams","toString","UpdateProfile","CollectTypeEnum","setError","bankIdUrl","qrStartToken","qrStartSecret","personalNumber","Collect","bankIdCollectModel","setBankIdPollHint","pollBankId","pollIdentifyBankId","pollType","collectModel","collectType","hintCode","qrCodeString","reload","qrCode"],"sourceRoot":""}
{accountLabels.emailAlreadyConfirmed}