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 ae2e29faab..c828decec3 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 94f9a40a35..cda65d55c4 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 32a89cf2ca..87d76e5c78 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