diff --git a/app/src/full/kotlin/io/homeassistant/companion/android/matter/MatterCommissioningActivity.kt b/app/src/full/kotlin/io/homeassistant/companion/android/matter/MatterCommissioningActivity.kt index 0ca081a00ab..8de7014267f 100644 --- a/app/src/full/kotlin/io/homeassistant/companion/android/matter/MatterCommissioningActivity.kt +++ b/app/src/full/kotlin/io/homeassistant/companion/android/matter/MatterCommissioningActivity.kt @@ -14,10 +14,10 @@ import androidx.lifecycle.lifecycleScope import com.google.android.gms.home.matter.Matter import com.google.android.gms.home.matter.commissioning.SharedDeviceData import dagger.hilt.android.AndroidEntryPoint +import io.homeassistant.companion.android.common.compose.theme.HATheme import io.homeassistant.companion.android.frontend.navigation.FrontendTarget import io.homeassistant.companion.android.launch.startLaunchWithNavigateTo -import io.homeassistant.companion.android.matter.views.MatterCommissioningView -import io.homeassistant.companion.android.util.compose.HomeAssistantAppTheme +import io.homeassistant.companion.android.matter.ui.MatterCommissioningScreen import io.homeassistant.companion.android.util.enableEdgeToEdgeCompat import kotlinx.coroutines.launch import timber.log.Timber @@ -39,11 +39,11 @@ class MatterCommissioningActivity : AppCompatActivity() { enableEdgeToEdgeCompat() setContent { - HomeAssistantAppTheme { - MatterCommissioningView( + HATheme { + MatterCommissioningScreen( step = viewModel.step, deviceName = deviceName, - servers = viewModel.servers, + serverChooserItems = viewModel.serverChooserItems, onSelectServer = viewModel::checkSupport, onConfirmCommissioning = { startCommissioning() }, onClose = { finish() }, diff --git a/app/src/full/kotlin/io/homeassistant/companion/android/matter/MatterCommissioningViewModel.kt b/app/src/full/kotlin/io/homeassistant/companion/android/matter/MatterCommissioningViewModel.kt index 4bbb5d5f843..e6ac0a09776 100644 --- a/app/src/full/kotlin/io/homeassistant/companion/android/matter/MatterCommissioningViewModel.kt +++ b/app/src/full/kotlin/io/homeassistant/companion/android/matter/MatterCommissioningViewModel.kt @@ -11,7 +11,8 @@ import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import io.homeassistant.companion.android.common.data.servers.ServerManager -import io.homeassistant.companion.android.database.server.Server +import io.homeassistant.companion.android.settings.server.ServerChooserItem +import io.homeassistant.companion.android.settings.server.ServerChooserItemsUseCase import io.homeassistant.companion.android.thread.ThreadManager import javax.inject.Inject import kotlinx.coroutines.launch @@ -21,6 +22,7 @@ class MatterCommissioningViewModel @Inject constructor( private val matterManager: MatterManager, private val threadManager: ThreadManager, private val serverManager: ServerManager, + private val serverChooserItemsUseCase: ServerChooserItemsUseCase, application: Application, ) : AndroidViewModel(application) { @@ -42,7 +44,7 @@ class MatterCommissioningViewModel @Inject constructor( var serverId by mutableIntStateOf(0) private set - var servers by mutableStateOf>(emptyList()) + var serverChooserItems by mutableStateOf>(emptyList()) private set fun checkSetup(isNewDevice: Boolean) { @@ -57,9 +59,10 @@ class MatterCommissioningViewModel @Inject constructor( step = CommissioningFlowStep.NotRegistered return@launch } - servers = serverManager.servers() + val servers = serverManager.servers() if (servers.size > 1) { step = CommissioningFlowStep.SelectServer + serverChooserItemsUseCase(servers).collect { serverChooserItems = it } } else { serverManager.getServer()?.id?.let { checkSupport(it) diff --git a/app/src/full/kotlin/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreen.kt b/app/src/full/kotlin/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreen.kt new file mode 100644 index 00000000000..36e40a4e19a --- /dev/null +++ b/app/src/full/kotlin/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreen.kt @@ -0,0 +1,283 @@ +package io.homeassistant.companion.android.matter.ui + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.res.vectorResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.unit.dp +import io.homeassistant.companion.android.R +import io.homeassistant.companion.android.common.R as commonR +import io.homeassistant.companion.android.common.compose.composable.HAAccentButton +import io.homeassistant.companion.android.common.compose.composable.HALoading +import io.homeassistant.companion.android.common.compose.composable.HAPlainButton +import io.homeassistant.companion.android.common.compose.composable.HATopBarPlaceholder +import io.homeassistant.companion.android.common.compose.theme.HADimens +import io.homeassistant.companion.android.common.compose.theme.HATextStyle +import io.homeassistant.companion.android.common.compose.theme.HAThemeForPreview +import io.homeassistant.companion.android.common.compose.theme.MaxButtonWidth +import io.homeassistant.companion.android.matter.MatterCommissioningViewModel.CommissioningFlowStep +import io.homeassistant.companion.android.settings.server.ServerChooser +import io.homeassistant.companion.android.settings.server.ServerChooserItem + +private val MaxContentWidth = MaxButtonWidth + +/** + * Renders the Matter commissioning flow for the given [step]: a loading indicator while the flow + * is being prepared or a device is being commissioned, a [ServerChooser] sheet when multiple + * servers are available, and status messages with their actions for the remaining steps. + */ +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun MatterCommissioningScreen( + step: CommissioningFlowStep, + deviceName: String?, + serverChooserItems: List, + onSelectServer: (Int) -> Unit, + onConfirmCommissioning: () -> Unit, + onClose: () -> Unit, + onContinue: () -> Unit, + modifier: Modifier = Modifier, +) { + if (step == CommissioningFlowStep.NotStarted) return + + Scaffold( + contentWindowInsets = WindowInsets.safeDrawing, + modifier = modifier, + ) { contentPadding -> + MatterCommissioningContent( + step = step, + deviceName = deviceName, + onConfirmCommissioning = onConfirmCommissioning, + onClose = onClose, + onContinue = onContinue, + modifier = Modifier.padding(contentPadding), + ) + + if (step == CommissioningFlowStep.SelectServer) { + ServerChooser( + items = serverChooserItems, + onServerSelected = onSelectServer, + onDismissRequest = onClose, + ) + } + } +} + +@Composable +private fun MatterCommissioningContent( + step: CommissioningFlowStep, + deviceName: String?, + onConfirmCommissioning: () -> Unit, + onClose: () -> Unit, + onContinue: () -> Unit, + modifier: Modifier = Modifier, +) { + val loadingSteps = listOf( + CommissioningFlowStep.NotStarted, + CommissioningFlowStep.CheckingCore, + CommissioningFlowStep.Working, + ) + + Column( + modifier = modifier + .fillMaxSize() + .verticalScroll(rememberScrollState()) + .padding(horizontal = HADimens.SPACE4), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(HADimens.SPACE6), + ) { + HATopBarPlaceholder() + + MatterCommissioningHeader() + + if (step in loadingSteps) { + LoadingStatus(showWorkingText = step is CommissioningFlowStep.Working) + } else if (step != CommissioningFlowStep.SelectServer) { + StepStatusText(step = step, deviceName = deviceName) + } + + Spacer(modifier = Modifier.weight(1f)) + + if (step !in loadingSteps && step != CommissioningFlowStep.SelectServer) { + StepButtons( + step = step, + onConfirmCommissioning = onConfirmCommissioning, + onClose = onClose, + onContinue = onContinue, + ) + } + } +} + +@Composable +private fun ColumnScope.MatterCommissioningHeader() { + Image( + imageVector = ImageVector.vectorResource(R.drawable.ic_matter), + contentDescription = null, + modifier = Modifier + .padding(top = HADimens.SPACE6) + .padding(all = HADimens.SPACE5) + .size(120.dp), + ) + Text( + text = stringResource(commonR.string.matter_shared_title), + style = HATextStyle.Headline, + modifier = Modifier.widthIn(max = MaxContentWidth), + ) +} + +@Composable +private fun ColumnScope.LoadingStatus(showWorkingText: Boolean) { + HALoading() + if (showWorkingText) { + Text( + text = stringResource(commonR.string.matter_shared_status_working), + style = HATextStyle.Body, + modifier = Modifier.widthIn(max = MaxContentWidth), + ) + } +} + +@Composable +private fun StepStatusText(step: CommissioningFlowStep, deviceName: String?, modifier: Modifier = Modifier) { + Text( + text = when (step) { + CommissioningFlowStep.NotRegistered -> stringResource( + commonR.string.matter_shared_status_not_registered, + ) + CommissioningFlowStep.NotSupported -> stringResource( + commonR.string.matter_shared_status_not_supported, + ) + CommissioningFlowStep.Confirmation -> { + if (deviceName?.isNotBlank() == true) { + stringResource(commonR.string.matter_shared_status_confirmation_named, deviceName) + } else { + stringResource(commonR.string.matter_shared_status_confirmation) + } + } + CommissioningFlowStep.Success -> stringResource( + commonR.string.matter_shared_status_success, + ) + is CommissioningFlowStep.Failure -> { + if (step.errorCode != null) { + stringResource(commonR.string.matter_shared_status_failure_code, step.errorCode) + } else { + stringResource(commonR.string.matter_shared_status_failure) + } + } + else -> "" // not used: loading steps render LoadingStatus, SelectServer the ServerChooser sheet + }, + style = HATextStyle.Body, + modifier = modifier.widthIn(max = MaxContentWidth), + ) +} + +/** + * Renders the actions for [step] as a vertical stack of full-width buttons, the primary action on + * top, like the onboarding screens. + */ +@Composable +private fun StepButtons( + step: CommissioningFlowStep, + onConfirmCommissioning: () -> Unit, + onClose: () -> Unit, + onContinue: () -> Unit, + modifier: Modifier = Modifier, +) { + Column( + modifier = modifier + .fillMaxWidth() + .padding(bottom = HADimens.SPACE6), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(HADimens.SPACE4), + ) { + val buttonModifier = Modifier + .fillMaxWidth() + .widthIn(max = MaxContentWidth) + when (step) { + CommissioningFlowStep.NotRegistered, + CommissioningFlowStep.NotSupported, + -> { + HAAccentButton( + text = stringResource(commonR.string.close), + onClick = onClose, + modifier = buttonModifier, + ) + } + CommissioningFlowStep.Confirmation -> { + HAAccentButton( + text = stringResource(commonR.string.add_device), + onClick = onConfirmCommissioning, + modifier = buttonModifier, + ) + HAPlainButton( + text = stringResource(commonR.string.cancel), + onClick = onClose, + modifier = buttonModifier, + ) + } + CommissioningFlowStep.Success -> { + HAAccentButton( + text = stringResource(commonR.string.continue_connect), + onClick = onContinue, + modifier = buttonModifier, + ) + } + is CommissioningFlowStep.Failure -> { + HAAccentButton( + text = stringResource(commonR.string.retry), + onClick = onConfirmCommissioning, + modifier = buttonModifier, + ) + HAPlainButton( + text = stringResource(commonR.string.cancel), + onClick = onClose, + modifier = buttonModifier, + ) + } + else -> { /* No button */ } + } + } +} + +@Preview +@Composable +private fun PreviewMatterCommissioningScreen( + @PreviewParameter(MatterCommissioningScreenPreviewStates::class) step: CommissioningFlowStep, +) { + HAThemeForPreview { + MatterCommissioningScreen( + step = step, + deviceName = "Manufacturer Matter Light", + serverChooserItems = listOf( + ServerChooserItem(serverId = 1, userName = "Alice Smith", serverName = "Home", isActive = true), + ServerChooserItem(serverId = 2, userName = "Bob", serverName = "Friends home"), + ), + onSelectServer = { }, + onConfirmCommissioning = { }, + onClose = { }, + onContinue = { }, + ) + } +} diff --git a/app/src/full/kotlin/io/homeassistant/companion/android/matter/views/MatterCommissioningViewPreviewStates.kt b/app/src/full/kotlin/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenPreviewStates.kt similarity index 89% rename from app/src/full/kotlin/io/homeassistant/companion/android/matter/views/MatterCommissioningViewPreviewStates.kt rename to app/src/full/kotlin/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenPreviewStates.kt index 4ab3f960c74..57bec70db6f 100644 --- a/app/src/full/kotlin/io/homeassistant/companion/android/matter/views/MatterCommissioningViewPreviewStates.kt +++ b/app/src/full/kotlin/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenPreviewStates.kt @@ -1,9 +1,9 @@ -package io.homeassistant.companion.android.matter.views +package io.homeassistant.companion.android.matter.ui import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.homeassistant.companion.android.matter.MatterCommissioningViewModel -class MatterCommissioningViewPreviewStates : +class MatterCommissioningScreenPreviewStates : PreviewParameterProvider { override val values = sequenceOf( MatterCommissioningViewModel.CommissioningFlowStep.NotRegistered, diff --git a/app/src/full/kotlin/io/homeassistant/companion/android/matter/views/MatterCommissioningView.kt b/app/src/full/kotlin/io/homeassistant/companion/android/matter/views/MatterCommissioningView.kt deleted file mode 100644 index ca636747c30..00000000000 --- a/app/src/full/kotlin/io/homeassistant/companion/android/matter/views/MatterCommissioningView.kt +++ /dev/null @@ -1,258 +0,0 @@ -package io.homeassistant.companion.android.matter.views - -import androidx.compose.foundation.Image -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.heightIn -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.safeDrawing -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll -import androidx.compose.material.Button -import androidx.compose.material.CircularProgressIndicator -import androidx.compose.material.Divider -import androidx.compose.material.MaterialTheme -import androidx.compose.material.ProvideTextStyle -import androidx.compose.material.Text -import androidx.compose.material.TextButton -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.res.vectorResource -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewParameter -import androidx.compose.ui.unit.dp -import io.homeassistant.companion.android.R -import io.homeassistant.companion.android.common.R as commonR -import io.homeassistant.companion.android.database.server.Server -import io.homeassistant.companion.android.database.server.ServerConnectionInfo -import io.homeassistant.companion.android.database.server.ServerSessionInfo -import io.homeassistant.companion.android.database.server.ServerUserInfo -import io.homeassistant.companion.android.matter.MatterCommissioningViewModel.CommissioningFlowStep -import io.homeassistant.companion.android.util.compose.HomeAssistantAppTheme -import io.homeassistant.companion.android.util.compose.STEP_SCREEN_MAX_WIDTH_DP -import io.homeassistant.companion.android.util.compose.screenWidth -import kotlin.math.min - -@Composable -fun MatterCommissioningView( - step: CommissioningFlowStep, - deviceName: String?, - servers: List, - onSelectServer: (Int) -> Unit, - onConfirmCommissioning: () -> Unit, - onClose: () -> Unit, - onContinue: () -> Unit, - modifier: Modifier = Modifier, -) { - if (step == CommissioningFlowStep.NotStarted) return - - val screenWidth = screenWidth() - val loadingSteps = listOf( - CommissioningFlowStep.NotStarted, - CommissioningFlowStep.CheckingCore, - CommissioningFlowStep.Working, - ) - - Box( - modifier = modifier - .fillMaxWidth() - .verticalScroll(rememberScrollState()), - ) { - Column( - modifier = Modifier - .windowInsetsPadding(WindowInsets.safeDrawing) - .padding(horizontal = 16.dp) - .width(min(screenWidth.value, STEP_SCREEN_MAX_WIDTH_DP).dp) - .align(Alignment.Center), - ) { - MatterCommissioningViewHeader() - - ProvideTextStyle(MaterialTheme.typography.body1) { - Box( - modifier = Modifier - .fillMaxWidth() - .align(Alignment.CenterHorizontally), - ) { - if (step in loadingSteps) { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 32.dp), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - CircularProgressIndicator() - if (step is CommissioningFlowStep.Working) { - Text( - text = stringResource(commonR.string.matter_shared_status_working), - textAlign = TextAlign.Center, - modifier = Modifier - .fillMaxWidth(0.67f) - .padding(top = 16.dp), - ) - } - } - } else { - Text( - text = when (step) { - CommissioningFlowStep.NotRegistered -> stringResource( - commonR.string.matter_shared_status_not_registered, - ) - CommissioningFlowStep.SelectServer -> stringResource( - commonR.string.matter_shared_status_select_server, - ) - CommissioningFlowStep.NotSupported -> stringResource( - commonR.string.matter_shared_status_not_supported, - ) - CommissioningFlowStep.Confirmation -> { - if (deviceName?.isNotBlank() == true) { - stringResource( - commonR.string.matter_shared_status_confirmation_named, - deviceName, - ) - } else { - stringResource(commonR.string.matter_shared_status_confirmation) - } - } - CommissioningFlowStep.Success -> stringResource( - commonR.string.matter_shared_status_success, - ) - is CommissioningFlowStep.Failure -> { - if (step.errorCode != null) { - stringResource(commonR.string.matter_shared_status_failure_code, step.errorCode) - } else { - stringResource(commonR.string.matter_shared_status_failure) - } - } - else -> "" // not used because everything above is not in loadingSteps - }, - textAlign = TextAlign.Center, - modifier = Modifier.fillMaxWidth(), - ) - } - } - } - - if (step == CommissioningFlowStep.SelectServer) { - Spacer(modifier = Modifier.height(16.dp)) - servers.forEach { - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .fillMaxWidth() - .heightIn(min = 56.dp) - .clickable { onSelectServer(it.id) }, - ) { - Text(it.friendlyName) - } - Divider() - } - } - - if (step !in loadingSteps) { - Row( - modifier = Modifier - .fillMaxWidth() - .padding(top = 32.dp, bottom = 16.dp), - ) { - if ( - step == CommissioningFlowStep.SelectServer || - step == CommissioningFlowStep.Confirmation || - step is CommissioningFlowStep.Failure - ) { - TextButton(onClick = { onClose() }) { - Text(stringResource(commonR.string.cancel)) - } - } - Spacer(modifier = Modifier.weight(1f)) - when (step) { - CommissioningFlowStep.NotRegistered, - CommissioningFlowStep.NotSupported, - -> { - Button(onClick = { onClose() }) { - Text(stringResource(commonR.string.close)) - } - } - CommissioningFlowStep.Confirmation -> { - Button(onClick = { onConfirmCommissioning() }) { - Text(stringResource(commonR.string.add_device)) - } - } - CommissioningFlowStep.Success -> { - Button(onClick = { onContinue() }) { - Text(stringResource(commonR.string.continue_connect)) - } - } - is CommissioningFlowStep.Failure -> { - Button(onClick = { onConfirmCommissioning() }) { - Text(stringResource(commonR.string.retry)) - } - } - else -> { /* No button */ } - } - } - } - } - } -} - -@Composable -fun MatterCommissioningViewHeader(modifier: Modifier = Modifier) { - Column(modifier = modifier.fillMaxWidth()) { - Spacer(modifier = Modifier.height(32.dp)) - Image( - imageVector = ImageVector.vectorResource(R.drawable.ic_matter), - contentDescription = null, - modifier = Modifier - .size(48.dp) - .align(Alignment.CenterHorizontally), - ) - Text( - text = stringResource(commonR.string.matter_shared_title), - style = MaterialTheme.typography.h5, - textAlign = TextAlign.Center, - modifier = Modifier - .padding(vertical = 16.dp) - .align(Alignment.CenterHorizontally), - ) - } -} - -@Preview -@Composable -private fun PreviewMatterCommissioningView( - @PreviewParameter(MatterCommissioningViewPreviewStates::class) step: CommissioningFlowStep, -) { - HomeAssistantAppTheme { - MatterCommissioningView( - step = step, - deviceName = "Manufacturer Matter Light", - servers = listOf( - Server( - id = 0, - _name = "Home", - listOrder = -1, - connection = ServerConnectionInfo(externalUrl = ""), - session = ServerSessionInfo(), - user = ServerUserInfo(), - ), - ), - onSelectServer = { }, - onConfirmCommissioning = { }, - onClose = { }, - onContinue = { }, - ) - } -} diff --git a/app/src/main/res/xml/changelog_master.xml b/app/src/main/res/xml/changelog_master.xml index 15a2cd55f3a..16b72aa00c6 100755 --- a/app/src/main/res/xml/changelog_master.xml +++ b/app/src/main/res/xml/changelog_master.xml @@ -4,7 +4,7 @@ Android 17: added assistant volume level sensor + notification command for control Health Connect sleep duration sensor now ignores awake and out of bed time - Modernized settings for entity widgets and tiles + Modernized settings for entity widgets and tiles and Matter device commissioning Bug fixes and dependency updates diff --git a/app/src/screenshotTestFull/kotlin/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest.kt b/app/src/screenshotTestFull/kotlin/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest.kt new file mode 100644 index 00000000000..a9c3d8ba76f --- /dev/null +++ b/app/src/screenshotTestFull/kotlin/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest.kt @@ -0,0 +1,34 @@ +package io.homeassistant.companion.android.matter.ui + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.PreviewParameter +import com.android.tools.screenshot.PreviewTest +import io.homeassistant.companion.android.common.compose.theme.HAThemeForPreview +import io.homeassistant.companion.android.matter.MatterCommissioningViewModel.CommissioningFlowStep +import io.homeassistant.companion.android.settings.server.ServerChooserItem +import io.homeassistant.companion.android.util.compose.HAPreviews + +class MatterCommissioningScreenshotTest { + + @PreviewTest + @HAPreviews + @Composable + fun `MatterCommissioningScreen steps`( + @PreviewParameter(MatterCommissioningScreenPreviewStates::class) step: CommissioningFlowStep, + ) { + HAThemeForPreview { + MatterCommissioningScreen( + step = step, + deviceName = "Manufacturer Matter Light", + serverChooserItems = listOf( + ServerChooserItem(serverId = 1, userName = "Alice Smith", serverName = "Home", isActive = true), + ServerChooserItem(serverId = 2, userName = "Bob", serverName = "Friends home"), + ), + onSelectServer = { }, + onConfirmCommissioning = { }, + onClose = { }, + onContinue = { }, + ) + } + } +} diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_0.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_0.png new file mode 100644 index 00000000000..aa4676d7040 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_0.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_1.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_1.png new file mode 100644 index 00000000000..7257ef5f25b Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_1.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_2.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_2.png new file mode 100644 index 00000000000..40609d5cd29 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_2.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_3.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_3.png new file mode 100644 index 00000000000..9e251a42f4a Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_3.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_4.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_4.png new file mode 100644 index 00000000000..1988bb89cc5 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_4.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_5.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_5.png new file mode 100644 index 00000000000..f7d2533d2f9 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_5.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_6.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_6.png new file mode 100644 index 00000000000..8322d14feb3 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_6.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_7.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_7.png new file mode 100644 index 00000000000..1108146e8f6 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_foldable_c908f502_022cfc95_7.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_0.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_0.png new file mode 100644 index 00000000000..83d9f82a87f Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_0.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_1.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_1.png new file mode 100644 index 00000000000..07063bba730 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_1.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_2.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_2.png new file mode 100644 index 00000000000..b4603d46eac Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_2.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_3.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_3.png new file mode 100644 index 00000000000..427c54e43ea Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_3.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_4.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_4.png new file mode 100644 index 00000000000..8f5c0b1ced5 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_4.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_5.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_5.png new file mode 100644 index 00000000000..2b754530f1a Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_5.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_6.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_6.png new file mode 100644 index 00000000000..ede06706449 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_6.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_7.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_7.png new file mode 100644 index 00000000000..a94a5bf3d2a Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_e05166be_022cfc95_7.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_0.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_0.png new file mode 100644 index 00000000000..09c7baa6bd3 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_0.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_1.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_1.png new file mode 100644 index 00000000000..68fd13b2f64 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_1.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_2.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_2.png new file mode 100644 index 00000000000..6c3d78e259e Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_2.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_3.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_3.png new file mode 100644 index 00000000000..6b1dee64868 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_3.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_4.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_4.png new file mode 100644 index 00000000000..7b9ac3b8901 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_4.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_5.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_5.png new file mode 100644 index 00000000000..8dfbe400834 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_5.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_6.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_6.png new file mode 100644 index 00000000000..1fc8153351a Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_6.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_7.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_7.png new file mode 100644 index 00000000000..26d56a984cd Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_phone_landscape_9e00b29d_022cfc95_7.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_0.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_0.png new file mode 100644 index 00000000000..b79b7ced290 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_0.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_1.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_1.png new file mode 100644 index 00000000000..43af7decc3c Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_1.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_2.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_2.png new file mode 100644 index 00000000000..f454f70f394 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_2.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_3.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_3.png new file mode 100644 index 00000000000..061aa318c34 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_3.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_4.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_4.png new file mode 100644 index 00000000000..d82bf56b55a Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_4.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_5.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_5.png new file mode 100644 index 00000000000..43af7decc3c Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_5.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_6.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_6.png new file mode 100644 index 00000000000..b7eb1a3ccfd Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_6.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_7.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_7.png new file mode 100644 index 00000000000..fc21cf2c2e9 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_small_phone_66e7bbf2_022cfc95_7.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_0.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_0.png new file mode 100644 index 00000000000..b94a53ee2e1 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_0.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_1.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_1.png new file mode 100644 index 00000000000..9c5abfb0d17 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_1.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_2.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_2.png new file mode 100644 index 00000000000..98ec12e6c3e Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_2.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_3.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_3.png new file mode 100644 index 00000000000..bdc74fef6bb Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_3.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_4.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_4.png new file mode 100644 index 00000000000..31d5b8630da Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_4.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_5.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_5.png new file mode 100644 index 00000000000..861e67b2d4b Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_5.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_6.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_6.png new file mode 100644 index 00000000000..934b99273a0 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_6.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_7.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_7.png new file mode 100644 index 00000000000..cc05d44ec19 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_2f22c4ea_022cfc95_7.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_0.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_0.png new file mode 100644 index 00000000000..3e17a77240d Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_0.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_1.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_1.png new file mode 100644 index 00000000000..f0f9a35a3a9 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_1.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_2.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_2.png new file mode 100644 index 00000000000..20c0a8d16cb Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_2.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_3.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_3.png new file mode 100644 index 00000000000..d5583bcf892 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_3.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_4.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_4.png new file mode 100644 index 00000000000..ba7a1ab696b Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_4.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_5.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_5.png new file mode 100644 index 00000000000..a29cb6a2e01 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_5.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_6.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_6.png new file mode 100644 index 00000000000..277311bc9c0 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_6.png differ diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_7.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_7.png new file mode 100644 index 00000000000..52bc88f1da8 Binary files /dev/null and b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/matter/ui/MatterCommissioningScreenshotTest/MatterCommissioningScreen steps_tablet_landscape_62cae397_022cfc95_7.png differ