in tooling/rib-flipper-plugin/src/main/kotlin/com/uber/rib/flipper/RibTreePlugin.kt [74:104]
override fun onConnect(connection: FlipperConnection) {
android.util.Log.d("RibTreeFlipperPlugin", "onConnect()")
this.connection = connection
disposable =
events.subscribe { e: RibEventPayload ->
this.connection?.send(e.eventName, e.toFlipperPayload())
}
connection.receive(SHOW_HIGHLIGHT.toString()) { params: FlipperObject, _: FlipperResponder? ->
val id: String = params.getString(EVENT_PARAMETER_ID)
val router: Router<*>? = getRouterById(id)
if (router is ViewRouter<*, *>) {
val view: android.view.View = router.view
val overlay = RibDebugOverlay()
view.getOverlay().add(overlay)
view.invalidate()
idsToOverlay.put(id, WeakReference<RibDebugOverlay>(overlay))
}
}
connection.receive(HIDE_HIGHLIGHT.toString()) { params: FlipperObject, _: FlipperResponder? ->
val id: String = params.getString(EVENT_PARAMETER_ID)
val router: Router<*>? = getRouterById(id)
if (router is ViewRouter<*, *>) {
val view: android.view.View = router.view
val overlayRef: WeakReference<RibDebugOverlay> = idsToOverlay[id] ?: return@receive
idsToOverlay.remove(id)
val overlay: RibDebugOverlay = overlayRef.get() ?: return@receive
view.getOverlay().remove(overlay)
view.invalidate()
}
}
}