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