searchMetadatas method

  1. @override
Future<Iterable<Metadata>> searchMetadatas(
  1. String search,
  2. int limit
)
override

Search by name, nip05

Implementation

@override
Future<Iterable<Metadata>> searchMetadatas(String search, int limit) async {
  final events = await loadEvents(kinds: [Metadata.kKind]);
  final normalizedSearch = search.trim().toLowerCase();
  final matches = events.map((event) => Metadata.fromEvent(event)).where((
    metadata,
  ) {
    if (normalizedSearch.isEmpty) return true;
    return metadata.matchesSearch(normalizedSearch) ||
        (metadata.about?.toLowerCase().contains(normalizedSearch) ?? false) ||
        (metadata.cleanNip05?.contains(normalizedSearch) ?? false);
  }).toList()..sort((a, b) => (b.updatedAt ?? 0).compareTo(a.updatedAt ?? 0));
  return matches.take(limit);
}