Usage_patterns_by_status-react.md
1 1. Usage patterns by status-react 2 3 status-go has a number of customisations for go-ethereum and many of 4 them are usually not obvious. Nor what status-react is present in 5 human-readable form. 6 7 This page serves as a place with a collection of random facts about how 8 status-react uses status-go. This should be revised and structured and 9 currently just a quick start. 10 11 ## How status-react calls status-go? 12 13 1. React Native, which is used for running app itself, this env can 14 call web3 through CallRPC and we have a full control over code 15 inside this env 16 2. webviews: among other things Status is dapp browser, so users can 17 run dapps in the webview and we inject web3 object into webview in 18 order to make this happen. We don’t have control over code inside 19 this env, it’s third party. All calls to web3 inside webview are 20 passed to CallRPC as well 21 3. jail (otto vm): we are using this env in order to allow third party 22 to define commands and different bot’s behaviour in chat. Calls to 23 web3 are handled internally on go side, so we don’t use CallRPC at 24 least from status-react side here. Ans again, code is written by 25 third parties, except our own bots 26 4. JNI signals: 27 [1](https://github.com/status-im/status-go/wiki/Notes-on-Bindings)(https://github.com/status-im/status-go/wiki/Notes-on-Bindings) 28 29 ## What are Send and SendAsync? 30 31 \!\[\](https://i.imgur.com/Ov1Y0H4.png) 32 33 The source: 34 35 ` Consumer->Go Bindings: Call` 36 37 1. 1. Send Transaction Flow 38 39 When the (async) handler of \`/send\` command is executed, the callback 40 doesn’t return till the transaction queue is committed (confirmed), but 41 immediately we got confirmation from jail about transaction being added 42 (“transaction.queued” event). 43 44 Also, some insights can be found in 45 [2](https://github.com/status-im/status-go/wiki/Notes-on-Bindings)(https://github.com/status-im/status-go/wiki/Notes-on-Bindings)