queryTransactionsBySender method
Query transaction digests filtered by sender address.
Returns the page of digests and the end cursor. Full result hydration is
left to callers via the gRPC getTransaction once digests are known.
Implementation
Future<SenderTransactionPage> queryTransactionsBySender(
String sender, {
int first = 20,
String? after,
}) async {
// Fetch enough per transaction to render a wallet activity row: timestamp,
// status, and the balance deltas (amount / coin / owner).
const q = r'''
query ($sender: SuiAddress!, $first: Int!, $after: String) {
transactions(
first: $first
after: $after
filter: { sentAddress: $sender }
) {
pageInfo { hasNextPage endCursor }
nodes {
digest
effects {
timestamp
status
balanceChanges {
nodes { amount coinType { repr } owner { address } }
}
}
}
}
}
''';
final data = await transport.query(q, variables: {
'sender': sender,
'first': first,
if (after != null) 'after': after,
});
final tx = data['transactions'] as Map<String, dynamic>;
final txs = (tx['nodes'] as List)
.map((n) => SenderTransaction._fromNode(n as Map<String, dynamic>))
.toList();
final pageInfo = tx['pageInfo'] as Map<String, dynamic>;
return SenderTransactionPage(
transactions: txs,
hasNextPage: pageInfo['hasNextPage'] as bool,
endCursor: pageInfo['endCursor'] as String?,
);
}