Skip to content

Commit 9ce4c8f

Browse files
authored
Bugfix/#344 disallow unknown destination (#354)
* Fix unregistered destinations might be opened in navigation * fix detekt * migrate to direct destination loader approach * minor refactor + update abi * cleanup
1 parent d8f9af3 commit 9ce4c8f

16 files changed

Lines changed: 290 additions & 80 deletions

File tree

gradle/tiamat.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[versions]
2-
tiamat = "2.2.0"
2+
tiamat = "2.3.0"
33

44
minSdk = "21"
55
compileSdk = "36"

sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/App.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,4 @@ data class PlatformFeatures(
5858
@Composable
5959
private fun AppPreview() {
6060
App()
61-
}
61+
}

tiamat-destinations/tiamat-destinations/src/commonMain/kotlin/com/composegears/tiamat/destinations/TiamatGraph.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.composegears.tiamat.destinations
22

3+
import androidx.compose.runtime.Stable
34
import com.composegears.tiamat.TiamatExperimentalApi
45
import com.composegears.tiamat.navigation.NavDestination
56

@@ -9,6 +10,7 @@ import com.composegears.tiamat.navigation.NavDestination
910
* Graphs can be created by implementing this interface directly or by using
1011
* the annotation processor with the [InstallIn] annotation.
1112
*/
13+
@Stable
1214
@SubclassOptInRequired(TiamatExperimentalApi::class)
1315
public interface TiamatGraph {
1416
/**

tiamat/api/jvm/tiamat.api

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
public abstract interface annotation class com/composegears/tiamat/TiamatExperimentalApi : java/lang/annotation/Annotation {
22
}
33

4+
public abstract interface annotation class com/composegears/tiamat/TiamatUnsafeApi : java/lang/annotation/Annotation {
5+
}
6+
47
public final class com/composegears/tiamat/UtilsKt {
58
public static final fun toHumanReadableString (Ljava/util/Map;Ljava/lang/String;I)Ljava/lang/String;
69
public static synthetic fun toHumanReadableString$default (Ljava/util/Map;Ljava/lang/String;IILjava/lang/Object;)Ljava/lang/String;
@@ -33,21 +36,21 @@ public final class com/composegears/tiamat/compose/ComposableNavDestinationKt {
3336
}
3437

3538
public final class com/composegears/tiamat/compose/ComposableNavigationKt {
36-
public static final fun Navigation (Lcom/composegears/tiamat/navigation/NavController;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V
39+
public static final fun Navigation (Lcom/composegears/tiamat/navigation/NavController;Lcom/composegears/tiamat/compose/DestinationLoader;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V
3740
public static final fun Navigation (Lcom/composegears/tiamat/navigation/NavController;[Lcom/composegears/tiamat/navigation/NavDestination;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V
38-
public static final fun NavigationScene (Lcom/composegears/tiamat/navigation/NavController;Lkotlin/jvm/functions/Function1;ZLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
41+
public static final fun NavigationScene (Lcom/composegears/tiamat/navigation/NavController;Lcom/composegears/tiamat/compose/DestinationLoader;ZLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
3942
public static final fun NavigationScene (Lcom/composegears/tiamat/navigation/NavController;[Lcom/composegears/tiamat/navigation/NavDestination;ZLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
4043
public static final fun getLocalNavAnimatedVisibilityScope ()Landroidx/compose/runtime/ProvidableCompositionLocal;
4144
}
4245

4346
public final class com/composegears/tiamat/compose/ComposablePreviewKt {
44-
public static final fun TiamatPreview (Lcom/composegears/tiamat/navigation/NavDestination;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/Composer;II)V
47+
public static final fun TiamatPreview (Lcom/composegears/tiamat/navigation/NavDestination;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V
4548
}
4649

4750
public final class com/composegears/tiamat/compose/ComposableSingletons$ComposableNavigationKt {
4851
public static final field INSTANCE Lcom/composegears/tiamat/compose/ComposableSingletons$ComposableNavigationKt;
4952
public fun <init> ()V
50-
public final fun getLambda$-1750091015$tiamat ()Lkotlin/jvm/functions/Function3;
53+
public final fun getLambda$200833937$tiamat ()Lkotlin/jvm/functions/Function3;
5154
}
5255

5356
public final class com/composegears/tiamat/compose/ComposeNavDestination : com/composegears/tiamat/navigation/NavDestination {
@@ -72,6 +75,34 @@ public final class com/composegears/tiamat/compose/ContentExtension$Type : java/
7275
public static fun values ()[Lcom/composegears/tiamat/compose/ContentExtension$Type;
7376
}
7477

78+
public abstract interface class com/composegears/tiamat/compose/DestinationLoader {
79+
public static final field Companion Lcom/composegears/tiamat/compose/DestinationLoader$Companion;
80+
public abstract fun load (Ljava/lang/String;)Lcom/composegears/tiamat/navigation/NavDestination;
81+
}
82+
83+
public final class com/composegears/tiamat/compose/DestinationLoader$ByKey : com/composegears/tiamat/compose/DestinationLoader {
84+
public static final field $stable I
85+
public fun <init> (Lkotlin/jvm/functions/Function1;)V
86+
public fun load (Ljava/lang/String;)Lcom/composegears/tiamat/navigation/NavDestination;
87+
}
88+
89+
public final class com/composegears/tiamat/compose/DestinationLoader$Companion {
90+
public final fun byKey (Lkotlin/jvm/functions/Function1;)Lcom/composegears/tiamat/compose/DestinationLoader;
91+
public final fun from ([Lcom/composegears/tiamat/navigation/NavDestination;)Lcom/composegears/tiamat/compose/DestinationLoader;
92+
}
93+
94+
public final class com/composegears/tiamat/compose/DestinationLoader$DoNotLoad : com/composegears/tiamat/compose/DestinationLoader {
95+
public static final field $stable I
96+
public static final field INSTANCE Lcom/composegears/tiamat/compose/DestinationLoader$DoNotLoad;
97+
public fun load (Ljava/lang/String;)Lcom/composegears/tiamat/navigation/NavDestination;
98+
}
99+
100+
public final class com/composegears/tiamat/compose/DestinationLoader$FromArray : com/composegears/tiamat/compose/DestinationLoader {
101+
public static final field $stable I
102+
public fun <init> ([Lcom/composegears/tiamat/navigation/NavDestination;)V
103+
public fun load (Ljava/lang/String;)Lcom/composegears/tiamat/navigation/NavDestination;
104+
}
105+
75106
public final class com/composegears/tiamat/compose/NavActionsKt {
76107
public static final fun back (Lcom/composegears/tiamat/navigation/NavController;Lcom/composegears/tiamat/navigation/NavDestination;Ljava/lang/Object;ZZLandroidx/compose/animation/ContentTransform;Lcom/composegears/tiamat/compose/TransitionController;)Z
77108
public static synthetic fun back$default (Lcom/composegears/tiamat/navigation/NavController;Lcom/composegears/tiamat/navigation/NavDestination;Ljava/lang/Object;ZZLandroidx/compose/animation/ContentTransform;Lcom/composegears/tiamat/compose/TransitionController;ILjava/lang/Object;)Z
@@ -229,6 +260,7 @@ public abstract class com/composegears/tiamat/navigation/NavDestination : com/co
229260
public static final field $stable I
230261
public static final field Companion Lcom/composegears/tiamat/navigation/NavDestination$Companion;
231262
public fun <init> (Ljava/lang/String;Lkotlin/reflect/KType;)V
263+
public final fun getKey ()Ljava/lang/String;
232264
public final fun getName ()Ljava/lang/String;
233265
}
234266

0 commit comments

Comments
 (0)