import { useState } from 'react' import { CreateAccountModal } from '../CreateAccountModal' import { RecoveryStep } from '../CreateAccountModalSteps' import { UnlockAccountModal } from '../UnlockAccountModal' import { Button, Card } from '../ui' import { t } from '@/lib/i18n' export function NoAccountView(): React.ReactElement { const [showImportModal, setShowImportModal] = useState(false) const [showRecoveryStep, setShowRecoveryStep] = useState(false) const [showUnlockModal, setShowUnlockModal] = useState(false) const [recoveryPhrase, setRecoveryPhrase] = useState([]) const [npub, setNpub] = useState('') const [generating, setGenerating] = useState(false) const [error, setError] = useState(null) const handleGenerate = (): void => { void generateNoAccount({ setGenerating, setError, setRecoveryPhrase, setNpub, setShowRecoveryStep }) } const handleRecoveryContinue = (): void => transitionToUnlock({ setShowRecoveryStep, setShowUnlockModal }) const handleUnlockSuccess = (): void => resetNoAccountAfterUnlock({ setShowUnlockModal, setRecoveryPhrase, setNpub }) const handleImportSuccess = (): void => { setShowImportModal(false) setShowUnlockModal(true) } return ( setShowImportModal(true)} modals={ setShowImportModal(false)} onImportSuccess={handleImportSuccess} showRecoveryStep={showRecoveryStep} recoveryPhrase={recoveryPhrase} npub={npub} onRecoveryContinue={handleRecoveryContinue} showUnlockModal={showUnlockModal} onUnlockSuccess={handleUnlockSuccess} onCloseUnlock={() => setShowUnlockModal(false)} /> } /> ) } function NoAccountActionButtons(params: { onGenerate: () => void; onImport: () => void }): React.ReactElement { return (
) } function NoAccountCard(params: { error: string | null generating: boolean onGenerate: () => void onImport: () => void modals: React.ReactElement }): React.ReactElement { return (

Créez un compte ou importez votre clé secrète pour commencer

{params.error ?

{params.error}

: null} {params.generating ?

Génération du compte...

: null} {params.modals}
) } function NoAccountModals(params: { showImportModal: boolean onImportSuccess: () => void onCloseImport: () => void showRecoveryStep: boolean recoveryPhrase: string[] npub: string onRecoveryContinue: () => void showUnlockModal: boolean onUnlockSuccess: () => void onCloseUnlock: () => void }): React.ReactElement { return ( <> {params.showImportModal ? : null} {params.showRecoveryStep ? : null} {params.showUnlockModal ? : null} ) } async function generateNoAccount(params: { setGenerating: (value: boolean) => void setError: (value: string | null) => void setRecoveryPhrase: (value: string[]) => void setNpub: (value: string) => void setShowRecoveryStep: (value: boolean) => void }): Promise { params.setGenerating(true) params.setError(null) try { const { nostrAuthService } = await import('@/lib/nostrAuth') const result = await nostrAuthService.createAccount() params.setRecoveryPhrase(result.recoveryPhrase) params.setNpub(result.npub) params.setShowRecoveryStep(true) } catch (e) { params.setError(e instanceof Error ? e.message : t('account.create.error.failed')) } finally { params.setGenerating(false) } } function transitionToUnlock(params: { setShowRecoveryStep: (value: boolean) => void; setShowUnlockModal: (value: boolean) => void }): void { params.setShowRecoveryStep(false) params.setShowUnlockModal(true) } function resetNoAccountAfterUnlock(params: { setShowUnlockModal: (value: boolean) => void setRecoveryPhrase: (value: string[]) => void setNpub: (value: string) => void }): void { params.setShowUnlockModal(false) params.setRecoveryPhrase([]) params.setNpub('') }