removeEvents method
Future<void>
removeEvents({
- List<
String> ? ids, - List<
String> ? pubKeys, - List<
int> ? kinds, - Map<
String, List< ? tags,String> > - int? since,
- int? until,
override
Remove events from cache with flexible filtering.
If all parameters are empty, implementations should return early instead of deleting everything by accident.
Implementation
@override
Future<void> removeEvents({
List<String>? ids,
List<String>? pubKeys,
List<int>? kinds,
Map<String, List<String>>? tags,
int? since,
int? until,
}) async {
// If all parameters are empty, return early (don't delete everything)
if ((ids == null || ids.isEmpty) &&
(pubKeys == null || pubKeys.isEmpty) &&
(kinds == null || kinds.isEmpty) &&
(tags == null || tags.isEmpty) &&
since == null &&
until == null) {
return;
}
final rawEventsToRemove = await _loadEventsInternal(
ids: ids,
pubKeys: pubKeys,
kinds: kinds,
tags: tags,
since: since,
until: until,
applyVisibilityRules: false,
);
final eventIdsToRemove = rawEventsToRemove
.map((event) => event.id)
.toList();
final eventIdSet = eventIdsToRemove.toSet();
events.removeWhere((key, value) => eventIdSet.contains(key));
_removeEventSidecarsByIds(eventIdsToRemove);
await _refreshDerivedStateForPubKeys(
rawEventsToRemove.map((event) => event.pubKey).toSet(),
);
}