import React, { useEffect, useState } from 'react';
import { View, Text, Button, ActivityIndicator } from 'react-native';
import { KeySource } from '@sunnyside-io/privacy-boost-react-native';
function PrivacyWallet({ sdk }: { sdk: PrivacyBoost }) {
const [loading, setLoading] = useState(true);
const [authenticated, setAuthenticated] = useState(false);
useEffect(() => {
// Try restoring session on mount
restoreSessionWithBiometrics(sdk)
.then((restored) => {
setAuthenticated(restored);
setLoading(false);
})
.catch(() => setLoading(false));
}, []);
if (loading) return <ActivityIndicator />;
if (!authenticated) {
return (
<View>
<Text>Not logged in</Text>
<Button
title="Connect Wallet"
onPress={async () => {
const result = await sdk.authenticate(
walletDelegate,
new KeySource.WalletDerived(),
undefined,
);
if (result.tag === 'Authenticated') {
await saveSessionWithBiometrics(sdk);
setAuthenticated(true);
} else if (result.tag === 'MnemonicGenerated') {
// First-time user: show the recovery phrase, then continue.
await sdk.proceedAfterMnemonic(undefined);
await saveSessionWithBiometrics(sdk);
setAuthenticated(true);
}
// CredentialRequired / RecoveryRequired handled elsewhere.
}}
/>
</View>
);
}
return (
<View>
<Text>Privacy Address: {sdk.getPrivacyAddress()}</Text>
<Button
title="Logout"
onPress={async () => {
await clearSession(sdk);
setAuthenticated(false);
}}
/>
</View>
);
}