From 9d6e7560f041656be0ecb659c94a3c04ee794ce0 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 10 Apr 2025 12:14:18 -0300 Subject: [PATCH] Fix touch target for app toolbar avatar. --- .../securesms/avatar/AvatarImage.kt | 3 +-- .../settings/app/subscription/BadgeImage.kt | 1 + .../securesms/main/MainToolbar.kt | 24 ++++++++++++++----- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/avatar/AvatarImage.kt b/app/src/main/java/org/thoughtcrime/securesms/avatar/AvatarImage.kt index 8ab745091f..20fb043c43 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/avatar/AvatarImage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/avatar/AvatarImage.kt @@ -28,14 +28,13 @@ fun AvatarImage( modifier: Modifier = Modifier, useProfile: Boolean = true ) { - val context = LocalContext.current - if (LocalInspectionMode.current) { Spacer( modifier = modifier .background(color = Color.Red, shape = CircleShape) ) } else { + val context = LocalContext.current val state = recipient.live().liveData.map { AvatarImageState(NameUtil.getAbbreviation(it.getDisplayName(context)), it, AvatarHelper.getAvatarFileDetails(context, it.id)) }.observeAsState().value ?: return AndroidView( diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/BadgeImage.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/BadgeImage.kt index e5360ab6c1..6ce1a7e710 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/BadgeImage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/BadgeImage.kt @@ -64,6 +64,7 @@ private fun BadgeImage( }, update = { it.setBadge(badge) + it.isClickable = false }, modifier = modifier ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt index 584b8fca26..f352675e34 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt @@ -18,11 +18,12 @@ import androidx.compose.animation.core.tween import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -39,6 +40,7 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextFieldDefaults import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.ripple import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect @@ -302,18 +304,26 @@ private fun PrimaryToolbar( Box( contentAlignment = Alignment.Center, modifier = Modifier - .padding(start = 28.dp, end = 26.dp) - .fillMaxHeight() + .padding(start = 20.dp, end = 16.dp) + .size(48.dp) ) { AvatarImage( recipient = state.self, modifier = Modifier .clip(CircleShape) + .size(28.dp) + ) + + val interactionSource = remember { MutableInteractionSource() } + Box( + modifier = Modifier + .fillMaxSize() .clickable( onClick = callback::onSettingsClick, - onClickLabel = stringResource(R.string.conversation_list_settings_shortcut) + onClickLabel = stringResource(R.string.conversation_list_settings_shortcut), + interactionSource = interactionSource, + indication = ripple(radius = 14.dp) ) - .size(28.dp) ) BadgeImageSmall( @@ -698,7 +708,9 @@ private fun SearchToolbarPreview() { private fun ArchiveToolbarPreview() { Previews.Preview { ArchiveToolbar( - state = MainToolbarState(), + state = MainToolbarState( + self = Recipient(isResolving = false) + ), callback = MainToolbarCallback.Empty ) }