import { useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import useMount from 'react-use/lib/useMount'; import styled from 'styled-components'; import { Data } from '../../data/data'; import { ToastUtils } from '../../session/utils'; import { matchesHash } from '../../util/passwordUtils'; import { mnDecode } from '../../session/crypto/mnemonic'; import { recoveryPhraseModal } from '../../state/ducks/modalDialog'; import { SpacerSM } from '../basic/Text'; import { getTheme } from '../../state/selectors/theme'; import { getThemeValue } from '../../themes/globals'; import { getCurrentRecoveryPhrase } from '../../util/storage'; import { SessionQRCode } from '../SessionQRCode'; import { SessionWrapperModal } from '../SessionWrapperModal'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton'; interface PasswordProps { setPasswordValid: (val: boolean) => any; passwordHash: string; } const Password = (props: PasswordProps) => { const { setPasswordValid, passwordHash } = props; const i18n = window.i18n; const dispatch = useDispatch(); const onClose = () => dispatch(recoveryPhraseModal(null)); const confirmPassword = () => { const passwordValue = (document.getElementById('seed-input-password') as any)?.value; const isPasswordValid = matchesHash(passwordValue as string, passwordHash); if (!passwordValue) { ToastUtils.pushToastError('enterPasswordErrorToast', i18n('noGivenPassword')); return false; } if (passwordHash && !isPasswordValid) { ToastUtils.pushToastError('enterPasswordErrorToast', i18n('invalidPassword')); return false; } setPasswordValid(true); window.removeEventListener('keyup', onEnter); return true; }; const onEnter = (event: any) => { if (event.key === 'Enter') { confirmPassword(); } }; return ( <>
{i18n('recoveryPhraseSavePromptMain')}