splitIntoRequests method

void splitIntoRequests(
  1. Filter filter,
  2. NostrRequest groupRequest
)

Implementation

void splitIntoRequests(Filter filter, NostrRequest groupRequest) {
  for (var entry in relaysMap.entries) {
    String url = entry.key;
    List<PubkeyMapping> pubKeyMappings = entry.value;
    if (pubKeyMappings.isEmpty) {
      groupRequest.addRequest(url, [filter]);
    } else if (filter.authors != null && filter.authors!.isNotEmpty && direction == RelayDirection.outbox) {
      List<String> pubKeysForRelay = [];
      for (String pubKey in filter.authors!) {
        if (pubKeyMappings.any((pubKeyMapping) => pubKey == pubKeyMapping.pubKey || notCoveredPubkeys.any((element) => element.pubKey == pubKey))) {
          pubKeysForRelay.add(pubKey);
        }
      }
      if (pubKeysForRelay.isNotEmpty) {
        groupRequest.addRequest(url, sliceFilterAuthors(filter.cloneWithAuthors(pubKeysForRelay)));
      }
    } else if (filter.pTags != null && filter.pTags!.isNotEmpty && direction == RelayDirection.inbox) {
      List<String> pubKeysForRelay = [];
      for (String pubKey in filter.pTags!) {
        if (pubKeyMappings.any((pubKeyMapping) => pubKey == pubKeyMapping.pubKey || notCoveredPubkeys.any((element) => element.pubKey == pubKey))) {
          pubKeysForRelay.add(pubKey);
        }
      }
      if (pubKeysForRelay.isNotEmpty) {
        groupRequest.addRequest(url, sliceFilterAuthors(filter.cloneWithPTags(pubKeysForRelay)));
      }
    } else if (filter.eTags != null && direction == RelayDirection.inbox) {
      groupRequest.addRequest(url, [filter]);
    } else {
      /// TODO ????
    }
  }
}