@@ -106,11 +106,13 @@ var fixedURLWhitelist = []string{
106
106
"https://cointracking.info/import/bitbox/" ,
107
107
}
108
108
109
- type backendEvent struct {
110
- Type string `json:"type"`
111
- Data string `json:"data"`
112
- Meta interface {} `json:"meta"`
113
- }
109
+ // event are events emitted by the backend.
110
+ type event string
111
+
112
+ const (
113
+ // eventNewTxs is emitted when the user should be notified of new transactions.
114
+ eventNewTxs event = "new-txs"
115
+ )
114
116
115
117
type deviceEvent struct {
116
118
DeviceID string `json:"deviceID"`
@@ -120,13 +122,6 @@ type deviceEvent struct {
120
122
Meta interface {} `json:"meta"`
121
123
}
122
124
123
- // AccountEvent models an event triggered by an account.
124
- type AccountEvent struct {
125
- Type string `json:"type"`
126
- Code accountsTypes.Code `json:"code"`
127
- Data string `json:"data"`
128
- }
129
-
130
125
type authEventType string
131
126
132
127
const (
@@ -332,11 +327,14 @@ func (backend *Backend) notifyNewTxs(account accounts.Interface) {
332
327
return
333
328
}
334
329
if unnotifiedCount != 0 {
335
- backend .events <- backendEvent {Type : "backend" , Data : "newTxs" , Meta : map [string ]interface {}{
336
- "count" : unnotifiedCount ,
337
- "accountName" : account .Config ().Config .Name ,
338
- }}
339
-
330
+ backend .Notify (observable.Event {
331
+ Subject : string (eventNewTxs ),
332
+ Action : action .Replace ,
333
+ Object : map [string ]interface {}{
334
+ "count" : unnotifiedCount ,
335
+ "accountName" : account .Config ().Config .Name ,
336
+ },
337
+ })
340
338
if err := notifier .MarkAllNotified (); err != nil {
341
339
backend .log .WithError (err ).Error ("error marking notified" )
342
340
}
@@ -774,7 +772,15 @@ func (backend *Backend) Register(theDevice device.Interface) error {
774
772
775
773
mainKeystore := len (backend .devices ) == 1
776
774
theDevice .SetOnEvent (func (event deviceevent.Event , data interface {}) {
777
- switch event {
775
+ backend .events <- deviceEvent {
776
+ DeviceID : theDevice .Identifier (),
777
+ Type : "device" ,
778
+ Data : string (event ),
779
+ Meta : data ,
780
+ }
781
+ })
782
+ theDevice .Observe (func (event observable.Event ) {
783
+ switch deviceevent .Event (event .Subject ) {
778
784
case deviceevent .EventKeystoreGone :
779
785
backend .DeregisterKeystore ()
780
786
case deviceevent .EventKeystoreAvailable :
@@ -783,30 +789,23 @@ func (backend *Backend) Register(theDevice device.Interface) error {
783
789
backend .registerKeystore (theDevice .Keystore ())
784
790
}
785
791
}
786
- backend .events <- deviceEvent {
787
- DeviceID : theDevice .Identifier (),
788
- Type : "device" ,
789
- Data : string (event ),
790
- Meta : data ,
791
- }
792
+ backend .Notify (observable.Event {
793
+ Subject : fmt .Sprintf (
794
+ "devices/%s/%s/%s" ,
795
+ theDevice .ProductName (),
796
+ theDevice .Identifier (),
797
+ event .Subject ),
798
+ Action : event .Action ,
799
+ Object : event .Object ,
800
+ })
792
801
})
793
802
794
803
backend .onDeviceInit (theDevice )
795
804
if err := theDevice .Init (backend .Testing ()); err != nil {
796
805
backend .onDeviceUninit (theDevice .Identifier ())
797
806
return err
798
807
}
799
- theDevice .Observe (backend .Notify )
800
-
801
- // Old-school
802
- select {
803
- case backend .events <- backendEvent {
804
- Type : "devices" ,
805
- Data : "registeredChanged" ,
806
- }:
807
- default :
808
- }
809
- // New-school
808
+
810
809
backend .Notify (observable.Event {
811
810
Subject : "devices/registered" ,
812
811
Action : action .Reload ,
@@ -828,9 +827,6 @@ func (backend *Backend) Deregister(deviceID string) {
828
827
delete (backend .devices , deviceID )
829
828
backend .DeregisterKeystore ()
830
829
831
- // Old-school
832
- backend .events <- backendEvent {Type : "devices" , Data : "registeredChanged" }
833
- // New-school
834
830
backend .Notify (observable.Event {
835
831
Subject : "devices/registered" ,
836
832
Action : action .Reload ,
0 commit comments