-
Notifications
You must be signed in to change notification settings - Fork 63
/
Copy pathBiDirectional.cs
86 lines (74 loc) · 3.2 KB
/
BiDirectional.cs
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using WalletConnectSharp.Core;
using WalletConnectSharp.Sign;
using WalletConnectSharp.Sign.Models;
using WalletConnectSharp.Sign.Models.Engine;
using WalletConnectSharp.Storage;
namespace WalletConnectSharp.Examples
{
public class BiDirectional : IExample
{
public string Name
{
get { return "bi-directional"; }
}
public async Task Execute(string[] args)
{
var home =
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
var testAddress = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045";
var dappFilePath = Path.Combine(home, ".wc", "store_dapp_example.json");
var dappOptions = new SignClientOptions()
{
ProjectId = "ef21cf313a63dbf63f2e9e04f3614029",
Metadata = new Metadata()
{
Description = "An example dapp to showcase WalletConnectSharpv2",
Icons = new[] { "https://walletconnect.com/meta/favicon.ico" },
Name = "WalletConnectSharpv2 Dapp Example",
Url = "https://walletconnect.com"
},
Storage = new FileSystemStorage(dappFilePath)
};
var dappConnectOptions = new ConnectOptions()
{
RequiredNamespaces = new RequiredNamespaces()
{
{
"eip155",
new ProposedNamespace()
{
Methods = new[]
{
"eth_sendTransaction", "eth_signTransaction", "eth_sign", "personal_sign",
"eth_signTypedData",
},
Chains = new[] { "eip155:1" },
Events = new[] { "chainChanged", "accountsChanged", }
}
}
}
};
var dappClient = await WalletConnectSignClient.Init(dappOptions);
var connectData = await dappClient.Connect(dappConnectOptions);
var walletFilePath = Path.Combine(home, ".wc", "store_wallet_example.json");
var walletOptions = new SignClientOptions()
{
ProjectId = "ef21cf313a63dbf63f2e9e04f3614029",
Metadata = new Metadata()
{
Description = "An example wallet to showcase WalletConnectSharpv2",
Icons = new[] { "https://walletconnect.com/meta/favicon.ico" },
Name = "WalletConnectSharpv2 Wallet Example",
Url = "https://walletconnect.com"
},
Storage = new FileSystemStorage(walletFilePath)
};
var walletClient = await WalletConnectSignClient.Init(walletOptions);
var proposal = await walletClient.Pair(connectData.Uri);
var approveData = await walletClient.Approve(proposal.ApproveProposal(testAddress));
var sessionData = await connectData.Approval;
await approveData.Acknowledged();
Console.WriteLine("Done");
}
}
}