Skip to content

Commit 47f21ad

Browse files
committed
Add getLiquidityPoolAssets, handle liquidity pool asset in getBalanceByAccountID
1 parent 29666ea commit 47f21ad

File tree

2 files changed

+63
-26
lines changed

2 files changed

+63
-26
lines changed
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import 'package:stellar_client/stellar_client.dart';
22

33
void main() async {
4-
final stellarClient = Client.create(NetworkType.PUBLIC);
5-
await stellarClient.activateThroughThreefoldService();
4+
final stellarClient = Client(NetworkType.PUBLIC,
5+
'SCVWI4TCVUPB7EN4I5X5DQ56RV5E3JNFWDY2NHJCBXOMH5WKVCJ4RSGG');
6+
// print({stellarClient.accountId, stellarClient.secretSeed});
7+
// print(await stellarClient.getBalance());
8+
final balance = await getBalanceByAccountID(
9+
network: NetworkType.PUBLIC,
10+
accountId: 'GBE366DFQTLJNQSAWAE2YSGLAPXS4MZMJPCIBKWCHUUKMQLIJ2PNUIFC');
611

7-
await stellarClient.transfer(
8-
destinationAddress: "destination-public-key",
9-
amount: "20",
10-
currency: "TFT",
11-
memoText: "Memo Text");
12-
13-
await stellarClient.getTransactions();
12+
print('balanceeeee: $balance');
1413
}
Lines changed: 55 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,41 @@
11
part of '../stellar_client.dart';
22

3+
Future<BalanceData> getLiquidityPoolAssets(
4+
NetworkType network, String liquidityPoolId) async {
5+
late StellarSDK _sdk;
6+
late Uri liquidityPoolUri;
7+
late BalanceData balance;
8+
switch (network) {
9+
case NetworkType.TESTNET:
10+
_sdk = StellarSDK.TESTNET;
11+
break;
12+
default:
13+
_sdk = StellarSDK.PUBLIC;
14+
}
15+
try {
16+
if (network == Network.TESTNET) {
17+
liquidityPoolUri = Uri.parse(
18+
'https://horizon-testnet.stellar.org/liquidity_pools/$liquidityPoolId');
19+
} else {
20+
liquidityPoolUri = Uri.parse(
21+
'https://horizon.stellar.org/liquidity_pools/$liquidityPoolId');
22+
}
23+
LiquidityPoolResponse liquidityPool =
24+
await _sdk.liquidityPools.liquidityPool(liquidityPoolUri);
25+
26+
for (var reserve in liquidityPool.reserves) {
27+
balance =
28+
BalanceData(assetCode: reserve.asset.type, balance: reserve.amount);
29+
}
30+
return balance;
31+
} catch (e) {
32+
throw Exception(e);
33+
}
34+
}
35+
336
Future<List<BalanceInfo>> getBalanceByAccountID(
437
{required NetworkType network, required String accountId}) async {
538
late StellarSDK _sdk;
6-
739
switch (network) {
840
case NetworkType.TESTNET:
941
_sdk = StellarSDK.TESTNET;
@@ -12,22 +44,28 @@ Future<List<BalanceInfo>> getBalanceByAccountID(
1244
_sdk = StellarSDK.PUBLIC;
1345
break;
1446
}
15-
16-
List<BalanceInfo> balancesList = [];
17-
AccountResponse account = await _sdk.accounts.account(accountId);
18-
19-
for (Balance balance in account.balances) {
20-
BalanceData balanceData;
21-
switch (balance.assetType) {
22-
case Asset.TYPE_NATIVE:
23-
balanceData = BalanceData(assetCode: 'XLM', balance: balance.balance);
24-
break;
25-
default:
26-
balanceData = BalanceData(
27-
assetCode: balance.assetCode!, balance: balance.balance);
47+
try {
48+
List<BalanceInfo> balancesList = [];
49+
AccountResponse account = await _sdk.accounts.account(accountId);
50+
for (Balance balance in account.balances) {
51+
BalanceData balanceData;
52+
switch (balance.assetType) {
53+
case Asset.TYPE_NATIVE:
54+
balanceData = BalanceData(assetCode: 'XLM', balance: balance.balance);
55+
break;
56+
case Asset.TYPE_POOL_SHARE:
57+
final b =
58+
await getLiquidityPoolAssets(network, balance.liquidityPoolId!);
59+
balanceData =
60+
BalanceData(assetCode: b.assetCode, balance: balance.balance);
61+
default:
62+
balanceData = BalanceData(
63+
assetCode: balance.assetCode!, balance: balance.balance);
64+
}
65+
balancesList.add(balanceData);
2866
}
29-
balancesList.add(balanceData);
67+
return balancesList;
68+
} catch (e) {
69+
throw Exception(e);
3070
}
31-
32-
return balancesList;
3371
}

0 commit comments

Comments
 (0)