fix: crash when user card avatar cannot be loaded

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2025-10-05 19:10:02 +02:00
parent 37aaa8f49e
commit ffb4886a79
1 changed files with 10 additions and 3 deletions

View File

@ -60,11 +60,14 @@ import chat.stoat.api.schemas.User
import chat.stoat.composables.generic.UserAvatar import chat.stoat.composables.generic.UserAvatar
import chat.stoat.ui.theme.FragmentMono import chat.stoat.ui.theme.FragmentMono
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.GlideException
import com.google.zxing.BarcodeFormat import com.google.zxing.BarcodeFormat
import com.google.zxing.EncodeHintType import com.google.zxing.EncodeHintType
import com.google.zxing.qrcode.QRCodeWriter import com.google.zxing.qrcode.QRCodeWriter
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import logcat.asLog
import logcat.logcat
import java.time.Instant import java.time.Instant
import java.util.Date import java.util.Date
@ -80,10 +83,14 @@ fun UserCard(
var palette by remember { mutableStateOf<Palette?>(null) } var palette by remember { mutableStateOf<Palette?>(null) }
LaunchedEffect(user) { LaunchedEffect(user) {
val avatarUrl = ResourceLocations.userAvatarUrl(user) val avatarUrl = ResourceLocations.userAvatarUrl(user)
val bitmap = withContext(Dispatchers.IO) { try {
Glide.with(context).load(avatarUrl).submit().get().toBitmap() val bitmap = withContext(Dispatchers.IO) {
Glide.with(context).load(avatarUrl).submit().get().toBitmap()
}
palette = Palette.from(bitmap).generate()
} catch (e: Exception) {
logcat { "Failed to extract palette from avatar.\n" + e.asLog() }
} }
palette = Palette.from(bitmap).generate()
} }
var qrCode by remember(user) { mutableStateOf<Bitmap?>(null) } var qrCode by remember(user) { mutableStateOf<Bitmap?>(null) }