diff --git a/enro-processor/src/main/java/dev/enro/processor/generator/NavigationComponentGenerator.kt b/enro-processor/src/main/java/dev/enro/processor/generator/NavigationComponentGenerator.kt index 83aca96c..9c428776 100644 --- a/enro-processor/src/main/java/dev/enro/processor/generator/NavigationComponentGenerator.kt +++ b/enro-processor/src/main/java/dev/enro/processor/generator/NavigationComponentGenerator.kt @@ -76,6 +76,11 @@ object NavigationComponentGenerator { .addModifiers(KModifier.PUBLIC) .returns(ClassNames.Kotlin.navigationController) .addPlatformParameter() + .addParameter( + ParameterSpec.builder("isDebug", Boolean::class) + .defaultValue("false") + .build() + ) .addParameter( ParameterSpec.builder( "block", @@ -103,10 +108,11 @@ object NavigationComponentGenerator { .addCode( """ val controller = internalCreateEnroController( + isDebug = isDebug, builder = { - ${generatedComponent.name}().apply { + ${generatedComponent.name}().apply { module(module) - invoke() + invoke() } block() } @@ -148,6 +154,7 @@ object NavigationComponentGenerator { return androidx.compose.runtime.remember { installNavigationController( $platformParameterName = Unit, + isDebug = isDebug, block = block, ) } diff --git a/enro-runtime/src/commonMain/kotlin/dev/enro/EnroController.kt b/enro-runtime/src/commonMain/kotlin/dev/enro/EnroController.kt index 949435ec..cf9f5bc9 100644 --- a/enro-runtime/src/commonMain/kotlin/dev/enro/EnroController.kt +++ b/enro-runtime/src/commonMain/kotlin/dev/enro/EnroController.kt @@ -17,8 +17,9 @@ import kotlinx.serialization.json.Json @Stable public class EnroController { - // TODO NEED TO CONFIGURE THIS - internal val isDebug = false + // Set during construction by internalCreateEnroController, plumbed through + // from the isDebug parameter on the generated installNavigationController. + internal var isDebug: Boolean = false internal var platformReference: Any? = null internal val plugins = PluginRepository() internal val bindings = BindingRepository(plugins) diff --git a/enro-runtime/src/commonMain/kotlin/dev/enro/controller/internalCreateEnroController.kt b/enro-runtime/src/commonMain/kotlin/dev/enro/controller/internalCreateEnroController.kt index f200148e..81efa058 100644 --- a/enro-runtime/src/commonMain/kotlin/dev/enro/controller/internalCreateEnroController.kt +++ b/enro-runtime/src/commonMain/kotlin/dev/enro/controller/internalCreateEnroController.kt @@ -5,10 +5,12 @@ import dev.enro.platform.platformNavigationModule // Marked as internal, but is used in generated code with a @Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") internal fun internalCreateEnroController( + isDebug: Boolean = false, builder: NavigationModule.BuilderScope.() -> Unit = {}, ) : EnroController { val module = createNavigationModule(builder) return EnroController().apply { + this.isDebug = isDebug addModule(defaultNavigationModule) addModule(platformNavigationModule) addModule(module) diff --git a/enro-runtime/src/commonMain/kotlin/dev/enro/ui/NavigationContainerState.kt b/enro-runtime/src/commonMain/kotlin/dev/enro/ui/NavigationContainerState.kt index 29f86fb3..763892a7 100644 --- a/enro-runtime/src/commonMain/kotlin/dev/enro/ui/NavigationContainerState.kt +++ b/enro-runtime/src/commonMain/kotlin/dev/enro/ui/NavigationContainerState.kt @@ -77,7 +77,14 @@ public class NavigationContainerState( container.setBackstackDirect(restoredBackstack.asBackstack()) } - @Deprecated("TODO BETTER DEPRECATION MESSAGE") + @Deprecated( + message = "Use NavigationDisplay(state) instead. This method only exists for migration ergonomics and will be removed before 3.0 stable.", + replaceWith = ReplaceWith( + expression = "NavigationDisplay(this)", + imports = ["dev.enro.ui.NavigationDisplay"], + ), + level = DeprecationLevel.WARNING, + ) @Composable public fun Render() { NavigationDisplay(this)