{"version":3,"file":"PasswordlessAuthenticate.mjs","sources":["../../../../../../../../../../web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.tsx"],"sourcesContent":["import { useLingui } from '@lingui/react/macro';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport React, { useState } from 'react';\n\nimport { convertPasswordResetOptions } from '../../../../utils';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\nimport Button from '../../../components/atoms/Button';\nimport Column from '../../../components/atoms/Column';\nimport Divider from '../../../components/molecules/Divider';\nimport ErrorText from '../../../components/molecules/ErrorText';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\nimport {\n  AppScreens,\n  useConfig,\n  useErrorCallback,\n  useEventCallback,\n  useGlobalReducer,\n  useStytch,\n} from '../../GlobalContextProvider';\nimport { EmailConfirmation } from './EmailConfirmation';\nimport { OTPAuthenticate } from './OTPAuthenticate';\nimport { usePasswordlessAuthenticate } from './usePasswordlessAuthenticate';\n\ntype PasswordlessAuthenticateProps = {\n  secondaryType: 'eml' | 'otp' | undefined;\n};\n\nexport const PasswordlessAuthenticate = ({ secondaryType }: PasswordlessAuthenticateProps) => {\n  const { t } = useLingui();\n  const stytchClient = useStytch();\n  const config = useConfig();\n  const [state, dispatch] = useGlobalReducer();\n  const onEvent = useEventCallback();\n  const onError = useErrorCallback();\n\n  const [errorMessage, setErrorMessage] = useState('');\n\n  const { sendLink, sendCode } = usePasswordlessAuthenticate();\n  const passwordOptions = config.passwordOptions;\n\n  const email = state.formState.passwordState.email;\n\n  const resetPassword = () => {\n    stytchClient.passwords\n      .resetByEmailStart(convertPasswordResetOptions(email, passwordOptions))\n      .then((data) => {\n        onEvent({ type: StytchEventType.PasswordResetByEmailStart, data });\n        dispatch({ type: 'transition', screen: AppScreens.PasswordSetNew });\n      })\n      .catch((e: StytchAPIError) => {\n        onError(e);\n        setErrorMessage(getTranslatedError(e, t));\n      });\n  };\n\n  useMountEffect(() => {\n    switch (secondaryType) {\n      case 'eml':\n        sendLink().catch(() => {\n          // Swallow error to avoid unhandled promise errors, sendLink() will already show error toast\n        });\n        return;\n\n      case 'otp':\n        sendCode().catch(() => {\n          // Swallow error to avoid unhandled promise errors, sendLink() will already show error toast\n        });\n        return;\n\n      default:\n        stytchClient.passwords\n          .resetByEmailStart(convertPasswordResetOptions(email, passwordOptions))\n          .then((data) => {\n            onEvent({ type: StytchEventType.PasswordResetByEmailStart, data });\n            dispatch({ type: 'transition', screen: AppScreens.PasswordSetNew });\n          })\n          .catch((e: StytchAPIError) => {\n            onError(e);\n          });\n        return;\n    }\n  });\n\n  if (!secondaryType) {\n    return null;\n  }\n\n  return (\n    <>\n      {secondaryType === 'eml' ? <EmailConfirmation showGoBack={false} /> : <OTPAuthenticate hideBackButton />}\n\n      <Divider />\n\n      <Column gap={2}>\n        <Button onClick={resetPassword} variant=\"outline\">\n          {t({ id: 'button.createPasswordInstead', message: 'Create a password instead' })}\n        </Button>\n        {errorMessage && <ErrorText>{errorMessage}</ErrorText>}\n      </Column>\n    </>\n  );\n};\n"],"names":["PasswordlessAuthenticate","secondaryType","useLingui","stytchClient","useStytch","config","useConfig","state","dispatch","useGlobalReducer","onEvent","useEventCallback","onError","useErrorCallback","errorMessage","setErrorMessage","useState","sendLink","sendCode","usePasswordlessAuthenticate","passwordOptions","email","formState","passwordState","resetPassword","passwords","resetByEmailStart","convertPasswordResetOptions","then","data","type","StytchEventType","PasswordResetByEmailStart","screen","AppScreens","PasswordSetNew","catch","e","getTranslatedError","useMountEffect","React","EmailConfirmation","showGoBack","OTPAuthenticate","hideBackButton","Divider","Column","gap","Button","onClick","variant","ErrorText"],"mappings":"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"}