github.com/secoba/wails/v2@v2.6.4/internal/frontend/dispatcher/events.go (about)

     1  package dispatcher
     2  
     3  import (
     4  	"encoding/json"
     5  	"errors"
     6  
     7  	"github.com/secoba/wails/v2/internal/frontend"
     8  )
     9  
    10  type EventMessage struct {
    11  	Name string        `json:"name"`
    12  	Data []interface{} `json:"data"`
    13  }
    14  
    15  func (d *Dispatcher) processEventMessage(message string, sender frontend.Frontend) (string, error) {
    16  	if len(message) < 3 {
    17  		return "", errors.New("Invalid Event Message: " + message)
    18  	}
    19  
    20  	switch message[1] {
    21  	case 'E':
    22  		var eventMessage EventMessage
    23  		err := json.Unmarshal([]byte(message[2:]), &eventMessage)
    24  		if err != nil {
    25  			return "", err
    26  		}
    27  		go d.events.Notify(sender, eventMessage.Name, eventMessage.Data...)
    28  	case 'X':
    29  		eventName := message[2:]
    30  		go d.events.Off(eventName)
    31  	}
    32  
    33  	return "", nil
    34  }