Skip to content

Commit

Permalink
sync: main feed perstance fix
Browse files Browse the repository at this point in the history
  • Loading branch information
leo-lox committed Oct 15, 2024
1 parent d0ec592 commit 4e1139b
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 14 deletions.
6 changes: 4 additions & 2 deletions lib/data_layer/repositories/follow_repository_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,10 @@ class FollowRepositoryImpl implements FollowRepository {
@override
Future<void> 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
Expand Down
28 changes: 21 additions & 7 deletions lib/presentation_layer/providers/main_feed_provider.dart
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -25,37 +27,40 @@ final getMainFeedProvider = Provider<MainFeed>((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 =
NotifierProvider.family<MainFeedState, List<NostrNote>, String>(
MainFeedState.new);

class MainFeedState extends FamilyNotifier<List<NostrNote>, String> {
StreamSubscription<List<NostrNote>>? mainFeedSub;

@override
List<NostrNote> build(String arg) {
init(arg);
start(arg);
return [];
}

void addEvents(List<NostrNote> events) {
void _addEvents(List<NostrNote> 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(
milliseconds: 500,
))
.where((events) => events.isNotEmpty);

eventStreamBuffer.listen((events) {
addEvents(events);
mainFeedSub = eventStreamBuffer.listen((events) {
_addEvents(events);
//ref.read(userFeedStateProvider.notifier).addEvents(events);
});

Expand All @@ -65,4 +70,13 @@ class MainFeedState extends FamilyNotifier<List<NostrNote>, String> {
limit: 20,
);
}

Future<void> stop() async {
//! todo: stop feed
final mainFeedProvider = ref.read(getMainFeedProvider);

mainFeedSub?.cancel();
mainFeedSub = null;
state = [];
}
}
10 changes: 5 additions & 5 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -842,7 +842,7 @@ packages:
path: "../ndk"
relative: true
source: path
version: "0.1.1"
version: "0.1.2"
node_preamble:
dependency: transitive
description:
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 4e1139b

Please sign in to comment.