Skip to content

Commit

Permalink
Updated Jetpack Compose module API
Browse files Browse the repository at this point in the history
  • Loading branch information
chRyNaN committed May 22, 2023
1 parent 58e062f commit e0fe2a3
Show file tree
Hide file tree
Showing 13 changed files with 300 additions and 195 deletions.
4 changes: 4 additions & 0 deletions navigation-compose/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ kotlin {
implementation(compose.runtime)
implementation(compose.ui)
implementation(compose.foundation)

implementation(KotlinX.serialization.core)
implementation("com.chrynan.parcelable:parcelable-core:_")
implementation("com.chrynan.parcelable:parcelable-compose:_")
}
}
if (isBuildingOnOSX()) {
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,39 +1,44 @@
package com.chrynan.navigation.compose

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import com.chrynan.navigation.ExperimentalNavigationApi
import com.chrynan.navigation.NavigationContext
import com.chrynan.navigation.NavigationDestination
import com.chrynan.navigation.Navigator
import com.chrynan.navigation.*

/**
* A [Composable] that listens to navigation context and destination changes from the provided [navigator] and calls
* the provided [content] [Composable] function with the latest values.
*
* Example usage:
* ```kotlin
* NavContainer(navigator) { context, destination ->
* NavContainer(
* navigator = navigator,
* modifier = modifier
* ) { context, destination ->
* Text("context = $context; destination = $destination")
* }
* ```
*/
@Suppress("FunctionName")
@Composable
@ExperimentalNavigationApi
fun <Destination : NavigationDestination, Context : NavigationContext<Destination>> NavContainer(
fun <Destination : NavigationDestination, Context : NavigationContext<Destination>> NavigationContainer(
navigator: Navigator<Destination, Context>,
content: @Composable ComposeNavigationScope.(context: Context, destination: Destination) -> Unit
modifier: Modifier = Modifier,
content: @Composable BoxScope.(context: Context, destination: Destination) -> Unit
) {
val context = navigator.state.currentContextAsState()
val destination = navigator.state.currentDestinationAsState()
val context = navigator.store.context.collectAsState()
val destination = navigator.store.destination.collectAsState()

content(ComposeNavigationScope, context.value, destination.value)
Box(modifier = modifier) {
content(this, context.value, destination.value)
}
}

/**
* A [Composable] that listens to navigation context and destination changes from the provided [navigator] and calls
* the provided [content] [Composable] function with the latest values.
* A [Composable] that listens to navigation destination changes for a [SingleNavigationContext] from the provided
* [navigator] and calls the provided [content] [Composable] function with the latest values.
*
* Example usage:
* ```kotlin
Expand All @@ -45,17 +50,17 @@ fun <Destination : NavigationDestination, Context : NavigationContext<Destinatio
* }
* ```
*/
@Suppress("FunctionName")
@Composable
@ExperimentalNavigationApi
fun <Destination : NavigationDestination, Context : NavigationContext<Destination>> NavContainer(
navigator: Navigator<Destination, Context>,
modifier: Modifier,
content: @Composable ComposeNavigationScope.(context: Context, destination: Destination) -> Unit
fun <Destination : NavigationDestination> NavigationContainer(
navigator: Navigator<Destination, SingleNavigationContext<Destination>>,
modifier: Modifier = Modifier,
content: @Composable BoxScope.(destination: Destination) -> Unit
) {
val context = navigator.state.currentContextAsState()
val destination = navigator.state.currentDestinationAsState()
val destination = navigator.store.destination.collectAsState()

Box(modifier = modifier) {
content(ComposeNavigationScope, context.value, destination.value)
content(this, destination.value)
}
}
Loading

0 comments on commit e0fe2a3

Please sign in to comment.