This repository has been archived by the owner on Feb 16, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 344
/
event.go
140 lines (123 loc) · 5.19 KB
/
event.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package astilectron
import (
"encoding/json"
"errors"
)
// Target IDs
const (
targetIDApp = "app"
targetIDDock = "dock"
)
// Event represents an event
type Event struct {
// This is the base of the event
Name string `json:"name"`
TargetID string `json:"targetID,omitempty"`
// This is a list of all possible payloads.
// A choice was made not to use interfaces since it's a pain in the ass asserting each an every payload afterwards
// We use pointers so that omitempty works
AuthInfo *EventAuthInfo `json:"authInfo,omitempty"`
Badge *string `json:"badge,omitempty"`
BounceType string `json:"bounceType,omitempty"`
Bounds *RectangleOptions `json:"bounds,omitempty"`
CallbackID string `json:"callbackId,omitempty"`
Code string `json:"code,omitempty"`
Displays *EventDisplays `json:"displays,omitempty"`
Enable *bool `json:"enable,omitempty"`
FilePath string `json:"filePath,omitempty"`
GlobalShortcuts *EventGlobalShortcuts `json:"globalShortcuts,omitempty"`
ID *int `json:"id,omitempty"`
Image string `json:"image,omitempty"`
Index *int `json:"index,omitempty"`
Menu *EventMenu `json:"menu,omitempty"`
MenuItem *EventMenuItem `json:"menuItem,omitempty"`
MenuItemOptions *MenuItemOptions `json:"menuItemOptions,omitempty"`
MenuItemPosition *int `json:"menuItemPosition,omitempty"`
MenuPopupOptions *MenuPopupOptions `json:"menuPopupOptions,omitempty"`
Message *EventMessage `json:"message,omitempty"`
NotificationOptions *NotificationOptions `json:"notificationOptions,omitempty"`
Password string `json:"password,omitempty"`
Path string `json:"path,omitempty"`
Reply string `json:"reply,omitempty"`
Request *EventRequest `json:"request,omitempty"`
SecondInstance *EventSecondInstance `json:"secondInstance,omitempty"`
SessionID string `json:"sessionId,omitempty"`
Supported *Supported `json:"supported,omitempty"`
TrayOptions *TrayOptions `json:"trayOptions,omitempty"`
URL string `json:"url,omitempty"`
URLNew string `json:"newUrl,omitempty"`
URLOld string `json:"oldUrl,omitempty"`
Username string `json:"username,omitempty"`
WindowID string `json:"windowId,omitempty"`
WindowOptions *WindowOptions `json:"windowOptions,omitempty"`
}
// EventAuthInfo represents an event auth info
type EventAuthInfo struct {
Host string `json:"host,omitempty"`
IsProxy *bool `json:"isProxy,omitempty"`
Port *int `json:"port,omitempty"`
Realm string `json:"realm,omitempty"`
Scheme string `json:"scheme,omitempty"`
}
// EventDisplays represents events displays
type EventDisplays struct {
All []*DisplayOptions `json:"all,omitempty"`
Primary *DisplayOptions `json:"primary,omitempty"`
}
// EventGlobalShortcuts represents event global shortcuts
type EventGlobalShortcuts struct {
Accelerator string `json:"accelerator,omitempty"`
IsRegistered bool `json:"isRegistered,omitempty"`
}
// EventMessage represents an event message
type EventMessage struct {
i interface{}
}
// newEventMessage creates a new event message
func newEventMessage(i interface{}) *EventMessage {
return &EventMessage{i: i}
}
// MarshalJSON implements the JSONMarshaler interface
func (p *EventMessage) MarshalJSON() ([]byte, error) {
return json.Marshal(p.i)
}
// Unmarshal unmarshals the payload into the given interface
func (p *EventMessage) Unmarshal(i interface{}) error {
if b, ok := p.i.([]byte); ok {
return json.Unmarshal(b, i)
}
return errors.New("event message should []byte")
}
// UnmarshalJSON implements the JSONUnmarshaler interface
func (p *EventMessage) UnmarshalJSON(i []byte) error {
p.i = i
return nil
}
// EventMenu represents an event menu
type EventMenu struct {
*EventSubMenu
}
// EventMenuItem represents an event menu item
type EventMenuItem struct {
ID string `json:"id"`
Options *MenuItemOptions `json:"options,omitempty"`
RootID string `json:"rootId"`
SubMenu *EventSubMenu `json:"submenu,omitempty"`
}
// EventRequest represents an event request
type EventRequest struct {
Method string `json:"method,omitempty"`
Referrer string `json:"referrer,omitempty"`
URL string `json:"url,omitempty"`
}
// EventSecondInstance represents data related to a second instance of the app being started
type EventSecondInstance struct {
CommandLine []string `json:"commandLine,omitempty"`
WorkingDirectory string `json:"workingDirectory,omitempty"`
}
// EventSubMenu represents a sub menu event
type EventSubMenu struct {
ID string `json:"id"`
Items []*EventMenuItem `json:"items,omitempty"`
RootID string `json:"rootId"`
}