Skip to content

Commit ad93da2

Browse files
Merge pull request #23 from codescalers/main_tfchain_interface
Apply better client interface using getters
2 parents 946a56d + 64dcd80 commit ad93da2

File tree

2 files changed

+112
-49
lines changed

2 files changed

+112
-49
lines changed

packages/tfchain_client/bin/tfchain_client.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ void main() async {
1919
await client.connect();
2020
// final extrinsic = await client.clientBalances.transfer(
2121
// address: "5CJrCjZvsudNoJApTGG5PKcZfhAzAyGqgSK8bysoCV2oRBMC", amount: 10);
22-
final twinId = await client.clientTwins.create(relay: [], pk: []);
22+
final twinId = await client.twins.create(relay: [], pk: []);
2323

2424
print(twinId);
2525
// await client.kvStrore.list();

packages/tfchain_client/lib/src/client.dart

Lines changed: 111 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,73 @@ class QueryClient {
44
final String url;
55
late final Provider? provider;
66
late final polkadot.Dev api;
7-
late final QueryContracts contracts;
8-
late final balance.QueryBalances balances;
9-
late final QueryFarms farms;
10-
late final QueryNodes nodes;
11-
late final QueryPricingPolicies policies;
12-
late final QueryTwins twins;
13-
late final QueryBridge bridge;
14-
late final Dao.QueryDao dao;
15-
late final QueryTFTPrice price;
16-
17-
QueryClient(this.url) {
18-
provider = Provider.fromUri(Uri.parse(url));
19-
api = polkadot.Dev(provider!);
20-
contracts = QueryContracts(this);
21-
balances = balance.QueryBalances(this);
22-
farms = QueryFarms(this);
23-
nodes = QueryNodes(this);
24-
policies = QueryPricingPolicies(this);
25-
twins = QueryTwins(this);
26-
bridge = QueryBridge(this);
27-
price = QueryTFTPrice(this);
28-
dao = Dao.QueryDao(this);
7+
QueryTwins? _twins;
8+
QueryContracts? _contracts;
9+
balance.QueryBalances? _balances;
10+
QueryFarms? _farms;
11+
QueryNodes? _nodes;
12+
QueryPricingPolicies? _policies;
13+
QueryBridge? _bridge;
14+
QueryTFTPrice? _price;
15+
Dao.QueryDao? _dao;
16+
17+
QueryClient(this.url) {}
18+
19+
QueryTwins get twins {
20+
if (_twins == null) _twins = QueryTwins(this);
21+
return _twins!;
22+
}
23+
24+
QueryContracts get contracts {
25+
if (_twins == null) _contracts = QueryContracts(this);
26+
return _contracts!;
27+
}
28+
29+
balance.QueryBalances get balances {
30+
if (_balances == null) _balances = balance.QueryBalances(this);
31+
return _balances!;
32+
}
33+
34+
QueryFarms get farms {
35+
if (_farms == null) _farms = QueryFarms(this);
36+
return _farms!;
37+
}
38+
39+
QueryNodes get nodes {
40+
if (_nodes == null) _nodes = QueryNodes(this);
41+
return _nodes!;
42+
}
43+
44+
QueryPricingPolicies get policies {
45+
if (_policies == null) _policies = QueryPricingPolicies(this);
46+
return _policies!;
47+
}
48+
49+
QueryBridge get bridge {
50+
if (_bridge == null) _bridge = QueryBridge(this);
51+
return _bridge!;
2952
}
3053

31-
void checkInputs() {
54+
QueryTFTPrice get price {
55+
if (_price == null) _price = QueryTFTPrice(this);
56+
return _price!;
57+
}
58+
59+
Dao.QueryDao get dao {
60+
if (_dao == null) _dao = Dao.QueryDao(this);
61+
return _dao!;
62+
}
63+
64+
void _checkInputs() {
3265
if (url.isEmpty) {
3366
throw FormatException("URL should be provided");
3467
}
3568
}
3669

3770
Future<void> connect() async {
38-
checkInputs();
71+
_checkInputs();
72+
provider = Provider.fromUri(Uri.parse(url));
73+
api = polkadot.Dev(provider!);
3974
}
4075

4176
Future<void> disconnect() async {
@@ -47,35 +82,62 @@ class Client extends QueryClient {
4782
final String mnemonic;
4883
late String address;
4984
final String keypairType;
50-
late Signer.Signer signer;
5185
KeyPair? keypair;
52-
late final balance.Balances clientBalances;
53-
late final Contracts clientContracts;
54-
late final Farms clientFarms;
55-
late final Dao.Dao clientDao;
56-
late final Twins clientTwins;
57-
late final KVStore kvStrore;
58-
late final Nodes clientNodes;
86+
KVStore? _kvStore;
5987
final SUPPORTED_KEYPAIR_TYPES = ["sr25519", "ed25519"];
6088

61-
Client(String url, this.mnemonic, this.keypairType) : super(url) {
62-
if (provider == null) {
63-
provider = Provider.fromUri(Uri.parse(url));
64-
api = polkadot.Dev(provider!);
65-
}
66-
clientBalances = balance.Balances(this);
67-
clientContracts = Contracts(this);
68-
clientFarms = Farms(this);
69-
clientDao = Dao.Dao(this);
70-
clientTwins = Twins(this);
71-
clientNodes = Nodes(this);
72-
kvStrore = KVStore(this);
73-
signer = Signer.Signer();
89+
Client(String url, this.mnemonic, this.keypairType) : super(url) {}
90+
91+
@override
92+
Twins get twins {
93+
if (_twins == null) _twins = Twins(this);
94+
return _twins as Twins;
95+
}
96+
97+
@override
98+
Contracts get contracts {
99+
if (_contracts == null) _contracts = Contracts(this);
100+
return _contracts as Contracts;
101+
}
102+
103+
@override
104+
balance.Balances get balances {
105+
if (_balances == null) _balances = balance.Balances(this);
106+
return _balances as balance.Balances;
107+
}
108+
109+
@override
110+
Farms get farms {
111+
if (_farms == null) _farms = Farms(this);
112+
return _farms as Farms;
113+
}
114+
115+
@override
116+
Nodes get nodes {
117+
if (_nodes == null) _nodes = Nodes(this);
118+
return _nodes as Nodes;
119+
}
120+
121+
@override
122+
Bridge get bridge {
123+
if (_bridge == null) _bridge = Bridge(this);
124+
return _bridge as Bridge;
125+
}
126+
127+
@override
128+
Dao.Dao get dao {
129+
if (_dao == null) _dao = Dao.Dao(this);
130+
return _dao as Dao.Dao;
131+
}
132+
133+
KVStore get kvStore {
134+
if (_kvStore == null) _kvStore = KVStore(this);
135+
return _kvStore as KVStore;
74136
}
75137

76138
@override
77-
void checkInputs() {
78-
super.checkInputs();
139+
void _checkInputs() {
140+
super._checkInputs();
79141
if (mnemonic.isEmpty) {
80142
throw FormatException("Mnemonic or secret should be provided");
81143
} else if (mnemonic != "//Allice" && !validateMnemonic(mnemonic)) {
@@ -98,7 +160,8 @@ class Client extends QueryClient {
98160
@override
99161
Future<void> connect() async {
100162
await super.connect();
101-
checkInputs();
163+
_checkInputs();
164+
final Signer.Signer signer = Signer.Signer();
102165
if (keypairType == "sr25519") {
103166
keypair = await signer.fromMnemonic(mnemonic, Signer.KPType.sr25519);
104167
address = keypair!.address;

0 commit comments

Comments
 (0)