diff --git a/app/src/main/java/com/aurora/store/ComposeActivity.kt b/app/src/main/java/com/aurora/store/ComposeActivity.kt index 33e954c0c..9fa92370e 100644 --- a/app/src/main/java/com/aurora/store/ComposeActivity.kt +++ b/app/src/main/java/com/aurora/store/ComposeActivity.kt @@ -9,11 +9,15 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge +import androidx.compose.runtime.CompositionLocalProvider import androidx.core.content.IntentCompat import androidx.navigation.compose.rememberNavController +import com.aurora.store.compose.compositions.UI +import com.aurora.store.compose.compositions.LocalUI import com.aurora.store.compose.navigation.NavGraph import com.aurora.store.compose.navigation.Screen import com.aurora.store.compose.theme.AuroraTheme +import com.aurora.store.util.PackageUtil import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint @@ -30,10 +34,17 @@ class ComposeActivity : ComponentActivity() { Screen::class.java ) ?: Screen.Blacklist + val localUI = when { + PackageUtil.isTv(this) -> UI.TV + else -> UI.DEFAULT + } + setContent { - AuroraTheme { - val navController = rememberNavController() - NavGraph(navHostController = navController, startDestination = startDestination) + CompositionLocalProvider(LocalUI provides localUI) { + AuroraTheme { + val navController = rememberNavController() + NavGraph(navHostController = navController, startDestination = startDestination) + } } } } diff --git a/app/src/main/java/com/aurora/store/compose/compositions/LocalUI.kt b/app/src/main/java/com/aurora/store/compose/compositions/LocalUI.kt new file mode 100644 index 000000000..26e3fda68 --- /dev/null +++ b/app/src/main/java/com/aurora/store/compose/compositions/LocalUI.kt @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: 2025 The Calyx Institute + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +package com.aurora.store.compose.compositions + +import androidx.compose.runtime.staticCompositionLocalOf + +/** + * Supported UI styles for different types of Android OS + */ +enum class UI { + + /** + * Targets Phone, Foldable, Tablets, Desktop + */ + DEFAULT, + + /** + * Targets TV + */ + TV +} + +/** + * CompositionLocal to provide information on which UI style should be used + */ +val LocalUI = staticCompositionLocalOf { UI.DEFAULT }