diff --git a/lib/data_layer/repositories/follow_repository_impl.dart b/lib/data_layer/repositories/follow_repository_impl.dart index 23bad776..7e83c3f3 100644 --- a/lib/data_layer/repositories/follow_repository_impl.dart +++ b/lib/data_layer/repositories/follow_repository_impl.dart @@ -91,8 +91,10 @@ class FollowRepositoryImpl implements FollowRepository { @override Future setFollowing(ContactList contactList) { final ndkContactList = (contactList as ContactListModel).toNdk(); - return dartNdkSource.dartNdk.follows - .broadcastSetContacts(ndkContactList, [], eventSigner); + + throw UnimplementedError(); + // return dartNdkSource.dartNdk.follows + // .broadcastSetContacts(ndkContactList, [], eventSigner); } @override diff --git a/lib/presentation_layer/providers/main_feed_provider.dart b/lib/presentation_layer/providers/main_feed_provider.dart index 56d2f2cd..ae706962 100644 --- a/lib/presentation_layer/providers/main_feed_provider.dart +++ b/lib/presentation_layer/providers/main_feed_provider.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + 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'; @@ -25,9 +27,9 @@ final getMainFeedProvider = Provider((ref) { final Follow followProvider = ref.watch(followingProvider); - final MainFeed getNotes = MainFeed(noteRepository, followProvider); + final MainFeed mainFeed = MainFeed(noteRepository, followProvider); - return getNotes; + return mainFeed; }); final mainFeedStateProvider = @@ -35,18 +37,21 @@ final mainFeedStateProvider = MainFeedState.new); class MainFeedState extends FamilyNotifier, String> { + StreamSubscription>? mainFeedSub; + @override List build(String arg) { - init(arg); + start(arg); return []; } - void addEvents(List events) { + void _addEvents(List events) { state = [...state, ...events] ..sort((a, b) => b.created_at.compareTo(a.created_at)); } - void init(String pubkey) { + /// gets called on init + void start(String pubkey) { final mainFeedProvider = ref.read(getMainFeedProvider); final eventStreamBuffer = mainFeedProvider.stream .bufferTime(const Duration( @@ -54,8 +59,8 @@ class MainFeedState extends FamilyNotifier, String> { )) .where((events) => events.isNotEmpty); - eventStreamBuffer.listen((events) { - addEvents(events); + mainFeedSub = eventStreamBuffer.listen((events) { + _addEvents(events); //ref.read(userFeedStateProvider.notifier).addEvents(events); }); @@ -65,4 +70,13 @@ class MainFeedState extends FamilyNotifier, String> { limit: 20, ); } + + Future stop() async { + //! todo: stop feed + final mainFeedProvider = ref.read(getMainFeedProvider); + + mainFeedSub?.cancel(); + mainFeedSub = null; + state = []; + } } diff --git a/pubspec.lock b/pubspec.lock index c57149bb..4f5a7fa7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -516,10 +516,10 @@ packages: dependency: transitive description: name: flutter_rust_bridge - sha256: a43a6649385b853bc836ef2bc1b056c264d476c35e131d2d69c38219b5e799f1 + sha256: "0ad5079de35d317650fec59b26cb4d0c116ebc2ce703a29f9367513b8a91c287" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.5.0" flutter_secure_storage: dependency: "direct main" description: @@ -842,7 +842,7 @@ packages: path: "../ndk" relative: true source: path - version: "0.1.1" + version: "0.1.2" node_preamble: dependency: transitive description: @@ -1079,10 +1079,10 @@ packages: dependency: transitive description: name: rust_lib_ndk - sha256: f71e61e1a295fbdcac250a88b315518aca1d7a5533684b32e7c9c1b58e989ae7 + sha256: "7e14dea16bdc5cf1c0db12ce3714571f925602c2974844676aacf06a8b569f9b" url: "https://pub.dev" source: hosted - version: "0.1.1" + version: "0.1.2" rxdart: dependency: "direct main" description: