{"version":3,"file":"ConnectWallet.mjs","sources":["../../../../../../../../../../web/src/ui/b2c/screens/Crypto/ConnectWallet.tsx"],"sourcesContent":["import { useLingui } from '@lingui/react/macro';\nimport { StytchEventType } from '@stytch/core/public';\nimport React from 'react';\n\nimport { connectWithWallet, isSolanaWallet } from '../../../../utils/crypto';\nimport Button from '../../../components/atoms/Button';\nimport Column from '../../../components/atoms/Column';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\nimport {\n  AppScreens,\n  useErrorCallback,\n  useEventCallback,\n  useGlobalReducer,\n  useStytch,\n} from '../../GlobalContextProvider';\n\nexport const ConnectWallet = () => {\n  const { t } = useLingui();\n  const onEvent = useEventCallback();\n  const onError = useErrorCallback();\n  const handleError = () => {\n    // eslint-disable-next-line lingui/no-unlocalized-strings -- This is not shown in the UI, just sent to the error callback\n    onError({ message: '[Error] Could not connect to wallet' });\n    dispatch({ type: 'transition', screen: AppScreens.CryptoError });\n  };\n  const stytchClient = useStytch();\n  const [state, dispatch] = useGlobalReducer();\n  const walletOption = state.formState.cryptoState.walletOption;\n  const walletType = isSolanaWallet(walletOption) ? 'solana' : 'ethereum';\n\n  const onConnectWallet = async () => {\n    const address = await connectWithWallet({ wallet: walletOption });\n    stytchClient.cryptoWallets\n      .authenticateStart({\n        crypto_wallet_address: address,\n        crypto_wallet_type: walletType,\n      })\n      .then((data) => {\n        onEvent({ type: StytchEventType.CryptoWalletAuthenticateStart, data });\n        dispatch({\n          type: 'update_crypto_state',\n          cryptoState: {\n            walletAddress: address,\n            walletChallenge: data.challenge,\n            walletOption: walletOption,\n          },\n        });\n\n        dispatch({ type: 'transition', screen: AppScreens.CryptoSignMessage });\n      })\n      .catch(handleError);\n  };\n\n  useMountEffect(() => {\n    onConnectWallet();\n  });\n\n  return (\n    <Column gap={6}>\n      <TextColumn\n        header={t({ id: 'crypto.connectWallet.title', message: 'Connecting to your wallet...' })}\n        body={t({\n          id: 'crypto.connectWallet.instructionPopup',\n          message: 'Complete sign in by connecting through the wallet pop up in the right corner of your screen.',\n        })}\n        helper={t({\n          id: 'crypto.troubleHelp',\n          message: 'If you are having trouble, go back to the main screen and try logging in again.',\n        })}\n      />\n      <Button variant=\"outline\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n        {t({ id: 'button.goBack', message: 'Go back' })}\n      </Button>\n    </Column>\n  );\n};\n"],"names":["ConnectWallet","useLingui","onEvent","useEventCallback","onError","useErrorCallback","handleError","message","dispatch","type","screen","AppScreens","CryptoError","stytchClient","useStytch","state","useGlobalReducer","walletOption","formState","cryptoState","walletType","isSolanaWallet","onConnectWallet","address","connectWithWallet","wallet","cryptoWallets","authenticateStart","crypto_wallet_address","crypto_wallet_type","then","data","StytchEventType","CryptoWalletAuthenticateStart","walletAddress","walletChallenge","challenge","CryptoSignMessage","catch","useMountEffect","React","Column","gap","TextColumn","header","body","helper","Button","variant","onClick","Main"],"mappings":";;;;;;;;;;MAiBaA,aAAAA,GAAgB,IAAA;AAC3B,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQC,SAAAA,EAAAA;AACd,IAAA,MAAMC,OAAAA,GAAUC,gBAAAA,EAAAA;AAChB,IAAA,MAAMC,OAAAA,GAAUC,gBAAAA,EAAAA;AAChB,IAAA,MAAMC,WAAAA,GAAc,IAAA;;QAElBF,OAAAA,CAAQ;YAAEG,OAAAA,EAAS;AAAsC,SAAA,CAAA;QACzDC,QAAAA,CAAS;YAAEC,IAAAA,EAAM,YAAA;AAAcC,YAAAA,MAAAA,EAAQC,WAAWC;AAAY,SAAA,CAAA;AAChE,IAAA,CAAA;AACA,IAAA,MAAMC,YAAAA,GAAeC,SAAAA,EAAAA;IACrB,MAAM,CAACC,KAAAA,EAAOP,QAAAA,CAAS,GAAGQ,gBAAAA,EAAAA;AAC1B,IAAA,MAAMC,eAAeF,KAAAA,CAAMG,SAAS,CAACC,WAAW,CAACF,YAAY;IAC7D,MAAMG,UAAAA,GAAaC,cAAAA,CAAeJ,YAAAA,CAAAA,GAAgB,QAAA,GAAW,UAAA;AAE7D,IAAA,MAAMK,eAAAA,GAAkB,UAAA;QACtB,MAAMC,OAAAA,GAAU,MAAMC,iBAAAA,CAAkB;YAAEC,MAAAA,EAAQR;AAAa,SAAA,CAAA;QAC/DJ,YAAAA,CAAaa,aAAa,CACvBC,iBAAiB,CAAC;YACjBC,qBAAAA,EAAuBL,OAAAA;YACvBM,kBAAAA,EAAoBT;SACtB,CAAA,CACCU,IAAI,CAAC,CAACC,IAAAA,GAAAA;YACL7B,OAAAA,CAAQ;AAAEO,gBAAAA,IAAAA,EAAMuB,gBAAgBC,6BAA6B;AAAEF,gBAAAA;AAAK,aAAA,CAAA;YACpEvB,QAAAA,CAAS;gBACPC,IAAAA,EAAM,qBAAA;gBACNU,WAAAA,EAAa;oBACXe,aAAAA,EAAeX,OAAAA;AACfY,oBAAAA,eAAAA,EAAiBJ,KAAKK,SAAS;oBAC/BnB,YAAAA,EAAcA;AAChB;AACF,aAAA,CAAA;YAEAT,QAAAA,CAAS;gBAAEC,IAAAA,EAAM,YAAA;AAAcC,gBAAAA,MAAAA,EAAQC,WAAW0B;AAAkB,aAAA,CAAA;AACtE,QAAA,CAAA,CAAA,CACCC,KAAK,CAAChC,WAAAA,CAAAA;AACX,IAAA,CAAA;IAEAiC,cAAAA,CAAe,IAAA;AACbjB,QAAAA,eAAAA,EAAAA;AACF,IAAA,CAAA,CAAA;AAEA,IAAA,qBACEkB,EAAA,CAAA,aAAA,CAACC,MAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXF,EAAA,CAAA,aAAA,CAACG,UAAAA,EAAAA;QACCC,MAAM,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACNC,IAAI,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QAIJC,MAAM,EAAA,OAAA,CAAA,CAAA,CAAA;;;;sBAKRN,EAAA,CAAA,aAAA,CAACO,MAAAA,EAAAA;QAAOC,OAAAA,EAAQ,SAAA;AAAUC,QAAAA,OAAAA,EAAS,IAAMzC,QAAAA,CAAS;gBAAEC,IAAAA,EAAM,YAAA;AAAcC,gBAAAA,MAAAA,EAAQC,WAAWuC;AAAK,aAAA;;;;;AAKtG;;;;"}