From f0a8e44fdce56f2e88bd172dfeedca8f6aa34221 Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Fri, 16 Oct 2026 17:40:44 -0400 Subject: [PATCH] fix(messenger): draw Forward as Reply's mirror, like iOS Material's Forward is a straight block arrow. iOS uses arrowshape.turn.up.right.fill, the mirror of its Reply arrow, and Material has no equivalent, so the action bar now draws Reply's path flipped across x = 12. --- .../internal/screens/components/ChatTopBar.kt | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/apps/flipcash/features/messenger/src/main/kotlin/com/flipcash/app/messenger/internal/screens/components/ChatTopBar.kt b/apps/flipcash/features/messenger/src/main/kotlin/com/flipcash/app/messenger/internal/screens/components/ChatTopBar.kt index 8e5036c21..3b9afb5dc 100644 --- a/apps/flipcash/features/messenger/src/main/kotlin/com/flipcash/app/messenger/internal/screens/components/ChatTopBar.kt +++ b/apps/flipcash/features/messenger/src/main/kotlin/com/flipcash/app/messenger/internal/screens/components/ChatTopBar.kt @@ -24,8 +24,9 @@ import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.outlined.Edit import androidx.compose.material.icons.filled.Feedback +import androidx.compose.material.icons.materialIcon +import androidx.compose.material.icons.materialPath import com.flipcash.app.messenger.internal.screens.openMessageShare -import androidx.compose.material.icons.automirrored.filled.Forward import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.Icon @@ -309,7 +310,7 @@ private fun MessageSelectionBar( add( MessageAction( label = stringResource(R.string.action_forwardMessage), - icon = Icons.AutoMirrored.Filled.Forward, + icon = ForwardArrow, testTag = "action_share_message", onClick = { dispatch(ChatViewModel.Event.ShareMessageRequested) @@ -493,3 +494,20 @@ private fun OverflowLabel(text: String) { color = CodeTheme.colors.textMain, ) } + +// Material has no forward counterpart to Reply, and its Forward is a straight block arrow. iOS draws +// Forward as Reply's mirror (arrowshape.turn.up.right.fill), so this is Reply's path flipped across x = 12. +private val ForwardArrow: ImageVector by lazy { + materialIcon(name = "Flipcash.ForwardArrow", autoMirror = true) { + materialPath { + moveTo(14.0f, 9.0f) + verticalLineTo(5.0f) + lineToRelative(7.0f, 7.0f) + lineToRelative(-7.0f, 7.0f) + verticalLineToRelative(-4.1f) + curveToRelative(-5.0f, 0.0f, -8.5f, 1.6f, -11.0f, 5.1f) + curveToRelative(1.0f, -5.0f, 4.0f, -10.0f, 11.0f, -11.0f) + close() + } + } +}