-
Notifications
You must be signed in to change notification settings - Fork 21
/
WalletConnectExperience.tsx
58 lines (51 loc) · 1.35 KB
/
WalletConnectExperience.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import * as React from "react";
import { Text, TouchableOpacity, StyleSheet } from "react-native";
import { useWalletConnect } from "@walletconnect/react-native-dapp";
const shortenAddress = (address: string) => {
return `${address.slice(0, 6)}...${address.slice(
address.length - 4,
address.length
)}`;
};
function Button({ onPress, label }: any) {
return (
<TouchableOpacity onPress={onPress} style={styles.button}>
<Text style={styles.text}>{label}</Text>
</TouchableOpacity>
);
}
export default function WalletConnectExperience() {
const connector = useWalletConnect();
const connectWallet = React.useCallback(() => {
return connector.connect();
}, [connector]);
const killSession = React.useCallback(() => {
return connector.killSession();
}, [connector]);
return (
<>
{!connector.connected ? (
<Button onPress={connectWallet} label="Connect a wallet" />
) : (
<>
<Text>{shortenAddress(connector.accounts[0])}</Text>
<Button onPress={killSession} label="Log out" />
</>
)}
</>
);
}
const styles = StyleSheet.create({
button: {
backgroundColor: "#5A45FF",
color: "#FFFFFF",
borderRadius: 12,
paddingHorizontal: 16,
paddingVertical: 12,
},
text: {
color: "#FFFFFF",
fontSize: 16,
fontWeight: "600",
},
});