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 {
final filters = <sembast.Filter>[];
// Filter by state
filters.add(sembast.Filter.equals('state', state.toString()));
// Filter by keysetId if provided
if (keysetId != null && keysetId.isNotEmpty) {
filters.add(sembast.Filter.equals('keysetId', keysetId));
}
// Filter by mintUrl if provided
if (mintUrl != null && mintUrl.isNotEmpty) {
// Get all keysets for the mintUrl
final keysets = await getKeysets(mintUrl: mintUrl);
if (keysets.isNotEmpty) {
// Only filter if keysets exist
final keysetIds = keysets.map((k) => k.id).toList();
filters.add(sembast.Filter.inList('keysetId', keysetIds));
}
// If no keysets found, continue without this filter
// This allows getting proofs even if keyset isn't stored yet
}
final finder = sembast.Finder(
filter: sembast.Filter.and(filters),
sortOrders: [sembast.SortOrder('amount')],
);
final records = await _proofStore.find(_database, finder: finder);
return records
.map((record) => CashuProofExtension.fromJsonStorage(record.value))
.toList();
}