Skip to content

Commit 31344c4

Browse files
committed
client,connector: Support external whatsmeow event handlers
1 parent f7fa9fe commit 31344c4

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

pkg/connector/client.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ func (wa *WhatsAppConnector) LoadUserLogin(ctx context.Context, login *bridgev2.
7373
log := w.UserLogin.Log.With().Str("component", "whatsmeow").Logger()
7474
w.Client = whatsmeow.NewClient(w.Device, waLog.Zerolog(log))
7575
w.Client.AddEventHandlerWithSuccessStatus(w.handleWAEvent)
76+
if wa.ExternalEventHandler != nil {
77+
w.Client.AddEventHandler(func(evt any) {
78+
wa.ExternalEventHandler(w.Client, evt)
79+
})
80+
}
7681
w.Client.SynchronousAck = true
7782
if bridgev2.PortalEventBuffer == 0 {
7883
w.Client.EnableDecryptedEventBuffer = true

pkg/connector/connector.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ type WhatsAppConnector struct {
5757
mediaEditCache MediaEditCache
5858
mediaEditCacheLock sync.RWMutex
5959
stopMediaEditCacheLoop atomic.Pointer[context.CancelFunc]
60+
61+
ExternalEventHandler func(client *whatsmeow.Client, rawEvt any)
6062
}
6163

6264
func init() {

pkg/connector/login.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ func (wl *WALogin) Start(ctx context.Context) (*bridgev2.LoginStep, error) {
128128
wl.Client.EnableAutoReconnect = false
129129
wl.Client.DisableLoginAutoReconnect = true
130130
wl.EventHandlerID = wl.Client.AddEventHandler(wl.handleEvent)
131+
if wl.Main.ExternalEventHandler != nil {
132+
wl.Client.AddEventHandler(func(evt any) {
133+
wl.Main.ExternalEventHandler(wl.Client, evt)
134+
})
135+
}
131136
if err := wl.Main.updateProxy(ctx, wl.Client, true); err != nil {
132137
return nil, err
133138
}

0 commit comments

Comments
 (0)