5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 17:39:58 +08:00
wails/v2/internal/frontend/dispatcher/dispatcher.go
Lea Anthony 052b9222c1
Add garble support (#1793)
Co-authored-by: AlbinoDrought <sean@albinodrought.com>
Co-authored-by: stffabi <stffabi@users.noreply.github.com>
2022-09-13 10:05:37 +10:00

60 lines
1.4 KiB
Go

package dispatcher
import (
"context"
"github.com/pkg/errors"
"github.com/wailsapp/wails/v2/internal/binding"
"github.com/wailsapp/wails/v2/internal/frontend"
"github.com/wailsapp/wails/v2/internal/logger"
)
type Dispatcher struct {
log *logger.Logger
bindings *binding.Bindings
events frontend.Events
bindingsDB *binding.DB
ctx context.Context
}
func NewDispatcher(ctx context.Context, log *logger.Logger, bindings *binding.Bindings, events frontend.Events) *Dispatcher {
return &Dispatcher{
log: log,
bindings: bindings,
events: events,
bindingsDB: bindings.DB(),
ctx: ctx,
}
}
func (d *Dispatcher) ProcessMessage(message string, sender frontend.Frontend) (string, error) {
if message == "" {
return "", errors.New("No message to process")
}
switch message[0] {
case 'L':
return d.processLogMessage(message)
case 'E':
return d.processEventMessage(message, sender)
case 'C':
return d.processCallMessage(message, sender)
case 'c':
return d.processSecureCallMessage(message, sender)
case 'W':
return d.processWindowMessage(message, sender)
case 'B':
return d.processBrowserMessage(message, sender)
case 'Q':
sender.Quit()
return "", nil
case 'S':
sender.Show()
return "", nil
case 'H':
sender.Hide()
return "", nil
default:
return "", errors.New("Unknown message from front end: " + message)
}
}