@@ -589,12 +589,13 @@ class Client {
589
589
/// - For example, instead of writing `.1` , the price should be written as `0.1` .
590
590
/// - **Correct format**: `0.1`
591
591
/// - **Incorrect format**: `.1`
592
- Future <bool > createOrder (
593
- {required String sellingAssetCode,
594
- required String buyingAssetCode,
595
- required String amount,
596
- required String price,
597
- String ? memo}) async {
592
+ Future <bool > createOrder ({
593
+ required String sellingAssetCode,
594
+ required String buyingAssetCode,
595
+ required String amount,
596
+ required String price,
597
+ String ? memo,
598
+ }) async {
598
599
if (! _currencies.currencies.containsKey (sellingAssetCode)) {
599
600
throw Exception ('Sell asset $sellingAssetCode is not available.' );
600
601
}
@@ -605,8 +606,9 @@ class Client {
605
606
final Asset sellingAsset = _getAsset (sellingAssetCode);
606
607
final Asset buyingAsset = _getAsset (buyingAssetCode);
607
608
608
- final ManageBuyOfferOperation buyOfferOperation =
609
- ManageBuyOfferOperationBuilder (sellingAsset, buyingAsset, amount, price)
609
+ final ManageSellOfferOperation sellOfferOperation =
610
+ ManageSellOfferOperationBuilder (
611
+ sellingAsset, buyingAsset, amount, price)
610
612
.build ();
611
613
612
614
final account = await _sdk.accounts.account (accountId);
@@ -616,8 +618,7 @@ class Client {
616
618
final sellAssetBalance = balances.firstWhere (
617
619
(balance) {
618
620
if (sellingAssetCode == 'XLM' && balance.assetCode == null ) {
619
- // Special case for XLM
620
- return true ;
621
+ return true ; // Special case for XLM
621
622
} else {
622
623
return balance.assetCode == sellingAssetCode;
623
624
}
@@ -641,7 +642,7 @@ class Client {
641
642
}
642
643
643
644
final Transaction transaction = TransactionBuilder (account)
644
- .addOperation (buyOfferOperation )
645
+ .addOperation (sellOfferOperation )
645
646
.addMemo (memo != null ? Memo .text (memo) : Memo .none ())
646
647
.build ();
647
648
@@ -900,10 +901,22 @@ class Client {
900
901
901
902
Future <List <TradeResponse >> getTradingHistory (String accountId) async {
902
903
try {
903
- Page <TradeResponse > tradesPage =
904
+ List <TradeResponse > allTrades = [];
905
+ Page <TradeResponse >? tradesPage =
904
906
await _sdk.trades.forAccount (accountId).execute ();
905
-
906
- return tradesPage.records;
907
+ final httpClient = http.Client ();
908
+ try {
909
+ while (tradesPage != null ) {
910
+ allTrades.addAll (tradesPage.records);
911
+ tradesPage = await tradesPage.getNextPage (httpClient);
912
+ if (tradesPage == null || tradesPage.records.isEmpty) {
913
+ break ;
914
+ }
915
+ }
916
+ } finally {
917
+ httpClient.close ();
918
+ }
919
+ return allTrades;
907
920
} catch (e) {
908
921
throw Exception ('Failed to fetch trading history: ${e .toString ()}' );
909
922
}
0 commit comments