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 <aayushgupta219@gmail.com>
This commit is contained in:
@@ -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,7 +34,13 @@ class ComposeActivity : ComponentActivity() {
|
||||
Screen::class.java
|
||||
) ?: Screen.Blacklist
|
||||
|
||||
val localUI = when {
|
||||
PackageUtil.isTv(this) -> UI.TV
|
||||
else -> UI.DEFAULT
|
||||
}
|
||||
|
||||
setContent {
|
||||
CompositionLocalProvider(LocalUI provides localUI) {
|
||||
AuroraTheme {
|
||||
val navController = rememberNavController()
|
||||
NavGraph(navHostController = navController, startDestination = startDestination)
|
||||
@@ -38,3 +48,4 @@ class ComposeActivity : ComponentActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 }
|
||||
Reference in New Issue
Block a user