React Native to Go connection

From Status Wiki
This is the approved revision of this page, as well as being the most recent.
Jump to: navigation, search

Function calls

All status-react to status-go calls are centralized in StatusModule (android) or RCTStatus (ios). General structure of methods is:

  • caller provides a callback
  • check for availability of current Activity
  • if available: call a static method on StatusGo via an ExecutorService (or sometimes a Thread) and use its result as callback payload
  • else: ivoke callback with false as payload

From RN perspective calls do not block, result is provided through callback execution.

StatusGo is a C library generated from go cade embeded in Status apps. On android it is packaged as a JNI aar (generated using xgo).

StatusGo directly expose status-go methods marked for exportation. Those methods are defined in cmd/statusd/library.go and marked as export. go side calls are then dispatched to geth/api then geth/jail

Data is provided to the go layer as primitive types and retieved RN side as JSON.

Events

status-go can directly send events that will be received RN side. It achieves that by directly calling signal-event using some JNI glue.

StatusModule is also used as a react context listener that emits event to the RN layer.

status-react listens to those events via gethEvent then dispatched by a re-frame handler.