import { useState } from 'react'; import { invoke } from '@tauri-apps/api/core'; import { Server, Shield, Key, AlertTriangle, RefreshCw, Download, } from 'lucide-react'; import { useWalletStore } from '../store/wallet'; import { useAutoUpdater } from '../hooks/useAutoUpdater'; export default function Settings() { const { networkStatus, connectNode } = useWalletStore(); const { checking, available, downloading, error: updateError, updateInfo, checkForUpdates, installUpdate, } = useAutoUpdater(); const [rpcUrl, setRpcUrl] = useState( 'http://localhost:17110' ); const [wsUrl, setWsUrl] = useState('ws://localhost:17111'); const [connecting, setConnecting] = useState(false); const [error, setError] = useState(''); const [showMnemonic, setShowMnemonic] = useState(false); const [mnemonicPassword, setMnemonicPassword] = useState(''); const [mnemonic, setMnemonic] = useState(''); const [exportError, setExportError] = useState(''); const [exporting, setExporting] = useState(false); const handleConnect = async () => { setConnecting(true); setError(''); try { await connectNode(rpcUrl, wsUrl || undefined); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to connect'); } finally { setConnecting(false); } }; const handleExportMnemonic = async () => { setExporting(true); setExportError(''); try { const result = await invoke('export_mnemonic', { password: mnemonicPassword, }); setMnemonic(result); setShowMnemonic(true); } catch (err) { setExportError( err instanceof Error ? err.message : 'Failed to export mnemonic' ); } finally { setExporting(false); setMnemonicPassword(''); } }; return (

Settings

{/* Network Settings */}

Network

setRpcUrl(e.target.value)} className="input" placeholder="http://localhost:17110" />
setWsUrl(e.target.value)} className="input" placeholder="ws://localhost:17111" />
{networkStatus.connected ? `Connected to ${networkStatus.network}` : 'Disconnected'}
{error && (

{error}

)}
{/* Preset Networks */}

Quick Connect

{/* Security Settings */}

Security

{/* Export Mnemonic */}

Recovery Phrase

{showMnemonic ? (

{mnemonic}

) : (

Enter your password to reveal your recovery phrase.

setMnemonicPassword(e.target.value)} className="input flex-1" placeholder="Enter password" />
{exportError && (

{exportError}

)}
)}
{/* Warning */}

Keep your recovery phrase safe

Anyone with access to your recovery phrase can steal your funds. Never share it with anyone.

{/* Updates */}

Updates

{available && updateInfo ? (

Version {updateInfo.version} available

{updateInfo.body && (

{updateInfo.body}

)}
) : (

{checking ? 'Checking for updates...' : 'No updates available'}

)} {updateError && (

{updateError}

)}
{/* Version info */}
Synor Wallet v0.1.0
); }