Repository: android/compose-samples
File: Jetcaster/app/src/main/java/com/example/jetcaster/ui/player/PlayerScreen.kt (Kotlin)

Code before:
    Surface(modifier) {
        if (uiState.podcastName.isNotEmpty()) {
            PlayerContent(uiState, devicePosture, onBackPress)
        } else {
            FullScreenLoading(modifier)
        }
    }
}

@OptIn(ExperimentalCoilApi::class)
@Composable
fun PlayerContent(
    uiState: PlayerUiState,
    devicePosture: DevicePosture,
    onBackPress: () -> Unit
) {
    PlayerDynamicTheme(uiState.podcastImageUrl) {
        // As the Player UI content changes considerably when the device is in tabletop posture,
        // we split the different UIs in different composables. For simpler UIs that don't change
        // much, prefer one composable that makes decisions based on the mode instead.
        when (devicePosture) {
            is DevicePosture.TableTopPosture ->
                PlayerContentTableTop(uiState, devicePosture, onBackPress)
            is DevicePosture.BookPosture ->
                PlayerContentBook(uiState, devicePosture, onBackPress)
            is DevicePosture.Separating ->
                if (devicePosture.orientation == FoldingFeature.Orientation.HORIZONTAL) {
                    PlayerContentTableTop(
                        uiState,
                        DevicePosture.TableTopPosture(devicePosture.hingePosition),
                        onBackPress
                    )
                } else {
                    PlayerContentBook(
                        uiState,
                        DevicePosture.BookPosture(devicePosture.hingePosition),
                        onBackPress
                    )
                }
            else ->
                PlayerContentRegular(uiState, onBackPress)
        }
    }
}

@Composable
private fun PlayerContentRegular(
    uiState: PlayerUiState,
    onBackPress: () -> Unit
) {
    Column(

Review comment (suggestion):
Hi I was planning to use DevicePosture in Reply demo as well. I was wondering if we should have a standard device posture class for compose covering all cases or these are the most of the possible states? cc @alexvanyo  

Code after:
    Surface(modifier) {
        if (uiState.podcastName.isNotEmpty()) {
            PlayerContent(uiState, devicePosture, onBackPress)
        } else {
            FullScreenLoading(modifier)
        }
    }
}

@OptIn(ExperimentalCoilApi::class)
@Composable
fun PlayerContent(
    uiState: PlayerUiState,
    devicePosture: DevicePosture,
    onBackPress: () -> Unit
) {
    PlayerDynamicTheme(uiState.podcastImageUrl) {
        // As the Player UI content changes considerably when the device is in tabletop posture,
        // we split the different UIs in different composables. For simpler UIs that don't change
        // much, prefer one composable that makes decisions based on the mode instead.
        when (devicePosture) {
            is DevicePosture.TableTopPosture ->
                PlayerContentTableTop(uiState, devicePosture, onBackPress)
            is DevicePosture.BookPosture ->
                PlayerContentBook(uiState, devicePosture, onBackPress)
            is DevicePosture.SeparatingPosture ->
                if (devicePosture.orientation == FoldingFeature.Orientation.HORIZONTAL) {
                    PlayerContentTableTop(
                        uiState,
                        DevicePosture.TableTopPosture(devicePosture.hingePosition),
                        onBackPress
                    )
                } else {
                    PlayerContentBook(
                        uiState,
                        DevicePosture.BookPosture(devicePosture.hingePosition),
                        onBackPress
                    )
                }
            else ->
                PlayerContentRegular(uiState, onBackPress)
        }
    }
}

@Composable
private fun PlayerContentRegular(
    uiState: PlayerUiState,
    onBackPress: () -> Unit
) {
    Column(