in android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt [107:142]
public open fun attachChild(childRouter: Router<*>, tag: String) {
for (child in children) {
if (tag == child.tag) {
Rib.getConfiguration()
.handleNonFatalWarning(
String.format(
Locale.getDefault(),
"There is already a child router with tag: %s",
tag,
),
null,
)
}
}
triggerRibActionAndEmitEvents(
childRouter,
RibActionEmitterType.ROUTER,
RibEventType.ATTACHED,
) {
children.add(childRouter)
}
ribRefWatcher.logBreadcrumb(
"ATTACHED",
childRouter.javaClass.simpleName,
this.javaClass.simpleName,
)
RibEvents.emitRouterEvent(RibEventType.ATTACHED, childRouter, this)
var childBundle: Bundle? = null
if (savedInstanceState != null) {
val previousChildren = savedInstanceState?.getBundleExtra(KEY_CHILD_ROUTERS)
childBundle = previousChildren?.getBundleExtra(tag)
}
childRouter.dispatchAttach(childBundle, tag)
}