Fixes the LazyColumn for Hashtags on Profile

This commit is contained in:
Vitor Pamplona 2024-06-07 19:28:20 -04:00
parent b182d409b6
commit 723e575b4b
2 changed files with 25 additions and 20 deletions

View File

@ -43,6 +43,8 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.pager.rememberPagerState
@ -621,17 +623,11 @@ private fun ReportsTabHeader(baseUser: User) {
@Composable @Composable
private fun FollowedTagsTabHeader(baseUser: User) { private fun FollowedTagsTabHeader(baseUser: User) {
var usertags by remember { mutableIntStateOf(0) } val userState by baseUser.live().follows.observeAsState()
LaunchedEffect(key1 = baseUser) { val usertags by remember(baseUser) {
launch(Dispatchers.IO) { derivedStateOf {
val contactList = baseUser.latestContactList userState?.user?.latestContactList?.countFollowTags() ?: 0
val newTags = (contactList?.verifiedFollowTagSet?.count() ?: 0)
if (newTags != usertags) {
usertags = newTags
}
} }
} }
@ -1540,17 +1536,24 @@ fun TabFollowedTags(
account: AccountViewModel, account: AccountViewModel,
nav: (String) -> Unit, nav: (String) -> Unit,
) { ) {
val items =
remember(baseUser) {
baseUser.latestContactList?.unverifiedFollowTagSet()
}
Column(Modifier.fillMaxHeight().padding(vertical = 0.dp)) { Column(Modifier.fillMaxHeight().padding(vertical = 0.dp)) {
baseUser.latestContactList?.let { items?.let {
it.unverifiedFollowTagSet().forEach { hashtag -> LazyColumn {
HashtagHeader( itemsIndexed(items) { index, hashtag ->
tag = hashtag, HashtagHeader(
account = account, tag = hashtag,
onClick = { nav("Hashtag/$hashtag") }, account = account,
) onClick = { nav("Hashtag/$hashtag") },
HorizontalDivider( )
thickness = DividerThickness, HorizontalDivider(
) thickness = DividerThickness,
)
}
} }
} }
} }

View File

@ -82,6 +82,8 @@ class ContactListEvent(
fun unverifiedFollowTagSet() = tags.filter { it.size > 1 && it[0] == "t" }.mapNotNull { it.getOrNull(1) } fun unverifiedFollowTagSet() = tags.filter { it.size > 1 && it[0] == "t" }.mapNotNull { it.getOrNull(1) }
fun countFollowTags() = tags.count { it.size > 1 && it[0] == "t" }
fun unverifiedFollowGeohashSet() = tags.filter { it.size > 1 && it[0] == "g" }.mapNotNull { it.getOrNull(1) } fun unverifiedFollowGeohashSet() = tags.filter { it.size > 1 && it[0] == "g" }.mapNotNull { it.getOrNull(1) }
fun unverifiedFollowAddressSet() = tags.filter { it.size > 1 && it[0] == "a" }.mapNotNull { it.getOrNull(1) } fun unverifiedFollowAddressSet() = tags.filter { it.size > 1 && it[0] == "a" }.mapNotNull { it.getOrNull(1) }