node build fixed
This commit is contained in:
66
seanime-2.9.10/internal/discordrpc/client/events.go
Normal file
66
seanime-2.9.10/internal/discordrpc/client/events.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package discordrpc_client
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type ActivityEventData struct {
|
||||
Secret string `json:"secret"`
|
||||
User *User `json:"user"`
|
||||
}
|
||||
|
||||
type event string
|
||||
|
||||
var (
|
||||
ActivityJoinEvent event = "ACTIVITY_JOIN"
|
||||
ActivitySpectateEvent event = "ACTIVITY_SPECTATE"
|
||||
ActivityJoinRequestEvent event = "ACTIVITY_JOIN_REQUEST"
|
||||
)
|
||||
|
||||
func (c *Client) RegisterEvent(ch chan ActivityEventData, evt event) error {
|
||||
if c == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
payload := Payload{
|
||||
Cmd: SubscribeCommand,
|
||||
Event: evt,
|
||||
Nonce: uuid.New(),
|
||||
}
|
||||
|
||||
err := c.SendPayload(payload)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
go func() {
|
||||
for {
|
||||
r, err := c.Socket.Read()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
var response struct {
|
||||
Event event `json:"event"`
|
||||
Data *ActivityEventData `json:"data"`
|
||||
}
|
||||
|
||||
if err := json.Unmarshal([]byte(r), &response); err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if response.Event == evt {
|
||||
continue
|
||||
}
|
||||
|
||||
ch <- *response.Data
|
||||
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
}()
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user