import { useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import styled from 'styled-components'; import { ToastUtils } from '../../session/utils'; import { mnDecode } from '../../session/crypto/mnemonic'; import { recoveryPhraseModal } from '../../state/ducks/modalDialog'; import { SpacerSM } from '../basic/Text'; import { usePasswordModal } from '../../hooks/usePasswordModal'; 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, SessionButtonType } from '../basic/SessionButton'; interface SeedProps { recoveryPhrase: string; onClickCopy?: () => any; } const StyledRecoveryPhrase = styled.i``; const Seed = (props: SeedProps) => { const { recoveryPhrase, onClickCopy } = props; const dispatch = useDispatch(); const theme = useSelector(getTheme); const hexEncodedSeed = mnDecode(recoveryPhrase, 'english'); const copyRecoveryPhrase = (recoveryPhraseToCopy: string) => { window.clipboard.writeText(recoveryPhraseToCopy); ToastUtils.pushCopiedToClipBoard(); if (onClickCopy) { onClickCopy(); } dispatch(recoveryPhraseModal(null)); }; return ( <>

{window.i18n('recoveryPhraseSavePromptMain')}

{recoveryPhrase}
{ copyRecoveryPhrase(recoveryPhrase); }} />
); }; const StyledSeedModalContainer = styled.div` margin: var(--margins-md) var(--margins-sm); `; interface ModalInnerProps { onClickOk?: () => any; } const SessionSeedModalInner = (props: ModalInnerProps) => { const { onClickOk } = props; const [loadingSeed, setLoadingSeed] = useState(true); const [recoveryPhrase, setRecoveryPhrase] = useState(''); const dispatch = useDispatch(); const onClose = () => dispatch(recoveryPhraseModal(null)); usePasswordModal({ onSuccess: () => { const newRecoveryPhrase = getCurrentRecoveryPhrase(); setRecoveryPhrase(newRecoveryPhrase); setLoadingSeed(false); }, onClose, title: window.i18n('sessionRecoveryPassword'), }); if (loadingSeed) { return null; } return ( ); }; export const SessionSeedModal = SessionSeedModalInner;