getProofs method
Future<List<CashuProof>>
getProofs(
{ - String? mintUrl,
- String? keysetId,
- CashuProofState state = CashuProofState.unspend,
})
override
Implementation
@override
Future<List<CashuProof>> getProofs({
String? mintUrl,
String? keysetId,
CashuProofState state = CashuProofState.unspend,
}) async {
/// returns all proofs if no filters are applied
await dbRdy;
final proofBox = _objectBox.store.box<DbWalletCashuProof>();
// Build conditions
Condition<DbWalletCashuProof> condition;
/// filter spend state
condition = DbWalletCashuProof_.state.equals(state.toString());
/// specify keysetId
if (keysetId != null && keysetId.isNotEmpty) {
final keysetCondition = DbWalletCashuProof_.keysetId.equals(keysetId);
condition = condition.and(keysetCondition);
}
if (mintUrl != null && mintUrl.isNotEmpty) {
/// get all keysets for the mintUrl
/// and filter proofs by keysetId
///
final keysets = await getKeysets(mintUrl: mintUrl);
if (keysets.isNotEmpty) {
final keysetIds = keysets.map((k) => k.id).toList();
final mintUrlCondition = DbWalletCashuProof_.keysetId.oneOf(keysetIds);
condition = condition.and(mintUrlCondition);
} else {
// If no keysets found for the mintUrl, return empty list
return [];
}
}
QueryBuilder<DbWalletCashuProof> queryBuilder;
queryBuilder = proofBox.query(condition);
// Apply sorting
queryBuilder.order(DbWalletCashuProof_.amount);
// Build and execute the query
final query = queryBuilder.build();
final results = query.find();
return results.map((dbProof) => dbProof.toNdk()).toList();
}