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.size
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.PagerState
import androidx.compose.foundation.pager.rememberPagerState
@ -621,17 +623,11 @@ private fun ReportsTabHeader(baseUser: User) {
@Composable
private fun FollowedTagsTabHeader(baseUser: User) {
var usertags by remember { mutableIntStateOf(0) }
val userState by baseUser.live().follows.observeAsState()
LaunchedEffect(key1 = baseUser) {
launch(Dispatchers.IO) {
val contactList = baseUser.latestContactList
val newTags = (contactList?.verifiedFollowTagSet?.count() ?: 0)
if (newTags != usertags) {
usertags = newTags
}
val usertags by remember(baseUser) {
derivedStateOf {
userState?.user?.latestContactList?.countFollowTags() ?: 0
}
}
@ -1540,9 +1536,15 @@ fun TabFollowedTags(
account: AccountViewModel,
nav: (String) -> Unit,
) {
val items =
remember(baseUser) {
baseUser.latestContactList?.unverifiedFollowTagSet()
}
Column(Modifier.fillMaxHeight().padding(vertical = 0.dp)) {
baseUser.latestContactList?.let {
it.unverifiedFollowTagSet().forEach { hashtag ->
items?.let {
LazyColumn {
itemsIndexed(items) { index, hashtag ->
HashtagHeader(
tag = hashtag,
account = account,
@ -1555,6 +1557,7 @@ fun TabFollowedTags(
}
}
}
}
@Composable
fun TabBookmarks(

View File

@ -82,6 +82,8 @@ class ContactListEvent(
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 unverifiedFollowAddressSet() = tags.filter { it.size > 1 && it[0] == "a" }.mapNotNull { it.getOrNull(1) }