This commit is contained in:
i7xre 2026-07-26 19:33:01 +03:00 committed by GitHub
commit 79fb3ca7d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 44 additions and 1 deletions

View file

@ -68,6 +68,7 @@ import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.compose.ui.zIndex
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@ -1851,7 +1852,11 @@ private fun MainAppContent(
)
BoxWithConstraints(modifier = Modifier.fillMaxSize()) {
val isTabletLayout = useTabletFloatingTabBar || maxWidth >= 768.dp
val isTabletLayout = isTabletAppLayout(
width = maxWidth,
height = maxHeight,
forceTabletLayout = useTabletFloatingTabBar,
)
val useNativeBottomTabs = if (useNativeNavigation) {
useNativeTabBar
} else {
@ -3590,6 +3595,12 @@ private fun MainAppContent(
}
}
internal fun isTabletAppLayout(
width: Dp,
height: Dp,
forceTabletLayout: Boolean = false,
): Boolean = forceTabletLayout || minOf(width, height) >= 768.dp
@Composable
private fun rememberGuardedPopBackStack(
navController: NuvioNavigator,

View file

@ -0,0 +1,32 @@
package com.nuvio.app
import androidx.compose.ui.unit.dp
import kotlin.test.Test
import kotlin.test.assertFalse
import kotlin.test.assertTrue
class AppLayoutTest {
@Test
fun `phone navigation classification stays stable across rotation`() {
assertFalse(isTabletAppLayout(width = 666.dp, height = 1000.dp))
assertFalse(isTabletAppLayout(width = 1000.dp, height = 666.dp))
}
@Test
fun `tablet navigation classification stays stable across rotation`() {
assertTrue(isTabletAppLayout(width = 800.dp, height = 1280.dp))
assertTrue(isTabletAppLayout(width = 1280.dp, height = 800.dp))
}
@Test
fun `platform override still forces tablet navigation`() {
assertTrue(
isTabletAppLayout(
width = 390.dp,
height = 844.dp,
forceTabletLayout = true,
),
)
}
}