github.com/status-im/status-go@v1.1.0/signal/events_node.go (about) 1 package signal 2 3 import ( 4 "encoding/json" 5 6 "github.com/status-im/status-go/multiaccounts" 7 "github.com/status-im/status-go/multiaccounts/settings" 8 ) 9 10 const ( 11 // EventNodeStarted is triggered when underlying node is started 12 EventNodeStarted = "node.started" 13 14 // EventNodeReady is triggered when underlying node is fully ready 15 // (consider backend to be fully registered) 16 EventNodeReady = "node.ready" 17 18 // EventNodeStopped is triggered when underlying node is fully stopped 19 EventNodeStopped = "node.stopped" 20 21 // EventNodeCrashed is triggered when node crashes 22 EventNodeCrashed = "node.crashed" 23 24 // EventChainDataRemoved is triggered when node's chain data is removed 25 EventChainDataRemoved = "chaindata.removed" 26 27 // EventLoggedIn is once node was injected with user account and ready to be used. 28 EventLoggedIn = "node.login" 29 ) 30 31 // NodeCrashEvent is special kind of error, used to report node crashes 32 type NodeCrashEvent struct { 33 Error string `json:"error"` 34 } 35 36 // NodeLoginEvent returns the result of the login event 37 type NodeLoginEvent struct { 38 Error string `json:"error,omitempty"` 39 Settings *settings.Settings `json:"settings,omitempty"` 40 Account *multiaccounts.Account `json:"account,omitempty"` 41 EnsUsernames json.RawMessage `json:"ensUsernames,omitempty"` 42 } 43 44 // SendNodeCrashed emits a signal when status node has crashed, and 45 // provides error description. 46 func SendNodeCrashed(err error) { 47 send(EventNodeCrashed, 48 NodeCrashEvent{ 49 Error: err.Error(), 50 }) 51 } 52 53 // SendNodeStarted emits a signal when status node has just started (but not 54 // finished startup yet). 55 func SendNodeStarted() { 56 send(EventNodeStarted, nil) 57 } 58 59 // SendNodeReady emits a signal when status node has started and successfully 60 // completed startup. 61 func SendNodeReady() { 62 send(EventNodeReady, nil) 63 } 64 65 // SendNodeStopped emits a signal when underlying node has stopped. 66 func SendNodeStopped() { 67 send(EventNodeStopped, nil) 68 } 69 70 // SendChainDataRemoved emits a signal when node's chain data has been removed. 71 func SendChainDataRemoved() { 72 send(EventChainDataRemoved, nil) 73 } 74 75 func SendLoggedIn(account *multiaccounts.Account, settings *settings.Settings, ensUsernames json.RawMessage, err error) { 76 event := NodeLoginEvent{Settings: settings, Account: account, EnsUsernames: ensUsernames} 77 if err != nil { 78 event.Error = err.Error() 79 } 80 send(EventLoggedIn, event) 81 }