Skip to content

Commit 3967b97

Browse files
committed
chore(ui/navigation): add breadcrumbs for navigation events
Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
1 parent c5b4944 commit 3967b97

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

ui/navigation/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ kotlin {
3737
}
3838

3939
dependencies {
40+
implementation(project(":libs:logging"))
4041
implementation(project(":ui:core"))
4142
implementation(project(":ui:theme"))
4243

ui/navigation/src/main/kotlin/com/getcode/navigation/core/CombinedNavigator.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import cafe.adriel.voyager.navigator.tab.TabNavigator
1111
import com.getcode.navigation.modal.ModalScreen
1212
import com.getcode.navigation.screens.AppScreen
1313
import com.getcode.navigation.screens.ChildNavTab
14+
import com.getcode.utils.TraceType
15+
import com.getcode.utils.trace
1416
import kotlinx.coroutines.CoroutineScope
1517
import kotlinx.coroutines.Dispatchers
1618
import kotlinx.coroutines.delay
@@ -46,15 +48,18 @@ class CombinedNavigator(
4648

4749

4850
override fun show(screen: Screen) {
51+
trace(message = "opening ${screen::class.java.simpleName} in a sheet")
4952
sheetNavigator.show(screen)
5053
}
5154

5255
override fun show(items: List<Screen>) {
56+
trace(message = "opening ${items.joinToString { it::class.java.simpleName }} in a sheet")
5357
if (items.isEmpty()) return
5458
sheetNavigator.show(items)
5559
}
5660

5761
override fun hide() {
62+
trace(message = "closing sheet")
5863
sheetNavigator.hide()
5964
}
6065

@@ -82,6 +87,7 @@ class CombinedNavigator(
8287
}
8388

8489
override fun push(item: Screen, delay: Long) {
90+
trace(message = "navigating to ${item::class.java.simpleName}")
8591
launch {
8692
delay(delay)
8793
if (isVisible) {
@@ -93,6 +99,7 @@ class CombinedNavigator(
9399
}
94100

95101
override fun push(items: List<Screen>) {
102+
trace(message = "navigating to ${items.joinToString { it::class.java.simpleName }}")
96103
if (isVisible) {
97104
sheetNavigator.push(items)
98105
} else {
@@ -109,6 +116,7 @@ class CombinedNavigator(
109116
}
110117

111118
override fun replaceAll(items: List<Screen>) {
119+
trace(message = "replacing all in back stack with ${items.joinToString { it::class.java.simpleName }}")
112120
val modalScreens = items.filterIsInstance<ModalScreen>()
113121
val otherScreens = items.filterNot { it is ModalScreen }
114122
screensNavigator?.replaceAll(otherScreens)
@@ -126,6 +134,7 @@ class CombinedNavigator(
126134
}
127135

128136
override fun pop(): Boolean {
137+
trace(message = "popping from back stack")
129138
return if (isVisible) {
130139
sheetNavigator.pop()
131140
} else {
@@ -160,6 +169,7 @@ class CombinedNavigator(
160169
}
161170

162171
override fun popAll() {
172+
trace(message = "popping all from back stack")
163173
if (isVisible) {
164174
sheetNavigator.popAll()
165175
} else {
@@ -192,4 +202,8 @@ class CombinedNavigator(
192202
screensNavigator?.saveableState(key = key, screen = lastScreen, content = content)
193203
}
194204
}
205+
206+
private fun trace(message: String) {
207+
trace(tag = "Navigator", message = message, type = TraceType.Navigation)
208+
}
195209
}

0 commit comments

Comments
 (0)