From b513877552f28b256bc01ba4d49b3768478a1d2a Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 28 May 2023 17:33:01 -0400 Subject: [PATCH] Optimizing UserProfile status --- .../ui/screen/loggedIn/ProfileScreen.kt | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt index 1fb9482eb..deeeccef8 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt @@ -439,20 +439,39 @@ private fun ProfileActions( coroutineScope: CoroutineScope ) { val accountUserState by account.userProfile().live().follows.observeAsState() + val accountLocalUserState by account.live.observeAsState() val accountUser = remember(accountUserState) { accountUserState?.user } ?: return + val isHidden by remember(accountUserState, accountLocalUserState) { + derivedStateOf { + account.isHidden(baseUser) + } + } + + val isLoggedInFollowingUser by remember(accountUserState, accountLocalUserState) { + derivedStateOf { + accountUser.isFollowingCached(baseUser) + } + } + + val isUserFollowingLoggedIn by remember(accountUserState, accountLocalUserState) { + derivedStateOf { + baseUser.isFollowingCached(accountUser) + } + } + if (accountUser == baseUser) { EditButton(account) } - if (account.isHidden(baseUser)) { + if (isHidden) { ShowUserButton { account.showUser(baseUser.pubkeyHex) } - } else if (accountUser.isFollowingCached(baseUser)) { + } else if (isLoggedInFollowingUser) { UnfollowButton { coroutineScope.launch(Dispatchers.IO) { account.unfollow(baseUser) } } } else { - if (baseUser.isFollowingCached(accountUser)) { + if (isUserFollowingLoggedIn) { FollowButton( { coroutineScope.launch(Dispatchers.IO) { account.follow(baseUser) } }, R.string.follow_back