1
1
part of '../stellar_client.dart' ;
2
2
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
+
3
36
Future <List <BalanceInfo >> getBalanceByAccountID (
4
37
{required NetworkType network, required String accountId}) async {
5
38
late StellarSDK _sdk;
6
-
7
39
switch (network) {
8
40
case NetworkType .TESTNET :
9
41
_sdk = StellarSDK .TESTNET ;
@@ -12,22 +44,28 @@ Future<List<BalanceInfo>> getBalanceByAccountID(
12
44
_sdk = StellarSDK .PUBLIC ;
13
45
break ;
14
46
}
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);
28
66
}
29
- balancesList.add (balanceData);
67
+ return balancesList;
68
+ } catch (e) {
69
+ throw Exception (e);
30
70
}
31
-
32
- return balancesList;
33
71
}
0 commit comments