Moves some of the account observables to maps

This commit is contained in:
Vitor Pamplona
2023-06-23 17:57:02 -04:00
parent 8c73e981b5
commit 9e57a706ae
2 changed files with 26 additions and 28 deletions
@@ -8,11 +8,9 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Icon import androidx.compose.material.Icon
import androidx.compose.material.IconButton import androidx.compose.material.IconButton
@@ -35,7 +33,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
@@ -43,6 +40,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
import androidx.lifecycle.map
import com.vitorpamplona.amethyst.AccountInfo import com.vitorpamplona.amethyst.AccountInfo
import com.vitorpamplona.amethyst.LocalPreferences import com.vitorpamplona.amethyst.LocalPreferences
import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.R
@@ -57,6 +55,7 @@ import com.vitorpamplona.amethyst.ui.note.toShortenHex
import com.vitorpamplona.amethyst.ui.screen.AccountStateViewModel import com.vitorpamplona.amethyst.ui.screen.AccountStateViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedOff.LoginPage import com.vitorpamplona.amethyst.ui.screen.loggedOff.LoginPage
import com.vitorpamplona.amethyst.ui.theme.AccountPictureModifier
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -146,9 +145,12 @@ fun DisplayAccount(
baseUser?.let { baseUser?.let {
Row( Row(
modifier = Modifier.fillMaxWidth().clickable { modifier = Modifier
accountStateViewModel.switchUser(acc.npub) .fillMaxWidth()
}.padding(16.dp, 16.dp), .clickable {
accountStateViewModel.switchUser(acc.npub)
}
.padding(16.dp, 16.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Row( Row(
@@ -160,7 +162,9 @@ fun DisplayAccount(
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Box( Box(
modifier = Modifier.width(55.dp).padding(0.dp) modifier = Modifier
.width(55.dp)
.padding(0.dp)
) { ) {
AccountPicture(it) AccountPicture(it)
} }
@@ -198,21 +202,15 @@ private fun ActiveMarker(acc: AccountInfo, accountViewModel: AccountViewModel) {
@Composable @Composable
private fun AccountPicture(user: User) { private fun AccountPicture(user: User) {
val userState by user.live().metadata.observeAsState() val profilePicture by user.live().metadata.map {
val profilePicture by remember(userState) { it.user.profilePicture()
derivedStateOf { }.observeAsState()
userState?.user?.profilePicture()
}
}
RobohashAsyncImageProxy( RobohashAsyncImageProxy(
robot = remember(user) { user.pubkeyHex }, robot = remember(user) { user.pubkeyHex },
model = profilePicture, model = profilePicture,
contentDescription = stringResource(R.string.profile_image), contentDescription = stringResource(R.string.profile_image),
modifier = Modifier modifier = AccountPictureModifier
.width(55.dp)
.height(55.dp)
.clip(shape = CircleShape)
) )
} }
@@ -221,17 +219,13 @@ private fun AccountName(
acc: AccountInfo, acc: AccountInfo,
user: User user: User
) { ) {
val userState by user.live().metadata.observeAsState() val displayName by user.live().metadata.map {
val displayName by remember(userState) { user.bestDisplayName()
derivedStateOf { }.observeAsState()
user.bestDisplayName()
} val tags by user.live().metadata.map {
} user.info?.latestMetadata?.tags?.toImmutableListOfLists()
val tags by remember(userState) { }.observeAsState()
derivedStateOf {
user.info?.latestMetadata?.tags?.toImmutableListOfLists()
}
}
displayName?.let { displayName?.let {
CreateTextWithEmoji( CreateTextWithEmoji(
@@ -6,9 +6,11 @@ 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.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Shapes import androidx.compose.material.Shapes
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
val Shapes = Shapes( val Shapes = Shapes(
@@ -75,3 +77,5 @@ val DiviserThickness = 0.25.dp
val ReactionRowHeight = Modifier.height(24.dp).padding(start = 10.dp) val ReactionRowHeight = Modifier.height(24.dp).padding(start = 10.dp)
val Height4dpModifier = Modifier.height(4.dp) val Height4dpModifier = Modifier.height(4.dp)
val AccountPictureModifier = Modifier.width(55.dp).height(55.dp).clip(shape = CircleShape)