Avoids using remember for Fixed avatars.

This commit is contained in:
Vitor Pamplona
2023-02-14 14:25:26 -05:00
parent 5e5ea32be1
commit e3ed676624
9 changed files with 44 additions and 34 deletions
@@ -34,6 +34,7 @@ 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.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.BitmapPainter
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontStyle
@@ -117,7 +118,8 @@ fun MainTopBar(scaffoldState: ScaffoldState, accountViewModel: AccountViewModel)
Box(Modifier) { Box(Modifier) {
Column( Column(
modifier = Modifier modifier = Modifier
.fillMaxWidth().fillMaxHeight() .fillMaxWidth()
.fillMaxHeight()
.padding(start = 0.dp, end = 20.dp), .padding(start = 0.dp, end = 20.dp),
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center verticalArrangement = Arrangement.Center
@@ -209,9 +211,9 @@ fun MainTopBar(scaffoldState: ScaffoldState, accountViewModel: AccountViewModel)
) { ) {
AsyncImage( AsyncImage(
model = accountUser.profilePicture(), model = accountUser.profilePicture(),
placeholder = rememberAsyncImagePainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)), placeholder = BitmapPainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)),
fallback = rememberAsyncImagePainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)), fallback = BitmapPainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)),
error = rememberAsyncImagePainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)), error = BitmapPainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)),
contentDescription = "Profile Image", contentDescription = "Profile Image",
modifier = Modifier modifier = Modifier
.width(34.dp) .width(34.dp)
@@ -71,6 +71,7 @@ import com.google.zxing.qrcode.encoder.ByteMatrix
import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.Path
import androidx.compose.ui.graphics.PathFillType import androidx.compose.ui.graphics.PathFillType
import androidx.compose.ui.graphics.painter.BitmapPainter
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import com.vitorpamplona.amethyst.RoboHashCache import com.vitorpamplona.amethyst.RoboHashCache
@@ -154,9 +155,9 @@ fun ProfileContent(baseAccountUser: User, modifier: Modifier = Modifier, scaffol
AsyncImage( AsyncImage(
model = accountUser.profilePicture(), model = accountUser.profilePicture(),
contentDescription = "Profile Image", contentDescription = "Profile Image",
placeholder = rememberAsyncImagePainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)), placeholder = BitmapPainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)),
fallback = rememberAsyncImagePainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)), fallback = BitmapPainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)),
error = rememberAsyncImagePainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)), error = BitmapPainter(RoboHashCache.get(ctx, accountUser.pubkeyHex)),
modifier = Modifier modifier = Modifier
.width(100.dp) .width(100.dp)
.height(100.dp) .height(100.dp)
@@ -26,6 +26,7 @@ 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.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.BitmapPainter
import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
@@ -86,7 +87,7 @@ fun ChatroomCompose(baseNote: Note, accountViewModel: AccountViewModel, navContr
ChannelName( ChannelName(
channelPicture = channel.profilePicture(), channelPicture = channel.profilePicture(),
channelPicturePlaceholder = rememberAsyncImagePainter(RoboHashCache.get(context, channel.idHex)), channelPicturePlaceholder = BitmapPainter(RoboHashCache.get(context, channel.idHex)),
channelTitle = { channelTitle = {
Text( Text(
"${channel.info.name}", "${channel.info.name}",
@@ -42,6 +42,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.graphics.ColorMatrix import androidx.compose.ui.graphics.ColorMatrix
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.graphics.painter.BitmapPainter
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
@@ -162,9 +163,9 @@ fun ChatroomMessageCompose(baseNote: Note, routeForLastRead: String?, innerQuote
) { ) {
AsyncImage( AsyncImage(
model = author.profilePicture(), model = author.profilePicture(),
placeholder = rememberAsyncImagePainter(RoboHashCache.get(context, author.pubkeyHex)), placeholder = BitmapPainter(RoboHashCache.get(context, author.pubkeyHex)),
fallback = rememberAsyncImagePainter(RoboHashCache.get(context, author.pubkeyHex)), fallback = BitmapPainter(RoboHashCache.get(context, author.pubkeyHex)),
error = rememberAsyncImagePainter(RoboHashCache.get(context, author.pubkeyHex)), error = BitmapPainter(RoboHashCache.get(context, author.pubkeyHex)),
contentDescription = "Profile Image", contentDescription = "Profile Image",
modifier = Modifier modifier = Modifier
.width(25.dp) .width(25.dp)
@@ -288,9 +289,9 @@ private fun RelayBadges(baseNote: Note) {
Box(Modifier.size(15.dp).padding(1.dp)) { Box(Modifier.size(15.dp).padding(1.dp)) {
AsyncImage( AsyncImage(
model = "https://${url}/favicon.ico", model = "https://${url}/favicon.ico",
placeholder = rememberAsyncImagePainter(RoboHashCache.get(ctx, url)), placeholder = BitmapPainter(RoboHashCache.get(ctx, url)),
fallback = rememberAsyncImagePainter(RoboHashCache.get(ctx, url)), fallback = BitmapPainter(RoboHashCache.get(ctx, url)),
error = rememberAsyncImagePainter(RoboHashCache.get(ctx, url)), error = BitmapPainter(RoboHashCache.get(ctx, url)),
contentDescription = "Relay Icon", contentDescription = "Relay Icon",
colorFilter = ColorFilter.colorMatrix(ColorMatrix().apply { setToSaturation(0f) }), colorFilter = ColorFilter.colorMatrix(ColorMatrix().apply { setToSaturation(0f) }),
modifier = Modifier modifier = Modifier
@@ -43,6 +43,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.graphics.ColorMatrix import androidx.compose.ui.graphics.ColorMatrix
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.graphics.painter.BitmapPainter
import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
@@ -196,9 +197,9 @@ fun NoteCompose(
.align(Alignment.BottomEnd)) { .align(Alignment.BottomEnd)) {
AsyncImage( AsyncImage(
model = channel.profilePicture(), model = channel.profilePicture(),
placeholder = rememberAsyncImagePainter(RoboHashCache.get(context, channel.idHex)), placeholder = BitmapPainter(RoboHashCache.get(context, channel.idHex)),
fallback = rememberAsyncImagePainter(RoboHashCache.get(context, channel.idHex)), fallback = BitmapPainter(RoboHashCache.get(context, channel.idHex)),
error = rememberAsyncImagePainter(RoboHashCache.get(context, channel.idHex)), error = BitmapPainter(RoboHashCache.get(context, channel.idHex)),
contentDescription = "Group Picture", contentDescription = "Group Picture",
modifier = Modifier modifier = Modifier
.width(30.dp) .width(30.dp)
@@ -339,9 +340,9 @@ private fun RelayBadges(baseNote: Note) {
.padding(1.dp)) { .padding(1.dp)) {
AsyncImage( AsyncImage(
model = "https://${url}/favicon.ico", model = "https://${url}/favicon.ico",
placeholder = rememberAsyncImagePainter(RoboHashCache.get(ctx, url)), placeholder = BitmapPainter(RoboHashCache.get(ctx, url)),
fallback = rememberAsyncImagePainter(RoboHashCache.get(ctx, url)), fallback = BitmapPainter(RoboHashCache.get(ctx, url)),
error = rememberAsyncImagePainter(RoboHashCache.get(ctx, url)), error = BitmapPainter(RoboHashCache.get(ctx, url)),
contentDescription = "Relay Icon", contentDescription = "Relay Icon",
colorFilter = ColorFilter.colorMatrix(ColorMatrix().apply { setToSaturation(0f) }), colorFilter = ColorFilter.colorMatrix(ColorMatrix().apply { setToSaturation(0f) }),
modifier = Modifier modifier = Modifier
@@ -410,7 +411,7 @@ fun NoteAuthorPicture(
.height(size)) { .height(size)) {
if (author == null) { if (author == null) {
Image( Image(
painter = rememberAsyncImagePainter(RoboHashCache.get(ctx, "ohnothisauthorisnotfound")), painter = BitmapPainter(RoboHashCache.get(ctx, "ohnothisauthorisnotfound")),
contentDescription = "Unknown Author", contentDescription = "Unknown Author",
modifier = pictureModifier modifier = pictureModifier
.fillMaxSize(1f) .fillMaxSize(1f)
@@ -457,9 +458,9 @@ fun UserPicture(
AsyncImage( AsyncImage(
model = user.profilePicture(), model = user.profilePicture(),
contentDescription = "Profile Image", contentDescription = "Profile Image",
placeholder = rememberAsyncImagePainter(RoboHashCache.get(ctx, user.pubkeyHex)), placeholder = BitmapPainter(RoboHashCache.get(ctx, user.pubkeyHex)),
fallback = rememberAsyncImagePainter(RoboHashCache.get(ctx, user.pubkeyHex)), fallback = BitmapPainter(RoboHashCache.get(ctx, user.pubkeyHex)),
error = rememberAsyncImagePainter(RoboHashCache.get(ctx, user.pubkeyHex)), error = BitmapPainter(RoboHashCache.get(ctx, user.pubkeyHex)),
modifier = pictureModifier modifier = pictureModifier
.fillMaxSize(1f) .fillMaxSize(1f)
.clip(shape = CircleShape) .clip(shape = CircleShape)
@@ -27,6 +27,7 @@ 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.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.BitmapPainter
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@@ -81,9 +82,9 @@ fun ShowQRDialog(user: User, onScan: (String) -> Unit, onClose: () -> Unit) {
Row(horizontalArrangement = Arrangement.Center, modifier = Modifier.fillMaxWidth()) { Row(horizontalArrangement = Arrangement.Center, modifier = Modifier.fillMaxWidth()) {
AsyncImage( AsyncImage(
model = user.profilePicture(), model = user.profilePicture(),
placeholder = rememberAsyncImagePainter(RoboHashCache.get(ctx, user.pubkeyHex)), placeholder = BitmapPainter(RoboHashCache.get(ctx, user.pubkeyHex)),
fallback = rememberAsyncImagePainter(RoboHashCache.get(ctx, user.pubkeyHex)), fallback = BitmapPainter(RoboHashCache.get(ctx, user.pubkeyHex)),
error = rememberAsyncImagePainter(RoboHashCache.get(ctx, user.pubkeyHex)), error = BitmapPainter(RoboHashCache.get(ctx, user.pubkeyHex)),
contentDescription = "Profile Image", contentDescription = "Profile Image",
modifier = Modifier modifier = Modifier
.width(100.dp) .width(100.dp)
@@ -38,6 +38,7 @@ 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.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.BitmapPainter
import androidx.compose.ui.platform.ClipboardManager import androidx.compose.ui.platform.ClipboardManager
import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
@@ -158,9 +159,9 @@ fun ChannelHeader(baseChannel: Channel, account: Account, accountStateViewModel:
AsyncImage( AsyncImage(
model = channel.profilePicture(), model = channel.profilePicture(),
placeholder = rememberAsyncImagePainter(RoboHashCache.get(context, channel.idHex)), placeholder = BitmapPainter(RoboHashCache.get(context, channel.idHex)),
fallback = rememberAsyncImagePainter(RoboHashCache.get(context, channel.idHex)), fallback = BitmapPainter(RoboHashCache.get(context, channel.idHex)),
error = rememberAsyncImagePainter(RoboHashCache.get(context, channel.idHex)), error = BitmapPainter(RoboHashCache.get(context, channel.idHex)),
contentDescription = "Profile Image", contentDescription = "Profile Image",
modifier = Modifier modifier = Modifier
.width(35.dp) .width(35.dp)
@@ -29,6 +29,7 @@ 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.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.BitmapPainter
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardCapitalization
@@ -141,9 +142,9 @@ fun ChatroomHeader(baseUser: User, accountViewModel: AccountViewModel, navContro
AsyncImage( AsyncImage(
model = author.profilePicture(), model = author.profilePicture(),
placeholder = rememberAsyncImagePainter(RoboHashCache.get(ctx, author.pubkeyHex)), placeholder = BitmapPainter(RoboHashCache.get(ctx, author.pubkeyHex)),
fallback = rememberAsyncImagePainter(RoboHashCache.get(ctx, author.pubkeyHex)), fallback = BitmapPainter(RoboHashCache.get(ctx, author.pubkeyHex)),
error = rememberAsyncImagePainter(RoboHashCache.get(ctx, author.pubkeyHex)), error = BitmapPainter(RoboHashCache.get(ctx, author.pubkeyHex)),
contentDescription = "Profile Image", contentDescription = "Profile Image",
modifier = Modifier modifier = Modifier
.width(35.dp) .width(35.dp)
@@ -36,6 +36,7 @@ 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.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.BitmapPainter
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
@@ -238,7 +239,7 @@ private fun SearchBar(accountViewModel: AccountViewModel, navController: NavCont
itemsIndexed(searchResultsChannels.value, key = { _, item -> "c"+item.idHex }) { index, item -> itemsIndexed(searchResultsChannels.value, key = { _, item -> "c"+item.idHex }) { index, item ->
ChannelName( ChannelName(
channelPicture = item.profilePicture(), channelPicture = item.profilePicture(),
channelPicturePlaceholder = rememberAsyncImagePainter(RoboHashCache.get(ctx, item.idHex)), channelPicturePlaceholder = BitmapPainter(RoboHashCache.get(ctx, item.idHex)),
channelTitle = { channelTitle = {
Text( Text(
"${item.info.name}", "${item.info.name}",