Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 12 additions & 28 deletions app/src/main/java/com/geeksville/mesh/navigation/ContactsRoutes.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,13 @@ import androidx.navigation.navDeepLink
import androidx.navigation.navigation
import androidx.navigation.toRoute
import com.geeksville.mesh.model.UIViewModel
import com.geeksville.mesh.ui.contact.ContactsScreen
import com.geeksville.mesh.ui.message.MessageScreen
import com.geeksville.mesh.ui.contact.Contacts
import com.geeksville.mesh.ui.message.QuickChatScreen
import com.geeksville.mesh.ui.sharing.ShareScreen
import kotlinx.serialization.Serializable

sealed class ContactsRoutes {
@Serializable data object Contacts : Route

@Serializable data class Messages(val contactKey: String, val message: String = "") : Route
@Serializable data class Messages(val contactKey: String? = null, val message: String? = null) : Route

@Serializable data class Share(val message: String) : Route

Expand All @@ -44,35 +41,22 @@ sealed class ContactsRoutes {

@Suppress("LongMethod")
fun NavGraphBuilder.contactsGraph(navController: NavHostController, uiViewModel: UIViewModel) {
navigation<ContactsRoutes.ContactsGraph>(startDestination = ContactsRoutes.Contacts) {
composable<ContactsRoutes.Contacts>(
deepLinks = listOf(navDeepLink<ContactsRoutes.Contacts>(basePath = "$DEEP_LINK_BASE_URI/contacts")),
) {
ContactsScreen(
uiViewModel,
onNavigateToMessages = { navController.navigate(ContactsRoutes.Messages(it)) },
onNavigateToNodeDetails = { navController.navigate(NodesRoutes.NodeDetailGraph(it)) },
onNavigateToShare = { navController.navigate(ChannelsRoutes.ChannelsGraph) },
)
}
navigation<ContactsRoutes.ContactsGraph>(startDestination = ContactsRoutes.Messages()) {
composable<ContactsRoutes.Messages>(
deepLinks =
listOf(
navDeepLink<ContactsRoutes.Messages>(
basePath =
"$DEEP_LINK_BASE_URI/messages", // {contactKey} and ?message={message} are auto-appended
),
navDeepLink<ContactsRoutes.Messages>(basePath = "$DEEP_LINK_BASE_URI/contacts"),
navDeepLink<ContactsRoutes.Messages>(basePath = "$DEEP_LINK_BASE_URI/messages"),
),
) { backStackEntry ->
val args = backStackEntry.toRoute<ContactsRoutes.Messages>()
MessageScreen(
Contacts(
contactKey = args.contactKey,
message = args.message,
viewModel = uiViewModel,
navigateToMessages = { navController.navigate(ContactsRoutes.Messages(it)) },
navigateToNodeDetails = { navController.navigate(NodesRoutes.NodeDetailGraph(it)) },
navigateToQuickChatOptions = { navController.navigate(ContactsRoutes.QuickChat) },
onNavigateBack = navController::navigateUp,
uiViewModel = uiViewModel,
onNavigateToNodeDetails = { navController.navigate(NodesRoutes.NodeDetailGraph(it)) },
onNavigateToShare = { navController.navigate(ChannelsRoutes.Channels) },
onNavigateToQuickChat = { navController.navigate(ContactsRoutes.QuickChat) },
)
}
}
Expand All @@ -84,9 +68,9 @@ fun NavGraphBuilder.contactsGraph(navController: NavHostController, uiViewModel:
),
),
) { backStackEntry ->
val message = backStackEntry.toRoute<ContactsRoutes.Share>().message
val args = backStackEntry.toRoute<ContactsRoutes.Share>()
ShareScreen(uiViewModel) {
navController.navigate(ContactsRoutes.Messages(it, message)) {
navController.navigate(ContactsRoutes.Messages(contactKey = it, message = args.message)) {
popUpTo<ContactsRoutes.Share> { inclusive = true }
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ class MeshServiceNotifications(private val context: Context) {
}

private fun createOpenMessageIntent(contactKey: String): PendingIntent {
val deepLinkUri = "$DEEP_LINK_BASE_URI/messages/$contactKey".toUri()
val deepLinkUri = "$DEEP_LINK_BASE_URI/messages?contactKey=$contactKey".toUri()
val deepLinkIntent =
Intent(Intent.ACTION_VIEW, deepLinkUri, context, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_SINGLE_TOP
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/java/com/geeksville/mesh/ui/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ import com.geeksville.mesh.navigation.SettingsRoutes
import com.geeksville.mesh.repository.radio.MeshActivity
import com.geeksville.mesh.service.ConnectionState
import com.geeksville.mesh.service.MeshService
import com.geeksville.mesh.ui.common.components.MainAppBar
import com.geeksville.mesh.ui.common.components.GlobalAppBar
import com.geeksville.mesh.ui.common.components.MultipleChoiceAlertDialog
import com.geeksville.mesh.ui.common.components.ScannedQrCodeDialog
import com.geeksville.mesh.ui.common.components.SimpleAlertDialog
Expand All @@ -116,7 +116,7 @@ import kotlinx.coroutines.launch
import kotlin.reflect.KClass

enum class TopLevelDestination(@StringRes val label: Int, val icon: ImageVector, val route: Route) {
Conversations(R.string.conversations, MeshtasticIcons.Conversations, ContactsRoutes.ContactsGraph),
Conversations(R.string.conversations, MeshtasticIcons.Conversations, ContactsRoutes.Messages()),
Nodes(R.string.nodes, MeshtasticIcons.Nodes, NodesRoutes.NodesGraph),
Map(R.string.map, MeshtasticIcons.Map, MapRoutes.Map),
Settings(R.string.bottom_nav_settings, MeshtasticIcons.Settings, SettingsRoutes.SettingsGraph()),
Expand All @@ -125,7 +125,7 @@ enum class TopLevelDestination(@StringRes val label: Int, val icon: ImageVector,

companion object {
fun NavDestination.isTopLevel(): Boolean = listOf<KClass<out Route>>(
ContactsRoutes.Contacts::class,
ContactsRoutes.Messages::class,
NodesRoutes.Nodes::class,
MapRoutes.Map::class,
ConnectionsRoutes.Connections::class,
Expand Down Expand Up @@ -343,7 +343,7 @@ fun MainScreen(
if (sharedContact != null) {
SharedContactDialog(contact = sharedContact, onDismiss = { sharedContact = null })
}
MainAppBar(
GlobalAppBar(
viewModel = uIViewModel,
navController = navController,
onAction = { action ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ import com.geeksville.mesh.ui.node.components.NodeMenuAction

@Suppress("CyclomaticComplexMethod")
@Composable
fun MainAppBar(
fun GlobalAppBar(
modifier: Modifier = Modifier,
viewModel: UIViewModel = hiltViewModel(),
navController: NavHostController,
Expand Down Expand Up @@ -123,7 +123,7 @@ fun MainAppBar(

@OptIn(ExperimentalMaterial3ExpressiveApi::class, ExperimentalMaterial3Api::class)
@Composable
private fun MainAppBar(
fun MainAppBar(
modifier: Modifier = Modifier,
title: String,
subtitle: String? = null,
Expand Down
Loading