diff --git a/web/account/log-in-form.react.js b/web/account/log-in-form.react.js --- a/web/account/log-in-form.react.js +++ b/web/account/log-in-form.react.js @@ -12,14 +12,25 @@ import TraditionalLoginForm from './traditional-login-form.react.js'; import OrBreak from '../components/or-break.react.js'; import { setPrimaryIdentityPublicKey } from '../redux/primary-identity-public-key-reducer.js'; +import { useSelector } from '../redux/redux-utils.js'; function LoginForm(): React.Node { const { openConnectModal } = useConnectModal(); const { data: signer } = useSigner(); const dispatch = useDispatch(); + const primaryIdentityPublicKey = useSelector( + state => state.primaryIdentityPublicKey, + ); + React.useEffect(() => { (async () => { + if ( + primaryIdentityPublicKey !== null && + primaryIdentityPublicKey !== undefined + ) { + return; + } await olm.init(); const account = new olm.Account(); account.create(); @@ -29,7 +40,7 @@ payload: ed25519, }); })(); - }, [dispatch]); + }, [dispatch, primaryIdentityPublicKey]); const [ siweAuthFlowSelected, diff --git a/web/account/traditional-login-form.react.js b/web/account/traditional-login-form.react.js --- a/web/account/traditional-login-form.react.js +++ b/web/account/traditional-login-form.react.js @@ -37,6 +37,10 @@ const dispatchActionPromise = useDispatchActionPromise(); const modalContext = useModalContext(); + const primaryIdentityPublicKey = useSelector( + state => state.primaryIdentityPublicKey, + ); + const usernameInputRef = React.useRef(); React.useEffect(() => { usernameInputRef.current?.focus(); @@ -63,11 +67,16 @@ const logInAction = React.useCallback( async (extraInfo: LogInExtraInfo) => { try { + invariant( + primaryIdentityPublicKey, + 'primaryIdentityPublicKey must be set in logInAction', + ); const result = await callLogIn({ ...extraInfo, username, password, logInActionSource: logInActionSources.logInFromWebForm, + primaryIdentityPublicKey, }); modalContext.popModal(); return result; @@ -83,7 +92,7 @@ throw e; } }, - [callLogIn, modalContext, password, username], + [callLogIn, modalContext, password, primaryIdentityPublicKey, username], ); const onSubmit = React.useCallback( @@ -158,7 +167,11 @@