From 6056d60d3272502c51c8af1929459806fe5a23c9 Mon Sep 17 00:00:00 2001 From: greenart7c3 <115044884+greenart7c3@users.noreply.github.com> Date: Wed, 28 Jun 2023 15:37:24 -0300 Subject: [PATCH] added followed tags in profile screen --- .../ui/screen/loggedIn/HashtagScreen.kt | 7 ++- .../ui/screen/loggedIn/ProfileScreen.kt | 46 ++++++++++++++++++- app/src/main/res/values/strings.xml | 1 + 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HashtagScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HashtagScreen.kt index ae2e29faa..c828decec 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HashtagScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HashtagScreen.kt @@ -1,5 +1,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -85,8 +86,10 @@ fun HashtagScreen(tag: String?, accountViewModel: AccountViewModel, nav: (String } @Composable -fun HashtagHeader(tag: String, account: AccountViewModel) { - Column() { +fun HashtagHeader(tag: String, account: AccountViewModel, onClick: () -> Unit = { }) { + Column( + Modifier.clickable { onClick() } + ) { Column(modifier = Modifier.padding(12.dp)) { Row(verticalAlignment = Alignment.CenterVertically) { Column( 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 94f9a40a3..cda65d55c 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 @@ -426,8 +426,9 @@ private fun CreateAndRenderPages( 3 -> TabFollowers(baseUser, followersFeedViewModel, accountViewModel, nav) 4 -> TabReceivedZaps(baseUser, zapFeedViewModel, accountViewModel, nav) 5 -> TabBookmarks(bookmarksFeedViewModel, accountViewModel, nav) - 6 -> TabReports(baseUser, reportsFeedViewModel, accountViewModel, nav) - 7 -> TabRelays(baseUser, accountViewModel, nav) + 6 -> TabFollowedTags(baseUser, accountViewModel, nav) + 7 -> TabReports(baseUser, reportsFeedViewModel, accountViewModel, nav) + 8 -> TabRelays(baseUser, accountViewModel, nav) } } @@ -446,6 +447,7 @@ private fun CreateAndRenderTabs( { FollowersTabHeader(baseUser) }, { ZapTabHeader(baseUser) }, { BookmarkTabHeader(baseUser) }, + { FollowedTagsTabHeader(baseUser) }, { ReportsTabHeader(baseUser) }, { RelaysTabHeader(baseUser) } ) @@ -490,6 +492,25 @@ private fun ReportsTabHeader(baseUser: User) { Text(text = "$userReports ${stringResource(R.string.reports)}") } +@Composable +private fun FollowedTagsTabHeader(baseUser: User) { + var usertags by remember { mutableStateOf(0) } + + LaunchedEffect(key1 = baseUser) { + launch(Dispatchers.IO) { + val contactList = baseUser?.latestContactList + + val newTags = (contactList?.verifiedFollowTagSet?.count() ?: 0) + + if (newTags != usertags) { + usertags = newTags + } + } + } + + Text(text = "$usertags ${stringResource(R.string.followed_tags)}") +} + @Composable private fun BookmarkTabHeader(baseUser: User) { val userState by baseUser.live().bookmarks.observeAsState() @@ -1277,6 +1298,27 @@ fun TabNotesConversations(feedViewModel: NostrUserProfileConversationsFeedViewMo } } +@Composable +fun TabFollowedTags(baseUser: User, account: AccountViewModel, nav: (String) -> Unit) { + Column(Modifier.fillMaxHeight()) { + Column( + modifier = Modifier.padding(vertical = 0.dp) + ) { + baseUser.latestContactList?.let { + it.unverifiedFollowTagSet().forEach { hashtag -> + HashtagHeader( + tag = hashtag, + account = account, + onClick = { + nav("Hashtag/$hashtag") + } + ) + } + } + } + } +} + @Composable fun TabBookmarks(feedViewModel: NostrUserProfileBookmarksFeedViewModel, accountViewModel: AccountViewModel, nav: (String) -> Unit) { LaunchedEffect(Unit) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32a89cf2c..87d76e5c7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -467,4 +467,5 @@ Livestream is Offline Livestream Ended Logging out deletes all your local information. Make sure to have your private keys backed up to avoid losing your account. Do you want to continue? + Followed Tags