From d7cec82384e5fbd2f7178b41b3849b93eeab2e02 Mon Sep 17 00:00:00 2001 From: LeoLox <58687994+leo-lox@users.noreply.github.com> Date: Thu, 24 Oct 2024 14:33:52 +0200 Subject: [PATCH] metadata rpository --- .../metadata_repository_impl.dart | 29 +++++++++++++++++++ .../repositories/metadata_repository.dart | 5 ++++ .../repositories/note_repository.dart | 5 +--- .../usecases/get_user_metadata.dart | 8 ++--- .../providers/metadata_provider.dart | 17 ++++++----- 5 files changed, 48 insertions(+), 16 deletions(-) create mode 100644 lib/data_layer/repositories/metadata_repository_impl.dart create mode 100644 lib/domain_layer/repositories/metadata_repository.dart diff --git a/lib/data_layer/repositories/metadata_repository_impl.dart b/lib/data_layer/repositories/metadata_repository_impl.dart new file mode 100644 index 00000000..5337b701 --- /dev/null +++ b/lib/data_layer/repositories/metadata_repository_impl.dart @@ -0,0 +1,29 @@ +import 'package:ndk/entities.dart' as ndk_entities; +import 'package:ndk/ndk.dart' as ndk; + +import '../../domain_layer/entities/user_metadata.dart'; +import '../../domain_layer/repositories/metadata_repository.dart'; +import '../data_sources/dart_ndk_source.dart'; +import '../models/user_metadata_model.dart'; + +class MetadataRepositoryImpl implements MetadataRepository { + final DartNdkSource dartNdkSource; + final ndk.EventVerifier eventVerifier; + + MetadataRepositoryImpl({ + required this.dartNdkSource, + required this.eventVerifier, + }); + + @override + Stream getMetadataByPubkey(String pubkey) { + final myMetadata = dartNdkSource.dartNdk.metadata.loadMetadata(pubkey); + + final Stream myMetadataStream = + myMetadata.asStream(); + + return myMetadataStream.where((event) => event != null).map( + (event) => UserMetadataModel.fromNDKMetadata(event!), + ); + } +} diff --git a/lib/domain_layer/repositories/metadata_repository.dart b/lib/domain_layer/repositories/metadata_repository.dart new file mode 100644 index 00000000..42913965 --- /dev/null +++ b/lib/domain_layer/repositories/metadata_repository.dart @@ -0,0 +1,5 @@ +import '../entities/user_metadata.dart'; + +abstract class MetadataRepository { + Stream getMetadataByPubkey(String pubkey); +} diff --git a/lib/domain_layer/repositories/note_repository.dart b/lib/domain_layer/repositories/note_repository.dart index 2892f2c8..70dd3110 100644 --- a/lib/domain_layer/repositories/note_repository.dart +++ b/lib/domain_layer/repositories/note_repository.dart @@ -1,13 +1,10 @@ -import 'package:camelus/domain_layer/entities/nostr_note.dart'; -import 'package:camelus/domain_layer/entities/user_metadata.dart'; +import '../entities/nostr_note.dart'; abstract class NoteRepository { Stream getAllNotes(); Stream getTextNote(String noteId); - Stream getMetadataByPubkey(String pubkey); - Stream getTextNotesByAuthors({ required List authors, required String requestId, diff --git a/lib/domain_layer/usecases/get_user_metadata.dart b/lib/domain_layer/usecases/get_user_metadata.dart index 3a9117a9..86d92ff6 100644 --- a/lib/domain_layer/usecases/get_user_metadata.dart +++ b/lib/domain_layer/usecases/get_user_metadata.dart @@ -1,12 +1,12 @@ import '../entities/user_metadata.dart'; -import '../repositories/note_repository.dart'; +import '../repositories/metadata_repository.dart'; class GetUserMetadata { - final NoteRepository _noteRepository; + final MetadataRepository _metadataRepository; - GetUserMetadata(this._noteRepository); + GetUserMetadata(this._metadataRepository); Stream getMetadataByPubkey(String pubkey) { - return _noteRepository.getMetadataByPubkey(pubkey); + return _metadataRepository.getMetadataByPubkey(pubkey); } } diff --git a/lib/presentation_layer/providers/metadata_provider.dart b/lib/presentation_layer/providers/metadata_provider.dart index c83d6f8c..60475f68 100644 --- a/lib/presentation_layer/providers/metadata_provider.dart +++ b/lib/presentation_layer/providers/metadata_provider.dart @@ -1,11 +1,12 @@ -import 'package:camelus/data_layer/data_sources/dart_ndk_source.dart'; -import 'package:camelus/data_layer/repositories/note_repository_impl.dart'; -import 'package:camelus/domain_layer/repositories/note_repository.dart'; -import 'package:camelus/domain_layer/usecases/get_user_metadata.dart'; -import 'package:camelus/presentation_layer/providers/event_verifier.dart'; -import 'package:camelus/presentation_layer/providers/ndk_provider.dart'; import 'package:riverpod/riverpod.dart'; +import '../../data_layer/data_sources/dart_ndk_source.dart'; +import '../../data_layer/repositories/metadata_repository_impl.dart'; +import '../../domain_layer/repositories/metadata_repository.dart'; +import '../../domain_layer/usecases/get_user_metadata.dart'; +import 'event_verifier.dart'; +import 'ndk_provider.dart'; + final metadataProvider = Provider((ref) { final ndk = ref.watch(ndkProvider); @@ -13,12 +14,12 @@ final metadataProvider = Provider((ref) { final DartNdkSource dartNdkSource = DartNdkSource(ndk); - final NoteRepository noteRepository = NoteRepositoryImpl( + final MetadataRepository metadataRepository = MetadataRepositoryImpl( dartNdkSource: dartNdkSource, eventVerifier: eventVerifier, ); - final GetUserMetadata getUserMetadata = GetUserMetadata(noteRepository); + final GetUserMetadata getUserMetadata = GetUserMetadata(metadataRepository); return getUserMetadata; });