import { useDispatch } from 'react-redux'; import styled from 'styled-components'; import { ToastUtils } from '../../session/utils'; import { matchesHash } from '../../util/passwordUtils'; import { updateEnterPasswordModal } from '../../state/ducks/modalDialog'; import { SpacerSM } from '../basic/Text'; import { SessionWrapperModal } from '../SessionWrapperModal'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton'; const StyledModalContainer = styled.div` margin: var(--margins-md) var(--margins-sm); `; export type EnterPasswordModalProps = { passwordHash: string; passwordValid: boolean; setPasswordValid: (value: boolean) => void; onClickOk?: () => any; onClickClose?: () => any; title?: string; }; export const EnterPasswordModal = (props: EnterPasswordModalProps) => { const { passwordHash, setPasswordValid, onClickOk, onClickClose, title } = props; const dispatch = useDispatch(); const onClose = () => { if (onClickClose) { onClickClose(); } dispatch(updateEnterPasswordModal(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', window.i18n('noGivenPassword')); return; } if (passwordHash && !isPasswordValid) { ToastUtils.pushToastError('enterPasswordErrorToast', window.i18n('invalidPassword')); return; } setPasswordValid(true); window.removeEventListener('keyup', onEnter); if (onClickOk) { void onClickOk(); } }; const onEnter = (event: any) => { if (event.key === 'Enter') { confirmPassword(); } }; return (
); };