From 6c38ff54795cd1b5636b8b6dc803feb1f75c5060 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Fri, 2 May 2025 18:38:13 +0800 Subject: [PATCH] compose: Introduce new compositionLocal for different Android OS Android uses different variant of OS on devices such as TV, Wear, and Auto. Introduce a new compositionLocal to detect and show different UI as needed. Signed-off-by: Aayush Gupta --- .../java/com/aurora/store/ComposeActivity.kt | 17 +++++++++-- .../store/compose/compositions/LocalUI.kt | 29 +++++++++++++++++++ 2 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/aurora/store/compose/compositions/LocalUI.kt 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 }