From 47f21ad8c4443f5575f0dbcc76064a82d4f9b415 Mon Sep 17 00:00:00 2001 From: zaelgohary Date: Sun, 16 Mar 2025 12:18:13 +0200 Subject: [PATCH 1/3] Add getLiquidityPoolAssets, handle liquidity pool asset in getBalanceByAccountID --- .../stellar_client/bin/stellar_client.dart | 17 +++-- packages/stellar_client/lib/src/helpers.dart | 72 ++++++++++++++----- 2 files changed, 63 insertions(+), 26 deletions(-) diff --git a/packages/stellar_client/bin/stellar_client.dart b/packages/stellar_client/bin/stellar_client.dart index c66f7d75..a1db298e 100644 --- a/packages/stellar_client/bin/stellar_client.dart +++ b/packages/stellar_client/bin/stellar_client.dart @@ -1,14 +1,13 @@ import 'package:stellar_client/stellar_client.dart'; void main() async { - final stellarClient = Client.create(NetworkType.PUBLIC); - await stellarClient.activateThroughThreefoldService(); + final stellarClient = Client(NetworkType.PUBLIC, + 'SCVWI4TCVUPB7EN4I5X5DQ56RV5E3JNFWDY2NHJCBXOMH5WKVCJ4RSGG'); + // print({stellarClient.accountId, stellarClient.secretSeed}); + // print(await stellarClient.getBalance()); + final balance = await getBalanceByAccountID( + network: NetworkType.PUBLIC, + accountId: 'GBE366DFQTLJNQSAWAE2YSGLAPXS4MZMJPCIBKWCHUUKMQLIJ2PNUIFC'); - await stellarClient.transfer( - destinationAddress: "destination-public-key", - amount: "20", - currency: "TFT", - memoText: "Memo Text"); - - await stellarClient.getTransactions(); + print('balanceeeee: $balance'); } diff --git a/packages/stellar_client/lib/src/helpers.dart b/packages/stellar_client/lib/src/helpers.dart index 26ba567a..78da3b86 100644 --- a/packages/stellar_client/lib/src/helpers.dart +++ b/packages/stellar_client/lib/src/helpers.dart @@ -1,9 +1,41 @@ part of '../stellar_client.dart'; +Future getLiquidityPoolAssets( + NetworkType network, String liquidityPoolId) async { + late StellarSDK _sdk; + late Uri liquidityPoolUri; + late BalanceData balance; + switch (network) { + case NetworkType.TESTNET: + _sdk = StellarSDK.TESTNET; + break; + default: + _sdk = StellarSDK.PUBLIC; + } + try { + if (network == Network.TESTNET) { + liquidityPoolUri = Uri.parse( + 'https://horizon-testnet.stellar.org/liquidity_pools/$liquidityPoolId'); + } else { + liquidityPoolUri = Uri.parse( + 'https://horizon.stellar.org/liquidity_pools/$liquidityPoolId'); + } + LiquidityPoolResponse liquidityPool = + await _sdk.liquidityPools.liquidityPool(liquidityPoolUri); + + for (var reserve in liquidityPool.reserves) { + balance = + BalanceData(assetCode: reserve.asset.type, balance: reserve.amount); + } + return balance; + } catch (e) { + throw Exception(e); + } +} + Future> getBalanceByAccountID( {required NetworkType network, required String accountId}) async { late StellarSDK _sdk; - switch (network) { case NetworkType.TESTNET: _sdk = StellarSDK.TESTNET; @@ -12,22 +44,28 @@ Future> getBalanceByAccountID( _sdk = StellarSDK.PUBLIC; break; } - - List balancesList = []; - AccountResponse account = await _sdk.accounts.account(accountId); - - for (Balance balance in account.balances) { - BalanceData balanceData; - switch (balance.assetType) { - case Asset.TYPE_NATIVE: - balanceData = BalanceData(assetCode: 'XLM', balance: balance.balance); - break; - default: - balanceData = BalanceData( - assetCode: balance.assetCode!, balance: balance.balance); + try { + List balancesList = []; + AccountResponse account = await _sdk.accounts.account(accountId); + for (Balance balance in account.balances) { + BalanceData balanceData; + switch (balance.assetType) { + case Asset.TYPE_NATIVE: + balanceData = BalanceData(assetCode: 'XLM', balance: balance.balance); + break; + case Asset.TYPE_POOL_SHARE: + final b = + await getLiquidityPoolAssets(network, balance.liquidityPoolId!); + balanceData = + BalanceData(assetCode: b.assetCode, balance: balance.balance); + default: + balanceData = BalanceData( + assetCode: balance.assetCode!, balance: balance.balance); + } + balancesList.add(balanceData); } - balancesList.add(balanceData); + return balancesList; + } catch (e) { + throw Exception(e); } - - return balancesList; } From b5c0d445720ce04593acaa86c3dce1079b1d5bcd Mon Sep 17 00:00:00 2001 From: zaelgohary Date: Sun, 16 Mar 2025 12:22:00 +0200 Subject: [PATCH 2/3] Revert stellar_client.dart changes --- packages/stellar_client/bin/stellar_client.dart | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/stellar_client/bin/stellar_client.dart b/packages/stellar_client/bin/stellar_client.dart index a1db298e..c66f7d75 100644 --- a/packages/stellar_client/bin/stellar_client.dart +++ b/packages/stellar_client/bin/stellar_client.dart @@ -1,13 +1,14 @@ import 'package:stellar_client/stellar_client.dart'; void main() async { - final stellarClient = Client(NetworkType.PUBLIC, - 'SCVWI4TCVUPB7EN4I5X5DQ56RV5E3JNFWDY2NHJCBXOMH5WKVCJ4RSGG'); - // print({stellarClient.accountId, stellarClient.secretSeed}); - // print(await stellarClient.getBalance()); - final balance = await getBalanceByAccountID( - network: NetworkType.PUBLIC, - accountId: 'GBE366DFQTLJNQSAWAE2YSGLAPXS4MZMJPCIBKWCHUUKMQLIJ2PNUIFC'); + final stellarClient = Client.create(NetworkType.PUBLIC); + await stellarClient.activateThroughThreefoldService(); - print('balanceeeee: $balance'); + await stellarClient.transfer( + destinationAddress: "destination-public-key", + amount: "20", + currency: "TFT", + memoText: "Memo Text"); + + await stellarClient.getTransactions(); } From 448f905ac95e87c5127184da724d132bcdec0d55 Mon Sep 17 00:00:00 2001 From: zaelgohary Date: Sun, 16 Mar 2025 15:48:06 +0200 Subject: [PATCH 3/3] Remove getLiquidityPoolAsset fn, edit getBalance to break in case TYPE_POOL_SHARE --- packages/stellar_client/lib/src/helpers.dart | 58 +++++--------------- 1 file changed, 14 insertions(+), 44 deletions(-) diff --git a/packages/stellar_client/lib/src/helpers.dart b/packages/stellar_client/lib/src/helpers.dart index 78da3b86..e5374d14 100644 --- a/packages/stellar_client/lib/src/helpers.dart +++ b/packages/stellar_client/lib/src/helpers.dart @@ -1,40 +1,9 @@ part of '../stellar_client.dart'; -Future getLiquidityPoolAssets( - NetworkType network, String liquidityPoolId) async { - late StellarSDK _sdk; - late Uri liquidityPoolUri; - late BalanceData balance; - switch (network) { - case NetworkType.TESTNET: - _sdk = StellarSDK.TESTNET; - break; - default: - _sdk = StellarSDK.PUBLIC; - } - try { - if (network == Network.TESTNET) { - liquidityPoolUri = Uri.parse( - 'https://horizon-testnet.stellar.org/liquidity_pools/$liquidityPoolId'); - } else { - liquidityPoolUri = Uri.parse( - 'https://horizon.stellar.org/liquidity_pools/$liquidityPoolId'); - } - LiquidityPoolResponse liquidityPool = - await _sdk.liquidityPools.liquidityPool(liquidityPoolUri); - - for (var reserve in liquidityPool.reserves) { - balance = - BalanceData(assetCode: reserve.asset.type, balance: reserve.amount); - } - return balance; - } catch (e) { - throw Exception(e); - } -} - -Future> getBalanceByAccountID( - {required NetworkType network, required String accountId}) async { +Future> getBalanceByAccountID({ + required NetworkType network, + required String accountId, +}) async { late StellarSDK _sdk; switch (network) { case NetworkType.TESTNET: @@ -48,21 +17,22 @@ Future> getBalanceByAccountID( List balancesList = []; AccountResponse account = await _sdk.accounts.account(accountId); for (Balance balance in account.balances) { - BalanceData balanceData; switch (balance.assetType) { case Asset.TYPE_NATIVE: - balanceData = BalanceData(assetCode: 'XLM', balance: balance.balance); + balancesList.add( + BalanceData(assetCode: 'XLM', balance: balance.balance), + ); break; case Asset.TYPE_POOL_SHARE: - final b = - await getLiquidityPoolAssets(network, balance.liquidityPoolId!); - balanceData = - BalanceData(assetCode: b.assetCode, balance: balance.balance); + break; default: - balanceData = BalanceData( - assetCode: balance.assetCode!, balance: balance.balance); + balancesList.add( + BalanceData( + assetCode: balance.assetCode!, + balance: balance.balance, + ), + ); } - balancesList.add(balanceData); } return balancesList; } catch (e) {