feat(android): add inline voice mini-player in chat info tab
Some checks failed
Android CI / android (push) Failing after 5m23s
Android Release / release (push) Has started running
CI / test (push) Has been cancelled

This commit is contained in:
Codex
2026-03-10 20:49:15 +03:00
parent 8522e32aea
commit 2a72437d28

View File

@@ -2949,6 +2949,73 @@ private fun ChatInfoTabContent(
} }
return return
} }
if (tab == ChatInfoTab.Voice) {
LazyColumn(
modifier = Modifier
.fillMaxWidth()
.height(320.dp),
verticalArrangement = Arrangement.spacedBy(8.dp),
) {
items(filtered.take(60)) { entry ->
Column(
modifier = Modifier
.fillMaxWidth()
.clip(RoundedCornerShape(12.dp))
.background(MaterialTheme.colorScheme.surface.copy(alpha = 0.55f))
.padding(horizontal = 10.dp, vertical = 9.dp),
verticalArrangement = Arrangement.spacedBy(8.dp),
) {
Row(
modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(10.dp),
) {
Box(
modifier = Modifier
.size(46.dp)
.clip(RoundedCornerShape(8.dp))
.background(MaterialTheme.colorScheme.primaryContainer),
contentAlignment = Alignment.Center,
) {
Icon(
imageVector = Icons.Filled.Mic,
contentDescription = null,
tint = MaterialTheme.colorScheme.onPrimaryContainer,
)
}
Column(modifier = Modifier.weight(1f)) {
Text(
text = entry.title,
style = MaterialTheme.typography.bodyMedium,
fontWeight = FontWeight.SemiBold,
maxLines = 1,
)
Text(
text = entry.subtitle,
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant,
maxLines = 2,
)
}
}
if (!entry.resourceUrl.isNullOrBlank()) {
AudioAttachmentPlayer(
url = entry.resourceUrl,
waveform = null,
isVoice = true,
playbackTitle = entry.title,
playbackSubtitle = entry.subtitle,
messageId = entry.sourceMessageId ?: entry.title.hashCode().toLong(),
onPlaybackChanged = {},
forceStopAudioSourceId = null,
onForceStopAudioSourceHandled = {},
)
}
}
}
}
return
}
LazyColumn( LazyColumn(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()