review: pass the RtcNotificationContent in the view to avoid casting

This commit is contained in:
Valere 2026-04-17 10:07:22 +02:00
parent 3dd3a31497
commit 5184f0dc59
2 changed files with 10 additions and 8 deletions

View file

@ -43,10 +43,10 @@ import io.element.android.libraries.ui.strings.CommonStrings
@Composable @Composable
internal fun TimelineItemCallNotifyView( internal fun TimelineItemCallNotifyView(
event: TimelineItem.Event, event: TimelineItem.Event,
content: TimelineItemRtcNotificationContent,
onLongClick: (TimelineItem.Event) -> Unit, onLongClick: (TimelineItem.Event) -> Unit,
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
val intent = (event.content as? TimelineItemRtcNotificationContent)?.callIntent
Row( Row(
modifier = modifier modifier = modifier
.fillMaxWidth() .fillMaxWidth()
@ -54,7 +54,7 @@ internal fun TimelineItemCallNotifyView(
.combinedClickable( .combinedClickable(
enabled = true, enabled = true,
onClick = {}, onClick = {},
onLongClick = { onLongClick(event) }, onLongClick = { onLongClick() },
onLongClickLabel = stringResource(CommonStrings.action_open_context_menu), onLongClickLabel = stringResource(CommonStrings.action_open_context_menu),
) )
.onKeyboardContextMenuAction { onLongClick(event) } .onKeyboardContextMenuAction { onLongClick(event) }
@ -80,7 +80,7 @@ internal fun TimelineItemCallNotifyView(
Icon( Icon(
modifier = Modifier.size(20.sp.toDp()), modifier = Modifier.size(20.sp.toDp()),
imageVector = imageVector =
if (intent == CallIntent.AUDIO) CompoundIcons.VoiceCallSolid() else CompoundIcons.VideoCallSolid(), if (content.callIntent == CallIntent.AUDIO) CompoundIcons.VoiceCallSolid() else CompoundIcons.VideoCallSolid(),
contentDescription = null, contentDescription = null,
tint = ElementTheme.colors.iconSecondary, tint = ElementTheme.colors.iconSecondary,
) )
@ -108,12 +108,13 @@ internal fun TimelineItemCallNotifyView(
internal fun TimelineItemCallNotifyViewPreview() = ElementPreview { internal fun TimelineItemCallNotifyViewPreview() = ElementPreview {
Column(modifier = Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp)) { Column(modifier = Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp)) {
listOf( listOf(
aTimelineItemEvent(content = TimelineItemRtcNotificationContent(null)), TimelineItemRtcNotificationContent(null),
aTimelineItemEvent(content = TimelineItemRtcNotificationContent(CallIntent.AUDIO)), TimelineItemRtcNotificationContent(CallIntent.AUDIO),
aTimelineItemEvent(content = TimelineItemRtcNotificationContent(CallIntent.VIDEO)), TimelineItemRtcNotificationContent(CallIntent.VIDEO),
).forEach { event -> ).forEach { content ->
TimelineItemCallNotifyView( TimelineItemCallNotifyView(
event = event, event = aTimelineItemEvent(content = content),
content = content,
onLongClick = {}, onLongClick = {},
) )
} }

View file

@ -126,6 +126,7 @@ internal fun TimelineItemRow(
TimelineItemCallNotifyView( TimelineItemCallNotifyView(
modifier = Modifier.padding(start = 16.dp, end = 16.dp, top = 16.dp), modifier = Modifier.padding(start = 16.dp, end = 16.dp, top = 16.dp),
event = timelineItem, event = timelineItem,
content = timelineItem.content,
onLongClick = onLongClick, onLongClick = onLongClick,
) )
} }