Skip to content

Commit 64dcd80

Browse files
Merge branch 'main_signer_workflows_tfchain' into main_tfchain_interface
2 parents 4f0f1cc + 946a56d commit 64dcd80

File tree

10 files changed

+148
-71
lines changed

10 files changed

+148
-71
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class IPConfig {
2+
final String ip;
3+
final String gw;
4+
5+
IPConfig({
6+
required this.ip,
7+
required this.gw,
8+
});
9+
}
10+
11+
class PublicConfig {
12+
final IPConfig ip4;
13+
final IPConfig? ip6;
14+
final String? domain;
15+
16+
PublicConfig({
17+
required this.ip4,
18+
this.ip6,
19+
this.domain,
20+
});
21+
}
22+
23+
class NodePublicConfigOptions {
24+
final int farmId;
25+
final int nodeId;
26+
final PublicConfig publicConfig;
27+
28+
NodePublicConfigOptions({
29+
required this.farmId,
30+
required this.nodeId,
31+
required this.publicConfig,
32+
});
33+
}

packages/tfchain_client/lib/src/balances.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Balances extends QueryBalances {
2121

2222
final Client client;
2323

24-
Future<RuntimeCall> transfer(
24+
Future<AccountInfo?> transfer(
2525
{required String address, required int amount}) async {
2626
if (amount.isNaN || amount <= 0) {
2727
throw Exception("Amount must be a positive numeric value");
@@ -32,7 +32,8 @@ class Balances extends QueryBalances {
3232

3333
final extrinsic = client.api.tx.balances
3434
.transfer(dest: multiAddress, value: BigInt.from(amount));
35-
return extrinsic;
35+
36+
return await this.get(address: client.address);
3637
}
3738

3839
Future<AccountInfo?> getMyBalance() async {

packages/tfchain_client/lib/src/contracts.dart

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,10 @@ class QueryContracts {
8383
}
8484

8585
class Contracts extends QueryContracts {
86-
Contracts(Client client) : super(client);
86+
Contracts(Client this.client) : super(client);
87+
final Client client;
8788

88-
Future<RuntimeCall> createNode(
89+
Future<BigInt?> createNode(
8990
{required int nodeId,
9091
required List<int> deploymentHash,
9192
required List<int> deploymentData,
@@ -95,49 +96,61 @@ class Contracts extends QueryContracts {
9596
deploymentHash: deploymentHash,
9697
deploymentData: deploymentData,
9798
publicIps: publicIps);
99+
await client.apply(extrinsic);
98100

99-
return extrinsic;
101+
return await getContractIdByNodeIdAndHash(
102+
hash: deploymentHash, nodeId: nodeId);
100103
}
101104

102-
Future<RuntimeCall> updateNode(
105+
Future<Contract?> updateNode(
103106
{required int contractId,
104107
required List<int> deploymentHash,
105108
required List<int> deploymentData}) async {
106109
final extrinsic = client.api.tx.smartContractModule.updateNodeContract(
107110
contractId: contractId,
108111
deploymentHash: deploymentHash,
109112
deploymentData: deploymentData);
110-
return extrinsic;
113+
await client.apply(extrinsic);
114+
115+
return await get(contractId: BigInt.from(contractId));
111116
}
112117

113-
Future<RuntimeCall> createName({required String name}) async {
118+
Future<BigInt?> createName({required String name}) async {
114119
final extrinsic = client.api.tx.smartContractModule
115120
.createNameContract(name: name.codeUnits);
116-
return extrinsic;
121+
await client.apply(extrinsic);
122+
123+
return await getContractIdByName(name: name);
117124
}
118125

119-
Future<RuntimeCall> createRent(
126+
Future<BigInt?> createRent(
120127
{required int nodeId, required int solutionProviderId}) async {
121128
final extrinsic = client.api.tx.smartContractModule.createRentContract(
122129
nodeId: nodeId, solutionProviderId: solutionProviderId);
123-
return extrinsic;
130+
await client.apply(extrinsic);
131+
132+
return await getContractIdByActiveRentForNode(nodeId: nodeId);
124133
}
125134

126-
Future<RuntimeCall> cancel({required BigInt contractId}) async {
135+
Future<Contract?> cancel({required BigInt contractId}) async {
127136
final contract = await get(contractId: contractId);
128137
if (contract == null) {
129138
throw Exception("Contract not found");
130139
}
131140

132141
final extrinsic = client.api.tx.smartContractModule
133142
.cancelContract(contractId: contractId);
134-
return extrinsic;
143+
await client.apply(extrinsic);
144+
// IF not found it means its cancelled successfully
145+
return await get(contractId: contractId);
135146
}
136147

137-
Future<RuntimeCall> setDedicatedNodeExtraFee(
148+
Future<BigInt?> setDedicatedNodeExtraFee(
138149
{required int nodeId, required int extraFee}) async {
139150
final extrinsic = client.api.tx.smartContractModule
140151
.setDedicatedNodeExtraFee(nodeId: nodeId, extraFee: extraFee);
141-
return extrinsic;
152+
await client.apply(extrinsic);
153+
154+
return await getDedicatedNodeExtraFee(nodeId: nodeId);
142155
}
143156
}

packages/tfchain_client/lib/src/dao.dart

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,18 @@ class QueryDao {
126126
}
127127

128128
class Dao extends QueryDao {
129-
Dao(Client client) : super(client);
129+
Dao(Client this.client) : super(client);
130+
final Client client;
130131

131-
RuntimeCall vote(
132+
Future<DaoVotes> vote(
132133
{required String address,
133134
required int farmId,
134135
required String hash,
135-
required bool approve}) {
136+
required bool approve}) async {
136137
final extrinsic = client.api.tx.dao
137138
.vote(farmId: farmId, proposalHash: hash.codeUnits, approve: approve);
138-
return extrinsic;
139+
await client.apply(extrinsic);
140+
141+
return getProposalVotes(hash: hash);
139142
}
140143
}

packages/tfchain_client/lib/src/farms.dart

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,39 +9,49 @@ class QueryFarms {
99

1010
Future<Farm?> get({required int id}) async {
1111
final res = await client.api.query.tfgridModule.farms(id);
12-
return res as Farm;
12+
return res;
13+
}
14+
15+
Future<int?> getFarmIdByName({required String name}) async {
16+
return await client.api.query.tfgridModule.farmIdByName(name.codeUnits);
1317
}
1418
}
1519

1620
class Farms extends QueryFarms {
17-
Farms(Client client) : super(client);
21+
Farms(Client this.client) : super(client);
22+
final Client client;
1823

19-
Future<RuntimeCall> create(
24+
Future<int?> create(
2025
{required String name, required List<Ip4>? publicIps}) async {
2126
final extrinsic = client.api.tx.tfgridModule
2227
.createFarm(name: name.codeUnits, publicIps: publicIps);
23-
return extrinsic;
28+
await client.apply(extrinsic);
29+
30+
return await getFarmIdByName(name: name);
2431
}
2532

2633
// TODO: Bug
27-
Future<RuntimeCall> addFarmIp(
34+
Future<Farm?> addFarmIp(
2835
{required int farmId, required String ip, required String gw}) async {
2936
final extrinsic = client.api.tx.tfgridModule
3037
.addFarmIp(farmId: farmId, ip: ip.codeUnits, gw: gw.codeUnits);
31-
return extrinsic;
38+
await client.apply(extrinsic);
39+
40+
return await get(id: farmId);
3241
}
3342

34-
Future<RuntimeCall> removeFarmIp(
35-
{required int farmId, required String ip}) async {
43+
Future<Farm?> removeFarmIp({required int farmId, required String ip}) async {
3644
final extrinsic =
3745
client.api.tx.tfgridModule.removeFarmIp(farmId: farmId, ip: ip);
38-
return extrinsic;
46+
await client.apply(extrinsic);
47+
48+
return await get(id: farmId);
3949
}
4050

41-
Future<RuntimeCall> addStellarAddress(
51+
Future<void> addStellarAddress(
4252
{required int farmId, required String stellarAddress}) async {
4353
final extrinsic = client.api.tx.tfgridModule.addStellarPayoutV2address(
4454
farmId: farmId, stellarAddress: stellarAddress);
45-
return extrinsic;
55+
await client.apply(extrinsic);
4656
}
4757
}

packages/tfchain_client/lib/src/kvstore.dart

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,20 @@ class KVStore {
88

99
KVStore(this.client);
1010

11-
RuntimeCall set({required String key, required String value}) {
11+
Future<void> set({required String key, required String value}) async {
1212
final extrinsic =
1313
client.api.tx.tFKVStore.set(key: key.codeUnits, value: value.codeUnits);
14-
return extrinsic;
14+
await client.apply(extrinsic);
1515
}
1616

17-
RuntimeCall delete({required String key}) {
17+
Future<void> delete({required String key}) async {
1818
final extrinsic = client.api.tx.tFKVStore.delete(key: key.codeUnits);
19-
return extrinsic;
19+
await client.apply(extrinsic);
2020
}
2121

2222
Future<String> get({required String key}) async {
2323
final res = await client.api.query.tFKVStore
2424
.tFKVStore(client.keypair!.publicKey.bytes, []);
25-
print(res);
2625
return String.fromCharCodes(res);
2726
}
2827

@@ -77,16 +76,14 @@ class KVStore {
7776
keyValueMap[String.fromCharCodes(added)] = String.fromCharCodes(value);
7877
}
7978

80-
print(keyValueMap);
8179
return keyValueMap;
8280
}
8381

84-
void deleteAll() async {
82+
Future<void> deleteAll() async {
8583
Map<String, String> keys = await list();
8684

8785
for (String key in keys.keys) {
88-
final extrinsic = delete(key: key);
89-
await client.apply(extrinsic);
86+
await (key: key);
9087
}
9188
}
9289
}
Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import 'package:tfchain_client/generated/dev/types/tfchain_runtime/runtime_call.dart';
21
import 'package:tfchain_client/generated/dev/types/tfchain_support/types/node.dart';
2+
import 'package:tfchain_client/models/nodes.dart';
33
import 'package:tfchain_client/tfchain_client.dart';
44

55
class QueryNodes {
@@ -16,10 +16,10 @@ class QueryNodes {
1616
}
1717

1818
class Nodes extends QueryNodes {
19-
Nodes(Client client) : super(client);
19+
Nodes(Client this.client) : super(client);
20+
final Client client;
2021

21-
Future<RuntimeCall> setPower(
22-
{required int nodeId, required bool power}) async {
22+
Future<void> setPower({required int nodeId, required bool power}) async {
2323
Map<String, bool?> powerTarget = {
2424
'up': null,
2525
'down': null,
@@ -31,23 +31,39 @@ class Nodes extends QueryNodes {
3131
}
3232
final extrinsic = client.api.tx.tfgridModule
3333
.changePowerTarget(nodeId: nodeId, powerTarget: powerTarget);
34-
return extrinsic;
34+
await client.apply(extrinsic);
3535
}
36-
}
3736

38-
// TODO: what to do with this for addNodePublicConfig function
39-
// interface NodePublicConfigOptions {
40-
// farmId: number;
41-
// nodeId: number;
42-
// publicConfig?: {
43-
// ip4: {
44-
// ip: string;
45-
// gw: string;
46-
// };
47-
// ip6?: {
48-
// ip: string;
49-
// gw: string;
50-
// } | null;
51-
// domain?: string | null;
52-
// } | null;
53-
// }
37+
Future<void> addNodePublicConfig({
38+
required int farmId,
39+
required int nodeId,
40+
required String ip4Ip,
41+
required String ip4Gw,
42+
String? ip6Ip,
43+
String? ip6Gw,
44+
String? domain,
45+
}) async {
46+
IPConfig ip4Config = IPConfig(ip: ip4Ip, gw: ip4Gw);
47+
IPConfig? ip6Config;
48+
49+
if (ip6Ip != null && ip6Gw != null) {
50+
ip6Config = IPConfig(ip: ip6Ip, gw: ip6Gw);
51+
}
52+
53+
PublicConfig publicConfig = PublicConfig(
54+
ip4: ip4Config,
55+
ip6: ip6Config,
56+
domain: domain,
57+
);
58+
59+
NodePublicConfigOptions options = NodePublicConfigOptions(
60+
farmId: farmId,
61+
nodeId: nodeId,
62+
publicConfig: publicConfig,
63+
);
64+
65+
final extrinsic = client.api.tx.tfgridModule.addNodePublicConfig(
66+
farmId: farmId, nodeId: nodeId, publicConfig: options);
67+
await client.apply(extrinsic);
68+
}
69+
}
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
import 'package:tfchain_client/generated/dev/types/tfchain_runtime/runtime_call.dart';
21
import 'package:tfchain_client/tfchain_client.dart';
32

43
class TermsAndConditions {
54
final Client client;
65
TermsAndConditions(this.client);
76

8-
Future<RuntimeCall> accept(
7+
Future<void> accept(
98
{required String documentLink, required String documentHash}) async {
10-
final extrinsic = await client.api.tx.tfgridModule.userAcceptTc(
11-
documentLink: documentLink, documentHash: documentHash);
12-
return extrinsic;
9+
final extrinsic = await client.api.tx.tfgridModule
10+
.userAcceptTc(documentLink: documentLink, documentHash: documentHash);
11+
await client.apply(extrinsic);
1312
}
1413
}

packages/tfchain_client/lib/src/tft_bridge.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@ class QueryBridge {
1717
}
1818

1919
class Bridge extends QueryBridge {
20-
Bridge(Client client) : super(client);
20+
Bridge(Client this.client) : super(client);
21+
final Client client;
2122

22-
Future<RuntimeCall> swapToStellar(
23+
Future<void> swapToStellar(
2324
{required String target, required int amount}) async {
2425
final extrinsic = client.api.tx.tFTBridgeModule
2526
.swapToStellar(targetStellarAddress: target, amount: amount);
26-
return extrinsic;
27+
await client.apply(extrinsic);
2728
}
2829
}

0 commit comments

Comments
 (0)