override fun onConnect()

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()
      }
    }
  }