Move common part to commonMain

pull/2064/head
lihenggui 1 year ago
parent 917d40fe50
commit 47187f0c7d

@ -48,7 +48,6 @@ import org.koin.core.annotation.Single
*
* @see androidx.profileinstaller.ProfileVerifier.CompilationStatus.ResultCode
*/
@Single
class ProfileVerifierLogger(
@ApplicationScope private val scope: CoroutineScope,
) {

@ -58,5 +58,5 @@ val appModules = module {
*networkModule().toTypedArray(),
)
includes(featureModules)
includes(JankStatsModule().module, AppModule().module)
includes(AppModule().module)
}

@ -1,5 +1,5 @@
/*
* Copyright 2022 The Android Open Source Project
* Copyright 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

@ -1,5 +1,5 @@
/*
* Copyright 2022 The Android Open Source Project
* Copyright 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -54,7 +54,6 @@ import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTagsAsResourceId
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavDestination
@ -180,7 +179,7 @@ internal fun NiaApp(
) {
Scaffold(
modifier = modifier.semantics {
testTagsAsResourceId = true
// testTagsAsResourceId = true
},
containerColor = Color.Transparent,
contentColor = MaterialTheme.colorScheme.onBackground,

@ -1,5 +1,5 @@
/*
* Copyright 2022 The Android Open Source Project
* Copyright 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -20,7 +20,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.navigation.NavController
import androidx.compose.ui.util.trace
import androidx.navigation.NavDestination
import androidx.navigation.NavDestination.Companion.hasRoute
import androidx.navigation.NavGraph.Companion.findStartDestination
@ -28,11 +28,9 @@ import androidx.navigation.NavHostController
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navOptions
import androidx.tracing.trace
import com.google.samples.apps.nowinandroid.core.data.repository.UserNewsResourceRepository
import com.google.samples.apps.nowinandroid.core.data.util.NetworkMonitor
import com.google.samples.apps.nowinandroid.core.data.util.TimeZoneMonitor
import com.google.samples.apps.nowinandroid.core.ui.TrackDisposableJank
import com.google.samples.apps.nowinandroid.feature.bookmarks.navigation.navigateToBookmarks
import com.google.samples.apps.nowinandroid.feature.foryou.navigation.navigateToForYou
import com.google.samples.apps.nowinandroid.feature.interests.navigation.navigateToInterests
@ -57,7 +55,7 @@ fun rememberNiaAppState(
coroutineScope: CoroutineScope = rememberCoroutineScope(),
navController: NavHostController = rememberNavController(),
): NiaAppState {
NavigationTrackingSideEffect(navController)
// NavigationTrackingSideEffect(navController)
return remember(
navController,
coroutineScope,
@ -145,7 +143,7 @@ class NiaAppState(
// Pop up to the start destination of the graph to
// avoid building up a large stack of destinations
// on the back stack as users select items
popUpTo(navController.graph.findStartDestination().id) {
popUpTo(navController.graph.findStartDestination()) {
saveState = true
}
// Avoid multiple copies of the same destination when
@ -169,17 +167,17 @@ class NiaAppState(
/**
* Stores information about navigation events to be used with JankStats
*/
@Composable
private fun NavigationTrackingSideEffect(navController: NavHostController) {
TrackDisposableJank(navController) { metricsHolder ->
val listener = NavController.OnDestinationChangedListener { _, destination, _ ->
metricsHolder.state?.putState("Navigation", destination.route.toString())
}
navController.addOnDestinationChangedListener(listener)
onDispose {
navController.removeOnDestinationChangedListener(listener)
}
}
}
//@Composable
//private fun NavigationTrackingSideEffect(navController: NavHostController) {
// TrackDisposableJank(navController) { metricsHolder ->
// val listener = NavController.OnDestinationChangedListener { _, destination, _ ->
// metricsHolder.state?.putState("Navigation", destination.route.toString())
// }
//
// navController.addOnDestinationChangedListener(listener)
//
// onDispose {
// navController.removeOnDestinationChangedListener(listener)
// }
// }
//}

@ -16,8 +16,6 @@
package com.google.samples.apps.nowinandroid.ui.interests2pane
import androidx.activity.compose.BackHandler
import androidx.annotation.Keep
import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
import androidx.compose.material3.adaptive.WindowAdaptiveInfo
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
@ -50,12 +48,13 @@ import com.google.samples.apps.nowinandroid.feature.topic.navigation.navigateToT
import com.google.samples.apps.nowinandroid.feature.topic.navigation.topicScreen
import kotlinx.serialization.Serializable
import org.koin.compose.viewmodel.koinViewModel
import java.util.UUID
import kotlin.uuid.ExperimentalUuidApi
import kotlin.uuid.Uuid
@Serializable internal object TopicPlaceholderRoute
// TODO: Remove @Keep when https://issuetracker.google.com/353898971 is fixed
@Keep
//@Keep
@Serializable internal object DetailPaneNavHostRoute
fun NavGraphBuilder.interestsListDetailScreen() {
@ -77,7 +76,7 @@ internal fun InterestsListDetailScreen(
)
}
@OptIn(ExperimentalMaterial3AdaptiveApi::class)
@OptIn(ExperimentalMaterial3AdaptiveApi::class, ExperimentalUuidApi::class)
@Composable
internal fun InterestsListDetailScreen(
selectedTopicId: String?,
@ -93,18 +92,21 @@ internal fun InterestsListDetailScreen(
},
),
)
BackHandler(listDetailNavigator.canNavigateBack()) {
listDetailNavigator.navigateBack()
}
// https://youtrack.jetbrains.com/issue/CMP-4419
// Support `BackHandler`/`PredictiveBackHandler`
// BackHandler(listDetailNavigator.canNavigateBack()) {
// listDetailNavigator.navigateBack()
// }
var nestedNavHostStartRoute by remember {
val route = selectedTopicId?.let { TopicRoute(id = it) } ?: TopicPlaceholderRoute
mutableStateOf(route)
}
var nestedNavKey by rememberSaveable(
stateSaver = Saver({ it.toString() }, UUID::fromString),
stateSaver = Saver({ it.toByteArray() }, Uuid::fromByteArray),
) {
mutableStateOf(UUID.randomUUID())
mutableStateOf(Uuid.random())
}
val nestedNavController = key(nestedNavKey) {
rememberNavController()
@ -121,7 +123,7 @@ internal fun InterestsListDetailScreen(
} else {
// Otherwise, recreate the NavHost entirely, and start at the new destination
nestedNavHostStartRoute = TopicRoute(id = topicId)
nestedNavKey = UUID.randomUUID()
nestedNavKey = Uuid.random()
}
listDetailNavigator.navigateTo(ListDetailPaneScaffoldRole.Detail)
}
Loading…
Cancel
Save