github.com/secoba/wails/v2@v2.6.4/internal/frontend/dispatcher/dispatcher.go (about) 1 package dispatcher 2 3 import ( 4 "context" 5 6 "github.com/pkg/errors" 7 "github.com/secoba/wails/v2/internal/binding" 8 "github.com/secoba/wails/v2/internal/frontend" 9 "github.com/secoba/wails/v2/internal/logger" 10 "github.com/secoba/wails/v2/pkg/options" 11 ) 12 13 type Dispatcher struct { 14 log *logger.Logger 15 bindings *binding.Bindings 16 events frontend.Events 17 bindingsDB *binding.DB 18 ctx context.Context 19 errfmt options.ErrorFormatter 20 } 21 22 func NewDispatcher(ctx context.Context, log *logger.Logger, bindings *binding.Bindings, events frontend.Events, errfmt options.ErrorFormatter) *Dispatcher { 23 return &Dispatcher{ 24 log: log, 25 bindings: bindings, 26 events: events, 27 bindingsDB: bindings.DB(), 28 ctx: ctx, 29 errfmt: errfmt, 30 } 31 } 32 33 func (d *Dispatcher) ProcessMessage(message string, sender frontend.Frontend) (string, error) { 34 if message == "" { 35 return "", errors.New("No message to process") 36 } 37 switch message[0] { 38 case 'L': 39 return d.processLogMessage(message) 40 case 'E': 41 return d.processEventMessage(message, sender) 42 case 'C': 43 return d.processCallMessage(message, sender) 44 case 'c': 45 return d.processSecureCallMessage(message, sender) 46 case 'W': 47 return d.processWindowMessage(message, sender) 48 case 'B': 49 return d.processBrowserMessage(message, sender) 50 case 'Q': 51 sender.Quit() 52 return "", nil 53 case 'S': 54 sender.Show() 55 return "", nil 56 case 'H': 57 sender.Hide() 58 return "", nil 59 default: 60 return "", errors.New("Unknown message from front end: " + message) 61 } 62 }