Remove some unnecessary event wrappers
This commit is contained in:
parent
8302bc95ee
commit
2d69a3c42f
8 changed files with 41 additions and 158 deletions
|
@ -8,13 +8,13 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type ClientReady struct {
|
type ClientReady struct {
|
||||||
SessionId string
|
SessionID string
|
||||||
Conversations []*binary.Conversation
|
Conversations []*binary.Conversation
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewClientReady(sessionId string, conversationList *binary.Conversations) *ClientReady {
|
func NewClientReady(sessionID string, conversationList *binary.Conversations) *ClientReady {
|
||||||
return &ClientReady{
|
return &ClientReady{
|
||||||
SessionId: sessionId,
|
SessionID: sessionID,
|
||||||
Conversations: conversationList.Conversations,
|
Conversations: conversationList.Conversations,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
package events
|
|
||||||
|
|
||||||
import "go.mau.fi/mautrix-gmessages/libgm/binary"
|
|
||||||
|
|
||||||
type SettingEvent interface {
|
|
||||||
GetSettings() *binary.Settings
|
|
||||||
}
|
|
||||||
|
|
||||||
type SETTINGS_UPDATED struct {
|
|
||||||
Settings *binary.Settings
|
|
||||||
}
|
|
||||||
|
|
||||||
func (su *SETTINGS_UPDATED) GetSettings() *binary.Settings {
|
|
||||||
return su.Settings
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSettingsUpdated(settings *binary.Settings) SettingEvent {
|
|
||||||
return &SETTINGS_UPDATED{
|
|
||||||
Settings: settings,
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
package events
|
|
||||||
|
|
||||||
import "go.mau.fi/mautrix-gmessages/libgm/binary"
|
|
||||||
|
|
||||||
type TypingEvent interface {
|
|
||||||
GetConversation() string
|
|
||||||
}
|
|
||||||
|
|
||||||
type User struct {
|
|
||||||
Field1 int64
|
|
||||||
Number string
|
|
||||||
}
|
|
||||||
|
|
||||||
type STARTED_TYPING struct {
|
|
||||||
ConversationId string
|
|
||||||
User User
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *STARTED_TYPING) GetConversation() string {
|
|
||||||
return t.ConversationId
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewStartedTyping(data *binary.TypingData) TypingEvent {
|
|
||||||
return &STARTED_TYPING{
|
|
||||||
ConversationId: data.ConversationID,
|
|
||||||
User: User{
|
|
||||||
Field1: data.User.Field1,
|
|
||||||
Number: data.User.Number,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type STOPPED_TYPING struct {
|
|
||||||
ConversationId string
|
|
||||||
User User
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *STOPPED_TYPING) GetConversation() string {
|
|
||||||
return t.ConversationId
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewStoppedTyping(data *binary.TypingData) TypingEvent {
|
|
||||||
return &STOPPED_TYPING{
|
|
||||||
ConversationId: data.ConversationID,
|
|
||||||
User: User{
|
|
||||||
Field1: data.User.Field1,
|
|
||||||
Number: data.User.Number,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +1,11 @@
|
||||||
package events
|
package events
|
||||||
|
|
||||||
type BrowserActive struct {
|
type BrowserActive struct {
|
||||||
SessionId string
|
SessionID string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBrowserActive(sessionId string) *BrowserActive {
|
func NewBrowserActive(sessionID string) *BrowserActive {
|
||||||
return &BrowserActive{
|
return &BrowserActive{
|
||||||
SessionId: sessionId,
|
SessionID: sessionID,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
package libgm
|
|
||||||
|
|
||||||
import (
|
|
||||||
"go.mau.fi/mautrix-gmessages/libgm/pblite"
|
|
||||||
|
|
||||||
"go.mau.fi/mautrix-gmessages/libgm/binary"
|
|
||||||
"go.mau.fi/mautrix-gmessages/libgm/events"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (c *Client) handleSettingsEvent(res *pblite.Response, data *binary.Settings) {
|
|
||||||
evt := events.NewSettingsUpdated(data)
|
|
||||||
c.triggerEvent(evt)
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
package libgm
|
|
||||||
|
|
||||||
import (
|
|
||||||
"go.mau.fi/mautrix-gmessages/libgm/pblite"
|
|
||||||
|
|
||||||
"go.mau.fi/mautrix-gmessages/libgm/binary"
|
|
||||||
"go.mau.fi/mautrix-gmessages/libgm/events"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (c *Client) handleTypingEvent(res *pblite.Response, data *binary.TypingData) {
|
|
||||||
typingType := data.Type
|
|
||||||
|
|
||||||
var evt events.TypingEvent
|
|
||||||
switch typingType {
|
|
||||||
case binary.TypingTypes_STARTED_TYPING:
|
|
||||||
evt = events.NewStartedTyping(data)
|
|
||||||
case binary.TypingTypes_STOPPED_TYPING:
|
|
||||||
evt = events.NewStoppedTyping(data)
|
|
||||||
default:
|
|
||||||
c.Logger.Debug().Any("data", data).Msg("got unknown TypingData evt")
|
|
||||||
}
|
|
||||||
|
|
||||||
if evt != nil {
|
|
||||||
c.triggerEvent(evt)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +1,7 @@
|
||||||
package libgm
|
package libgm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"go.mau.fi/mautrix-gmessages/libgm/events"
|
||||||
"go.mau.fi/mautrix-gmessages/libgm/pblite"
|
"go.mau.fi/mautrix-gmessages/libgm/pblite"
|
||||||
|
|
||||||
"go.mau.fi/mautrix-gmessages/libgm/binary"
|
"go.mau.fi/mautrix-gmessages/libgm/binary"
|
||||||
|
@ -22,7 +23,7 @@ func (c *Client) handleUpdatesEvent(res *pblite.Response) {
|
||||||
|
|
||||||
case *binary.UpdateEvents_SettingsEvent:
|
case *binary.UpdateEvents_SettingsEvent:
|
||||||
c.rpc.logContent(res)
|
c.rpc.logContent(res)
|
||||||
c.handleSettingsEvent(res, evt.SettingsEvent)
|
c.triggerEvent(evt.SettingsEvent)
|
||||||
|
|
||||||
case *binary.UpdateEvents_ConversationEvent:
|
case *binary.UpdateEvents_ConversationEvent:
|
||||||
if c.rpc.deduplicateUpdate(res) {
|
if c.rpc.deduplicateUpdate(res) {
|
||||||
|
@ -38,7 +39,7 @@ func (c *Client) handleUpdatesEvent(res *pblite.Response) {
|
||||||
|
|
||||||
case *binary.UpdateEvents_TypingEvent:
|
case *binary.UpdateEvents_TypingEvent:
|
||||||
c.rpc.logContent(res)
|
c.rpc.logContent(res)
|
||||||
c.handleTypingEvent(res, evt.TypingEvent.GetData())
|
c.triggerEvent(evt.TypingEvent.GetData())
|
||||||
default:
|
default:
|
||||||
c.Logger.Debug().Any("evt", evt).Any("res", res).Msg("Got unknown event type")
|
c.Logger.Debug().Any("evt", evt).Any("res", res).Msg("Got unknown event type")
|
||||||
}
|
}
|
||||||
|
@ -47,3 +48,35 @@ func (c *Client) handleUpdatesEvent(res *pblite.Response) {
|
||||||
c.Logger.Error().Any("response", res).Msg("ignoring response.")
|
c.Logger.Error().Any("response", res).Msg("ignoring response.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Client) handleClientReady(newSessionId string) {
|
||||||
|
c.Logger.Info().Any("sessionId", newSessionId).Msg("Client is ready!")
|
||||||
|
conversations, convErr := c.ListConversations(25, binary.ListConversationsPayload_INBOX)
|
||||||
|
if convErr != nil {
|
||||||
|
panic(convErr)
|
||||||
|
}
|
||||||
|
c.Logger.Debug().Any("conversations", conversations).Msg("got conversations")
|
||||||
|
notifyErr := c.NotifyDittoActivity()
|
||||||
|
if notifyErr != nil {
|
||||||
|
panic(notifyErr)
|
||||||
|
}
|
||||||
|
readyEvt := events.NewClientReady(newSessionId, conversations)
|
||||||
|
c.triggerEvent(readyEvt)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) handleUserAlertEvent(res *pblite.Response, data *binary.UserAlertEvent) {
|
||||||
|
alertType := data.AlertType
|
||||||
|
switch alertType {
|
||||||
|
case binary.AlertType_BROWSER_ACTIVE:
|
||||||
|
newSessionId := res.Data.RequestID
|
||||||
|
c.Logger.Info().Any("sessionId", newSessionId).Msg("[NEW_BROWSER_ACTIVE] Opened new browser connection")
|
||||||
|
if newSessionId != c.sessionHandler.sessionID {
|
||||||
|
evt := events.NewBrowserActive(newSessionId)
|
||||||
|
c.triggerEvent(evt)
|
||||||
|
} else {
|
||||||
|
go c.handleClientReady(newSessionId)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
c.triggerEvent(data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
package libgm
|
|
||||||
|
|
||||||
import (
|
|
||||||
"go.mau.fi/mautrix-gmessages/libgm/pblite"
|
|
||||||
|
|
||||||
"go.mau.fi/mautrix-gmessages/libgm/binary"
|
|
||||||
"go.mau.fi/mautrix-gmessages/libgm/events"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (c *Client) handleClientReady(newSessionId string) {
|
|
||||||
c.Logger.Info().Any("sessionId", newSessionId).Msg("Client is ready!")
|
|
||||||
conversations, convErr := c.ListConversations(25, binary.ListConversationsPayload_INBOX)
|
|
||||||
if convErr != nil {
|
|
||||||
panic(convErr)
|
|
||||||
}
|
|
||||||
c.Logger.Debug().Any("conversations", conversations).Msg("got conversations")
|
|
||||||
notifyErr := c.NotifyDittoActivity()
|
|
||||||
if notifyErr != nil {
|
|
||||||
panic(notifyErr)
|
|
||||||
}
|
|
||||||
readyEvt := events.NewClientReady(newSessionId, conversations)
|
|
||||||
c.triggerEvent(readyEvt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Client) handleUserAlertEvent(res *pblite.Response, data *binary.UserAlertEvent) {
|
|
||||||
alertType := data.AlertType
|
|
||||||
switch alertType {
|
|
||||||
case binary.AlertType_BROWSER_ACTIVE:
|
|
||||||
newSessionId := res.Data.RequestID
|
|
||||||
c.Logger.Info().Any("sessionId", newSessionId).Msg("[NEW_BROWSER_ACTIVE] Opened new browser connection")
|
|
||||||
if newSessionId != c.sessionHandler.sessionID {
|
|
||||||
evt := events.NewBrowserActive(newSessionId)
|
|
||||||
c.triggerEvent(evt)
|
|
||||||
} else {
|
|
||||||
go c.handleClientReady(newSessionId)
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
c.triggerEvent(data)
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue