diff --git a/packages/ndk/lib/data_layer/repositories/verifiers/bip340_event_verifier.dart b/packages/ndk/lib/data_layer/repositories/verifiers/bip340_event_verifier.dart index eb43da84a..9db797749 100644 --- a/packages/ndk/lib/data_layer/repositories/verifiers/bip340_event_verifier.dart +++ b/packages/ndk/lib/data_layer/repositories/verifiers/bip340_event_verifier.dart @@ -1,3 +1,5 @@ +import 'dart:isolate'; + import 'package:bip340/bip340.dart' as bip340; import '../../../domain_layer/entities/nip_01_event.dart'; @@ -8,6 +10,8 @@ import '../../../domain_layer/repositories/event_verifier.dart'; class Bip340EventVerifier implements EventVerifier { @override Future verify(Nip01Event event) async { - return bip340.verify(event.pubKey, event.id, event.sig); + return await Isolate.run(() { + return bip340.verify(event.pubKey, event.id, event.sig); + }); } } diff --git a/packages/ndk/test/filters_order_test.dart b/packages/ndk/test/filters_order_test.dart new file mode 100644 index 000000000..c26f56731 --- /dev/null +++ b/packages/ndk/test/filters_order_test.dart @@ -0,0 +1,74 @@ +import 'package:ndk/ndk.dart'; +import 'package:test/test.dart'; + +void main() { + test('order 1', () async { + final ndk = Ndk( + NdkConfig( + eventVerifier: Bip340EventVerifier(), + cache: MemCacheManager(), + bootstrapRelays: [ + "wss://nostr-01.uid.ovh", + "wss://nostr-02.uid.ovh", + "wss://relay.camelus.app", + "wss://nostr-01.yakihonne.com", + "wss://relay.primal.net", + "wss://relay.damus.io", + "wss://relay.snort.social", + "wss://purplepag.es", + "wss://nos.lol", + ], + logLevel: LogLevel.off, + ), + ); + + final query = ndk.requests.query( + filters: [ + Filter(kinds: [1984]), + Filter(kinds: [31988]), + ], + ); + + final events = await query.future; + + expect(events.where((e) => e.kind == 31988).length, greaterThan(0)); + expect(events.where((e) => e.kind == 1984).length, greaterThan(0)); + + await ndk.destroy(); + }); + + test('order 2', () async { + final ndk = Ndk( + NdkConfig( + eventVerifier: Bip340EventVerifier(), + cache: MemCacheManager(), + bootstrapRelays: [ + "wss://nostr-01.uid.ovh", + "wss://nostr-02.uid.ovh", + "wss://relay.camelus.app", + "wss://nostr-01.yakihonne.com", + "wss://relay.primal.net", + "wss://relay.damus.io", + "wss://relay.snort.social", + "wss://purplepag.es", + "wss://nos.lol", + ], + logLevel: LogLevel.off, + ), + ); + + final query = ndk.requests.query( + filters: [ + Filter(kinds: [31988]), + Filter(kinds: [1984]), + ], + ); + + final events = await query.future; + + expect(events.where((e) => e.kind == 31988).length, greaterThan(0)); + expect(events.where((e) => e.kind == 1984).length, greaterThan(0)); + + await ndk.destroy(); + }); +}