diff --git a/lib/data_layer/repositories/metadata_repository_impl.dart b/lib/data_layer/repositories/metadata_repository_impl.dart index 19acdee..cbb18ea 100644 --- a/lib/data_layer/repositories/metadata_repository_impl.dart +++ b/lib/data_layer/repositories/metadata_repository_impl.dart @@ -17,32 +17,42 @@ class MetadataRepositoryImpl implements MetadataRepository { /// nip05 is automatically verified if present and removed if invalid @override - Stream getMetadataByPubkey(String pubkey) { + Stream getMetadataByPubkey(String pubkey) async* { final myMetadata = dartNdkSource.dartNdk.metadata.loadMetadata(pubkey); final Stream myMetadataStream = myMetadata.asStream(); - return myMetadataStream.where((event) => event != null).asyncMap( - (event) async { - final metadata = UserMetadataModel.fromNDKMetadata(event!); + await for (final event in myMetadataStream) { + if (event != null) { + final metadata = UserMetadataModel.fromNDKMetadata(event); - // Check if there's a NIP-05 identifier - if (metadata.nip05 != null && metadata.nip05!.isNotEmpty) { + // Store the original NIP-05 value + final originalNip05 = metadata.nip05; + + // Set NIP-05 to null for the first event + metadata.nip05 = null; + + // Emit the first event immediately with NIP-05 set to null + yield metadata; + + // If there was originally a NIP-05 identifier, perform verification + if (originalNip05 != null && originalNip05.isNotEmpty) { // Perform NIP-05 verification final nip05Result = await dartNdkSource.dartNdk.nip05 - .check(nip05: metadata.nip05!, pubkey: pubkey); + .check(nip05: originalNip05, pubkey: pubkey); - // If verification fails, set NIP-05 to null - if (!nip05Result.valid) { - metadata.nip05 = null; - return metadata; + // If verification succeeds, set NIP-05 to the original value + if (nip05Result.valid) { + metadata.nip05 = originalNip05; + // Emit the second event with verified NIP-05 + yield metadata; } + // If verification fails, we don't emit another event + // as the NIP-05 is already null from the first event } - - return metadata; - }, - ); + } + } } @override