import React, { useState } from 'react';
import { View, Text, TextInput, Button, ActivityIndicator } from 'react-native';
import { SdkError } from '@sunnyside-io/privacy-boost-react-native';
function DepositScreen({ sdk, tokenAddress }: { sdk: PrivacyBoost; tokenAddress: string }) {
const [amount, setAmount] = useState('');
const [loading, setLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
const [txHash, setTxHash] = useState<string | null>(null);
const handleShield = async () => {
setLoading(true);
setError(null);
setTxHash(null);
try {
const weiAmount = sdk.parseAmount(amount, 18);
const result = await sdk.shield(tokenAddress, weiAmount);
setTxHash(result.txHash);
setAmount('');
} catch (err: any) {
if (SdkError.SignatureRejected.instanceOf(err)) return;
setError(err?.inner?.message ?? err?.message ?? 'Deposit failed');
} finally {
setLoading(false);
}
};
return (
<View style={{ padding: 16 }}>
<TextInput
value={amount}
onChangeText={setAmount}
placeholder="Amount (e.g. 1.0)"
keyboardType="decimal-pad"
editable={!loading}
/>
{error && <Text style={{ color: 'red' }}>{error}</Text>}
{txHash && <Text>Deposit TX: {txHash}</Text>}
{loading ? (
<ActivityIndicator />
) : (
<Button title="Deposit" onPress={handleShield} disabled={!amount} />
)}
</View>
);
}