11part 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+
336Future <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