diff --git a/lib/presentation_layer/providers/app_update_provider.dart b/lib/presentation_layer/providers/app_update_provider.dart index e49eaa9..fdf3053 100644 --- a/lib/presentation_layer/providers/app_update_provider.dart +++ b/lib/presentation_layer/providers/app_update_provider.dart @@ -1,4 +1,4 @@ -import 'package:camelus/data_layer/repositories/app_update_repository_impl.dart'; +import 'package:camelus/data_layer/repositories/app_update_repository_impl.dart'; import 'package:camelus/domain_layer/repositories/app_update_repository.dart'; import 'package:camelus/domain_layer/usecases/check_app_update.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -6,13 +6,20 @@ import 'package:http/http.dart' as http; import '../../data_layer/data_sources/http_request_data_source.dart'; +// Provider for checking app updates. +// interacts with the AppUpdateRepository to check for app updates. final appUpdateProvider = Provider((ref) { + // Creating an HTTP client for making requests to the data source. final http.Client client = http.Client(); + + // Creating an instance of HttpRequestDataSource, which handles HTTP requests. final HttpRequestDataSource dataSource = HttpRequestDataSource(client); + final AppUpdateRepository appUpdateRepository = AppUpdateRepositoryImpl(httpJsonDataSource: dataSource); final CheckAppUpdate appUpdate = CheckAppUpdate(appUpdateRepository); + // Returning the CheckAppUpdate instance, which will be used by consumers. return appUpdate; }); diff --git a/lib/presentation_layer/providers/event_verifier.dart b/lib/presentation_layer/providers/event_verifier.dart index 6192fd6..416a97d 100644 --- a/lib/presentation_layer/providers/event_verifier.dart +++ b/lib/presentation_layer/providers/event_verifier.dart @@ -1,25 +1,32 @@ -import 'package:ndk/ndk.dart'; +import 'package:ndk/ndk.dart'; import 'package:ndk/entities.dart' as ndk_entities; import 'package:riverpod/riverpod.dart'; +// Provider for the EventVerifier, which provides an instance of a specific event verifier. +// Currently set to use the RustEventVerifier. final eventVerifierProvider = Provider((ref) { + // Creating instances of different EventVerifiers (Bip340, Mock, Rust). final EventVerifier eventVerifier = Bip340EventVerifier(); final EventVerifier mockEventVerifier = MockEventVerifier(); final RustEventVerifier rustEventVerifier = RustEventVerifier(); + return rustEventVerifier; }); +/// This mock verifier returns a fixed result, controlled by the constructor. class MockEventVerifier implements EventVerifier { bool _result = true; - /// If [result] is false, [verify] will always return false. Default is true. + + /// The result parameter controls whether verify always returns true or false. MockEventVerifier({bool result = true}) { - _result = result; + _result = result; } + /// Verifies the event, returning a fixed result. @override Future verify(ndk_entities.Nip01Event event) async { - return _result; + return _result; // Return the mock result } } diff --git a/lib/presentation_layer/providers/following_provider.dart b/lib/presentation_layer/providers/following_provider.dart index 5fe7ecb..ca05045 100644 --- a/lib/presentation_layer/providers/following_provider.dart +++ b/lib/presentation_layer/providers/following_provider.dart @@ -1,4 +1,4 @@ -import 'package:camelus/data_layer/repositories/follow_repository_impl.dart'; +import 'package:camelus/data_layer/repositories/follow_repository_impl.dart'; import 'package:camelus/domain_layer/repositories/follow_repository.dart'; import 'package:camelus/domain_layer/usecases/follow.dart'; import 'package:camelus/presentation_layer/providers/event_signer_provider.dart'; @@ -9,6 +9,8 @@ import '../../data_layer/data_sources/dart_ndk_source.dart'; import 'event_verifier.dart'; import 'ndk_provider.dart'; +// Provider for managing the "Follow" use case. +// which interacts with the FollowRepository to manage follow actions. final followingProvider = Provider((ref) { final ndk = ref.watch(ndkProvider); @@ -18,14 +20,17 @@ final followingProvider = Provider((ref) { final DartNdkSource dartNdkSource = DartNdkSource(ndk); + // Creates an instance of FollowRepository, passing the data source, event verifier and event signer. final FollowRepository _followRepository = FollowRepositoryImpl( dartNdkSource: dartNdkSource, eventVerifier: eventVerifier, eventSigner: eventSigner, ); + // Watches the eventSignerProvider again to get the signer for the user's public key. final signerP = ref.watch(eventSignerProvider); + // Creates an instance of the Follow use case, passing the follow repository and user's public key. final follow = Follow( followRepository: _followRepository, selfPubkey: signerP?.getPublicKey(),