closeNostrRequestById method

Future<void> closeNostrRequestById(
  1. String id
)

Implementation

Future<void> closeNostrRequestById(String id) async {
  NostrRequest? nostrRequest = nostrRequests[id];
  if (nostrRequest!=null) {
    for (var url in nostrRequest.requests.keys) {
      if (isWebSocketOpen(url)) {
        try {
          // webSockets[url]!.sendMessage(jsonEncode(["CLOSE", nostrRequest.id]));
          send(url,jsonEncode(["CLOSE", nostrRequest.id]));
        } catch (e) {
          print(e);
        }
      }
    }
    try {
      nostrRequest.controller.close();
    } catch (e) {
      print(e);
    }
    nostrRequests.remove(id);

    /***********************************/
    Map<int?,int> kindsMap = {};
    nostrRequests.forEach((key, request) {
      int? kind;
      if (request.requests.isNotEmpty && request.requests.values.first.filters.first.kinds!=null && request.requests.values.first.filters.first.kinds!.isNotEmpty) {
        kind = request.requests.values.first.filters.first.kinds!.first;
      }
      int? count = kindsMap[kind];
      count ??= 0;
      count++;
      kindsMap[kind] = count;
    });
    print(
        "----------------NOSTR REQUESTS CLOSE SOME: ${nostrRequests.length} || $kindsMap");
    /***********************************/
  }
}