Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8f51b6b authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "Add startDestination arg to SpaActivity"

parents ae601be1 c54004f2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@
        android:label="@string/app_label"
        android:supportsRtl="true">
        <activity
            android:name="com.android.settingslib.spa.gallery.MainActivity"
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
+20 −12
Original line number Diff line number Diff line
@@ -36,17 +36,22 @@ open class SpaActivity(
    override fun onCreate(savedInstanceState: Bundle?) {
        setTheme(R.style.Theme_SpaLib_DayNight)
        super.onCreate(savedInstanceState)

        setContent {
            SettingsTheme {
                MainContent()
            }
        }
    }

    @Composable
    private fun MainContent() {
        SettingsTheme {
        val startDestination =
            intent?.getStringExtra(KEY_START_DESTINATION) ?: settingsPageRepository.startDestination

        val navController = rememberNavController()
        CompositionLocalProvider(navController.localNavController()) {
                NavHost(navController, settingsPageRepository.startDestination) {
            NavHost(navController, startDestination) {
                for (page in settingsPageRepository.allPages) {
                    composable(
                        route = page.route,
@@ -58,8 +63,11 @@ open class SpaActivity(
            }
        }
    }
    }

    private val SettingsPageProvider.route: String
        get() = name + arguments.joinToString("") { argument -> "/{${argument.name}}" }

    companion object {
        const val KEY_START_DESTINATION = "spa:SpaActivity:startDestination"
    }
}