@@ -77,13 +77,10 @@ void NostrPool::onEvent(NostrRelay *relay, NostrString message) {
77
77
78
78
NostrString NostrPool::subscribeMany (std::initializer_list<NostrString> urls, std::initializer_list<std::map<NostrString, std::initializer_list<NostrString>>> filters,
79
79
NostrEventCallback eventCallback, NostrCloseCallback closeCallback, NostrEOSECallback eoseCallback) {
80
- NostrString subId = Utils::getNewSubscriptionId ();
81
80
JsonDocument doc;
82
- JsonArray req = doc[" req" ].to <JsonArray>();
83
- req.add (" REQ" );
84
- req.add (subId);
81
+ JsonArray filtersArray = doc[" filtersArray" ].to <JsonArray>();
85
82
for (const auto &filter : filters) {
86
- JsonObject filterObj = req .add <JsonObject>();
83
+ JsonObject filterObj = filtersArray .add <JsonObject>();
87
84
for (const auto &pair : filter) {
88
85
NostrString key = pair.first ;
89
86
bool isIntList = NostrString_equals (key, " kinds" );
@@ -141,6 +138,22 @@ NostrString NostrPool::subscribeMany(std::initializer_list<NostrString> urls, st
141
138
}
142
139
}
143
140
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
+
144
157
NostrString json;
145
158
Utils::jsonStringify (req, &json);
146
159
doc.clear ();
0 commit comments