Skip to content

Commit a33b6f6

Browse files
committed
fix bug in create order
1 parent c86f2f9 commit a33b6f6

File tree

1 file changed

+27
-14
lines changed

1 file changed

+27
-14
lines changed

packages/stellar_client/lib/src/client.dart

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -589,12 +589,13 @@ class Client {
589589
/// - For example, instead of writing `.1`, the price should be written as `0.1`.
590590
/// - **Correct format**: `0.1`
591591
/// - **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 {
598599
if (!_currencies.currencies.containsKey(sellingAssetCode)) {
599600
throw Exception('Sell asset $sellingAssetCode is not available.');
600601
}
@@ -605,8 +606,9 @@ class Client {
605606
final Asset sellingAsset = _getAsset(sellingAssetCode);
606607
final Asset buyingAsset = _getAsset(buyingAssetCode);
607608

608-
final ManageBuyOfferOperation buyOfferOperation =
609-
ManageBuyOfferOperationBuilder(sellingAsset, buyingAsset, amount, price)
609+
final ManageSellOfferOperation sellOfferOperation =
610+
ManageSellOfferOperationBuilder(
611+
sellingAsset, buyingAsset, amount, price)
610612
.build();
611613

612614
final account = await _sdk.accounts.account(accountId);
@@ -616,8 +618,7 @@ class Client {
616618
final sellAssetBalance = balances.firstWhere(
617619
(balance) {
618620
if (sellingAssetCode == 'XLM' && balance.assetCode == null) {
619-
// Special case for XLM
620-
return true;
621+
return true; // Special case for XLM
621622
} else {
622623
return balance.assetCode == sellingAssetCode;
623624
}
@@ -641,7 +642,7 @@ class Client {
641642
}
642643

643644
final Transaction transaction = TransactionBuilder(account)
644-
.addOperation(buyOfferOperation)
645+
.addOperation(sellOfferOperation)
645646
.addMemo(memo != null ? Memo.text(memo) : Memo.none())
646647
.build();
647648

@@ -900,10 +901,22 @@ class Client {
900901

901902
Future<List<TradeResponse>> getTradingHistory(String accountId) async {
902903
try {
903-
Page<TradeResponse> tradesPage =
904+
List<TradeResponse> allTrades = [];
905+
Page<TradeResponse>? tradesPage =
904906
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;
907920
} catch (e) {
908921
throw Exception('Failed to fetch trading history: ${e.toString()}');
909922
}

0 commit comments

Comments
 (0)