query method
- Filter? filter,
- @Deprecated('Use filter instead. Multiple filters support will be removed in a future version.') List<
Filter> ? filters, - String name = '',
- RelaySet? relaySet,
- bool cacheRead = true,
- bool cacheWrite = true,
- Duration? timeout,
- dynamic timeoutCallbackUserFacing()?,
- dynamic timeoutCallback()?,
- Iterable<
String> ? explicitRelays, - int? desiredCoverage,
Performs a low-level Nostr query
filter The filter to apply to the query
filters @deprecated A list of filters to apply to the query. Use filter instead
name An optional name used as an ID prefix
relaySet An optional set of relays to query
cacheRead Whether to read from cache
cacheWrite Whether to write results to cache
timeout An optional timeout in seconds for the query if not set ndk default will be used
explicitRelays A list of specific relays to use, bypassing inbox/outbox
desiredCoverage The number of relays per pubkey to query, default: 2
timeoutCallbackUserFacing A user facing timeout callback, this callback should be given to the lib user
timeoutCallback An internal timeout callback, this callback should be used for internal error handling \
Returns an NdkResponse containing the query result stream, future
Implementation
NdkResponse query({
Filter? filter,
@Deprecated('Use filter instead. Multiple filters support will be removed in a future version.')
List<Filter>? filters,
String name = '',
RelaySet? relaySet,
bool cacheRead = true,
bool cacheWrite = true,
Duration? timeout,
Function()? timeoutCallbackUserFacing,
Function()? timeoutCallback,
Iterable<String>? explicitRelays,
int? desiredCoverage,
}) {
if (filter == null && (filters == null || filters.isEmpty)) {
throw ArgumentError('Either filter or filters must be provided');
}
final effectiveFilters = filter != null ? [filter] : filters!;
timeout ??= _defaultQueryTimeout;
return requestNostrEvent(NdkRequest.query(
'$name-${Helpers.getRandomString(10)}',
name: name,
filters: effectiveFilters.map((e) => e.clone()).toList(),
relaySet: relaySet,
cacheRead: cacheRead,
cacheWrite: cacheWrite,
timeoutDuration: timeout,
timeoutCallbackUserFacing: timeoutCallbackUserFacing,
timeoutCallback: timeoutCallback,
explicitRelays: explicitRelays,
desiredCoverage:
desiredCoverage ?? RequestDefaults.DEFAULT_BEST_RELAYS_MIN_COUNT,
));
}