Skip to content
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,13 @@ public val previewCall: Call = Call(
id = "123",
user = previewUsers[0],
).apply {
val participants = previewUsers.take(2).map { user ->
val sessionId = UUID.randomUUID().toString()
// Deterministic session ids keep the participant order stable across runs, so previews
// and snapshot goldens always render the same participants in the same positions.
sessionId = "session-0-${previewUsers[0].id}"
val participants = previewUsers.mapIndexed { index, user ->
ParticipantState(
initialUserId = user.id,
sessionId = sessionId,
sessionId = "session-$index-${user.id}",
scope = this.state.scope,
callActions = this.state.callActions,
)
Expand Down Expand Up @@ -118,17 +120,11 @@ public val previewUsers: List<User>
public val previewParticipantsList: List<ParticipantState>
inline get() {
val participants = arrayListOf<ParticipantState>()
previewCall.state.clearParticipants()
previewUsers.forEach { user ->
val sessionId = if (user == previewUsers.first()) {
previewCall.sessionId ?: UUID.randomUUID().toString()
} else {
UUID.randomUUID().toString()
}
previewUsers.forEachIndexed { index, user ->
participants.add(
ParticipantState(
initialUserId = user.id,
sessionId = sessionId,
sessionId = "session-$index-${user.id}",
scope = previewCall.state.scope,
callActions = previewCall.state.callActions,
).also { previewCall.state.updateParticipant(it) },
Expand All @@ -141,7 +137,6 @@ public val previewParticipantsList: List<ParticipantState>
public val previewMemberListState: List<MemberState>
inline get() {
val participants = arrayListOf<MemberState>()
previewCall.state.clearParticipants()
previewUsers.forEach { user ->
participants.add(
MemberState(
Expand Down
6 changes: 6 additions & 0 deletions stream-video-android-ui-compose/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ android {
}
}

// Paparazzi renders and compresses every snapshot in the forked test worker, which defaults to a
// 512 MB heap. Raise it so recordPaparazziDebug / verifyPaparazziDebug do not run out of memory.
tasks.withType<Test>().configureEach {
maxHeapSize = "4g"
}

baselineProfile {
baselineProfileOutputDir = "."
filter {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,19 @@

package io.getstream.video.android.compose.ui.components.audio

import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import io.getstream.video.android.compose.theme.VideoTheme

@Preview
@Composable
private fun AudioAppBarPreview() {
private fun AudioAppBarRootPreview() {
VideoTheme {
AudioAppBar(
modifier = Modifier.fillMaxWidth(),
title = "Audio Room Number 01",
)
AudioAppBarPreview()
}
}

@Composable
internal fun AudioAppBarPreview() {
AudioAppBar(title = "Audio Room Number 05")
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package io.getstream.video.android.compose.ui.components.audio

import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
Expand All @@ -27,12 +27,14 @@ import io.getstream.video.android.mock.previewCall

@Preview
@Composable
private fun AudioControlActionsPreview() {
private fun AudioControlActionsRootPreview() {
StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current)
VideoTheme {
AudioControlActions(
modifier = Modifier.fillMaxWidth(),
call = previewCall,
)
AudioControlActionsPreview()
}
}

@Composable
internal fun AudioControlActionsPreview() {
AudioControlActions(call = previewCall, modifier = Modifier.fillMaxSize())
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,17 @@ import io.getstream.video.android.mock.previewParticipantsList
@Preview
@Preview(device = Devices.AUTOMOTIVE_1024p, widthDp = 1440, heightDp = 720)
@Composable
private fun AudioParticipantsGridPreview() {
private fun AudioParticipantsGridRootPreview() {
StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current)
VideoTheme {
AudioParticipantsGrid(
modifier = Modifier.fillMaxSize(),
participants = previewParticipantsList,
)
AudioParticipantsGridPreview()
}
}

@Composable
internal fun AudioParticipantsGridPreview() {
AudioParticipantsGrid(
modifier = Modifier.fillMaxSize(),
participants = previewParticipantsList,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,17 @@ import io.getstream.video.android.mock.previewCall
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)
@Preview(device = Devices.AUTOMOTIVE_1024p, widthDp = 1440, heightDp = 720)
@Composable
private fun AudioRoomPreview() {
private fun AudioRoomContentRootPreview() {
StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current)
VideoTheme {
AudioRoomContent(
modifier = Modifier.fillMaxSize(),
call = previewCall,
)
AudioRoomContentPreview()
}
}

@Composable
internal fun AudioRoomContentPreview() {
AudioRoomContent(
modifier = Modifier.fillMaxSize(),
call = previewCall,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,20 @@ import io.getstream.video.android.ui.common.R

@Preview
@Composable
private fun AvatarInitialPreview() {
private fun AvatarInitialsRootPreview() {
VideoTheme {
Avatar(
modifier = Modifier.size(72.dp),
fallbackText = "Thierry",
)
AvatarInitialsPreview()
}
}

@Composable
internal fun AvatarInitialsPreview() {
Avatar(
modifier = Modifier.size(72.dp),
fallbackText = "Thierry",
)
}

@Preview
@Composable
internal fun AvatarImagePreview() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,25 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import io.getstream.video.android.compose.theme.VideoTheme
import io.getstream.video.android.mock.StreamPreviewDataUtils
import io.getstream.video.android.mock.previewParticipantsList
import io.getstream.video.android.ui.common.R
import io.getstream.video.android.mock.previewParticipant

@Preview
@Composable
private fun UserAvatarPreview() {
private fun UserAvatarRootPreview() {
StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current)
VideoTheme {
val participant = previewParticipantsList[0]
val userImage by participant.image.collectAsStateWithLifecycle()
val userName by participant.userNameOrId.collectAsStateWithLifecycle()

UserAvatar(
modifier = Modifier.size(82.dp),
userImage = userImage,
userName = userName,
previewModePlaceholder = R.drawable.stream_video_call_sample,
isShowingOnlineIndicator = true,
)
UserAvatarPreview()
}
}

@Composable
internal fun UserAvatarPreview() {
val name by previewParticipant.name.collectAsStateWithLifecycle()
val image by previewParticipant.image.collectAsStateWithLifecycle()
UserAvatar(
modifier = Modifier.size(82.dp),
userImage = image,
userName = name,
isShowingOnlineIndicator = true,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,49 +33,54 @@ import io.getstream.video.android.compose.ui.components.base.styling.StreamBadge

@Preview
@Composable
private fun ButtonWithBadgePreview() {
private fun BadgesWithButtonsRootPreview() {
VideoTheme {
Column {
StreamBadgeBox(
text = "!",
style = StreamBadgeStyles.defaultBadgeStyle(),
) {
StreamIconButton(
icon = Icons.Default.AddAlert,
style = ButtonStyles.secondaryIconButtonStyle(),
)
}
Spacer(modifier = Modifier.size(16.dp))
StreamBadgeBox(
text = "10",
style = StreamBadgeStyles.defaultBadgeStyle(),
) {
StreamButton(
icon = Icons.Default.Info,
text = "Secondary Button",
style = ButtonStyles.secondaryButtonStyle(),
)
}
Spacer(modifier = Modifier.size(16.dp))
StreamBadgeBox(
text = "10+",
style = StreamBadgeStyles.defaultBadgeStyle(),
) {
StreamIconButton(
icon = Icons.Default.QuestionAnswer,
style = ButtonStyles.primaryIconButtonStyle(),
)
}
Spacer(modifier = Modifier.size(16.dp))
StreamBadgeBox(
showWithoutValue = false,
style = StreamBadgeStyles.defaultBadgeStyle(),
) {
StreamIconButton(
icon = Icons.Default.QuestionAnswer,
style = ButtonStyles.primaryIconButtonStyle(),
)
}
BadgesWithButtonsPreview()
}
}

@Composable
internal fun BadgesWithButtonsPreview() {
Column {
StreamBadgeBox(
text = "!",
style = StreamBadgeStyles.defaultBadgeStyle(),
) {
StreamIconButton(
icon = Icons.Default.AddAlert,
style = ButtonStyles.secondaryIconButtonStyle(),
)
}
Spacer(modifier = Modifier.size(16.dp))
StreamBadgeBox(
text = "10",
style = StreamBadgeStyles.defaultBadgeStyle(),
) {
StreamButton(
icon = Icons.Default.Info,
text = "Secondary Button",
style = ButtonStyles.secondaryButtonStyle(),
)
}
Spacer(modifier = Modifier.size(16.dp))
StreamBadgeBox(
text = "10+",
style = StreamBadgeStyles.defaultBadgeStyle(),
) {
StreamIconButton(
icon = Icons.Default.QuestionAnswer,
style = ButtonStyles.primaryIconButtonStyle(),
)
}
Spacer(modifier = Modifier.size(16.dp))
StreamBadgeBox(
showWithoutValue = false,
style = StreamBadgeStyles.defaultBadgeStyle(),
) {
StreamIconButton(
icon = Icons.Default.QuestionAnswer,
style = ButtonStyles.primaryIconButtonStyle(),
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,15 @@ import io.getstream.video.android.compose.theme.VideoTheme

@Preview
@Composable
private fun GenericContainerPreview() {
private fun GenericContainerRootPreview() {
VideoTheme {
GenericContainer {
Text(text = "Contained text!", color = Color.White)
}
GenericContainerPreview()
}
}

@Composable
internal fun GenericContainerPreview() {
GenericContainer {
Text(text = "Contained text!", color = Color.White)
}
}
Loading
Loading