diff options
Diffstat (limited to 'vendor/go.mau.fi/whatsmeow/client.go')
-rw-r--r-- | vendor/go.mau.fi/whatsmeow/client.go | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/vendor/go.mau.fi/whatsmeow/client.go b/vendor/go.mau.fi/whatsmeow/client.go index 4a862bd3..3f832c94 100644 --- a/vendor/go.mau.fi/whatsmeow/client.go +++ b/vendor/go.mau.fi/whatsmeow/client.go @@ -114,11 +114,18 @@ type Client struct { // If it returns false, the accepting will be cancelled and the retry receipt will be ignored. PreRetryCallback func(receipt *events.Receipt, id types.MessageID, retryCount int, msg *waProto.Message) bool + // PrePairCallback is called before pairing is completed. If it returns false, the pairing will be cancelled and + // the client will disconnect. + PrePairCallback func(jid types.JID, platform, businessName string) bool + // Should untrusted identity errors be handled automatically? If true, the stored identity and existing signal // sessions will be removed on untrusted identity errors, and an events.IdentityChange will be dispatched. // If false, decrypting a message from untrusted devices will fail. AutoTrustIdentity bool + // Should SubscribePresence return an error if no privacy token is stored for the user? + ErrorOnSubscribePresenceWithoutToken bool + uniqueID string idCounter uint32 @@ -250,6 +257,14 @@ func (cli *Client) closeSocketWaitChan() { cli.socketLock.Unlock() } +func (cli *Client) getOwnID() types.JID { + id := cli.Store.ID + if id == nil { + return types.EmptyJID + } + return *id +} + func (cli *Client) WaitForConnection(timeout time.Duration) bool { timeoutChan := time.After(timeout) cli.socketLock.RLock() @@ -392,7 +407,8 @@ func (cli *Client) unlockedDisconnect() { // Note that this will not emit any events. The LoggedOut event is only used for external logouts // (triggered by the user from the main device or by WhatsApp servers). func (cli *Client) Logout() error { - if cli.Store.ID == nil { + ownID := cli.getOwnID() + if ownID.IsEmpty() { return ErrNotLoggedIn } _, err := cli.sendIQ(infoQuery{ @@ -402,7 +418,7 @@ func (cli *Client) Logout() error { Content: []waBinary.Node{{ Tag: "remove-companion-device", Attrs: waBinary.Attrs{ - "jid": *cli.Store.ID, + "jid": ownID, "reason": "user_initiated", }, }}, @@ -600,7 +616,10 @@ func (cli *Client) ParseWebMessage(chatJID types.JID, webMsg *waProto.WebMessage } var err error if info.IsFromMe { - info.Sender = cli.Store.ID.ToNonAD() + info.Sender = cli.getOwnID().ToNonAD() + if info.Sender.IsEmpty() { + return nil, ErrNotLoggedIn + } } else if chatJID.Server == types.DefaultUserServer { info.Sender = chatJID } else if webMsg.GetParticipant() != "" { |