@@ -77,13 +77,10 @@ void NostrPool::onEvent(NostrRelay *relay, NostrString message) {
7777
7878NostrString NostrPool::subscribeMany (std::initializer_list<NostrString> urls, std::initializer_list<std::map<NostrString, std::initializer_list<NostrString>>> filters,
7979 NostrEventCallback eventCallback, NostrCloseCallback closeCallback, NostrEOSECallback eoseCallback) {
80- NostrString subId = Utils::getNewSubscriptionId ();
8180 JsonDocument doc;
82- JsonArray req = doc[" req" ].to <JsonArray>();
83- req.add (" REQ" );
84- req.add (subId);
81+ JsonArray filtersArray = doc[" filtersArray" ].to <JsonArray>();
8582 for (const auto &filter : filters) {
86- JsonObject filterObj = req .add <JsonObject>();
83+ JsonObject filterObj = filtersArray .add <JsonObject>();
8784 for (const auto &pair : filter) {
8885 NostrString key = pair.first ;
8986 bool isIntList = NostrString_equals (key, " kinds" );
@@ -141,6 +138,22 @@ NostrString NostrPool::subscribeMany(std::initializer_list<NostrString> urls, st
141138 }
142139 }
143140
141+ NostrString subId = this ->subscribeMany (urls, filtersArray, eventCallback, closeCallback, eoseCallback);
142+ doc.clear ();
143+ return subId;
144+ }
145+
146+ NostrString NostrPool::subscribeMany (std::initializer_list<NostrString> urls, JsonArray filters, NostrEventCallback eventCallback, NostrCloseCallback closeCallback, NostrEOSECallback eoseCallback) {
147+ NostrString subId = Utils::getNewSubscriptionId ();
148+ JsonDocument doc;
149+ JsonArray req = doc[" req" ].to <JsonArray>();
150+ req.add (" REQ" );
151+ req.add (subId);
152+ for (int i = 0 ; i < filters.size (); i++){
153+ JsonObject filter = filters[i].as <JsonObject>();
154+ req.add (filter);
155+ }
156+
144157 NostrString json;
145158 Utils::jsonStringify (req, &json);
146159 doc.clear ();
0 commit comments