From 47892e30369b2dee29ed765d669f591d2902b164 Mon Sep 17 00:00:00 2001 From: LeoLox <58687994+leo-lox@users.noreply.github.com> Date: Wed, 30 Oct 2024 17:31:08 +0100 Subject: [PATCH] follow state --- .../repositories/follow_repository_impl.dart | 18 ++++++++++++------ .../repositories/follow_repository.dart | 4 ++-- lib/domain_layer/usecases/follow.dart | 4 ++-- .../routes/nostr/profile/follower_page.dart | 14 ++++++++++---- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/lib/data_layer/repositories/follow_repository_impl.dart b/lib/data_layer/repositories/follow_repository_impl.dart index 898da162..6c453954 100644 --- a/lib/data_layer/repositories/follow_repository_impl.dart +++ b/lib/data_layer/repositories/follow_repository_impl.dart @@ -60,16 +60,22 @@ class FollowRepositoryImpl implements FollowRepository { } @override - Future followUser(String npub) async { - final newContactList = + Future followUser(String npub) async { + final ndk_entities.ContactList newContactList = await dartNdkSource.dartNdk.follows.broadcastAddContact(npub); - print(newContactList.contacts); + + return ContactListModel.fromNdk(newContactList); } @override - Future unfollowUser(String npub) async { - final newContactList = + Future unfollowUser(String npub) async { + final ndk_entities.ContactList? newContactList = await dartNdkSource.dartNdk.follows.broadcastRemoveContact(npub); - print(newContactList?.contacts); + + if (newContactList == null) { + return null; + } + + return ContactListModel.fromNdk(newContactList); } } diff --git a/lib/domain_layer/repositories/follow_repository.dart b/lib/domain_layer/repositories/follow_repository.dart index 7e9a240c..4f0cf668 100644 --- a/lib/domain_layer/repositories/follow_repository.dart +++ b/lib/domain_layer/repositories/follow_repository.dart @@ -3,9 +3,9 @@ import 'package:camelus/domain_layer/entities/contact_list.dart'; abstract class FollowRepository { FollowRepository(); - Future followUser(String npub); + Future followUser(String npub); - Future unfollowUser(String npub); + Future unfollowUser(String npub); Future setFollowing(ContactList contactList); diff --git a/lib/domain_layer/usecases/follow.dart b/lib/domain_layer/usecases/follow.dart index 2e8f51bc..6c6c78cd 100644 --- a/lib/domain_layer/usecases/follow.dart +++ b/lib/domain_layer/usecases/follow.dart @@ -19,11 +19,11 @@ class Follow { } } - Future followUser(String npub) async { + Future followUser(String npub) async { return followRepository.followUser(npub); } - Future unfollowUser(String npub) async { + Future unfollowUser(String npub) async { return followRepository.unfollowUser(npub); } diff --git a/lib/presentation_layer/routes/nostr/profile/follower_page.dart b/lib/presentation_layer/routes/nostr/profile/follower_page.dart index be1a3a1c..0bce15e3 100644 --- a/lib/presentation_layer/routes/nostr/profile/follower_page.dart +++ b/lib/presentation_layer/routes/nostr/profile/follower_page.dart @@ -26,18 +26,24 @@ class FollowerPage extends ConsumerStatefulWidget { class _FollowerPageState extends ConsumerState { /// follow Change - true to add, false to remove - void _changeFollowing( - bool followChange, String pubkey, ContactList currentOwnContacts) async { + Future _changeFollowing( + bool followChange, + String pubkey, + ContactList currentOwnContacts, + ) async { final followService = ref.read(followingProvider); List newContacts = [...currentOwnContacts.contacts]; if (followChange) { newContacts.add(pubkey); - followService.followUser(pubkey); + await followService.followUser(pubkey); } else { newContacts.removeWhere((element) => element == pubkey); - followService.unfollowUser(pubkey); + await followService.unfollowUser(pubkey); } + setState(() { + currentOwnContacts.contacts = newContacts; + }); } @override