mirror of
https://github.com/tulir/mautrix-whatsapp
synced 2025-03-15 05:40:16 +01:00
Add proper error message for multi-device
This commit is contained in:
parent
59fa4e6480
commit
74870ec638
4 changed files with 22 additions and 10 deletions
4
go.mod
4
go.mod
|
@ -12,7 +12,7 @@ require (
|
|||
gopkg.in/yaml.v2 v2.4.0
|
||||
maunium.net/go/mauflag v1.0.0
|
||||
maunium.net/go/maulogger/v2 v2.3.0
|
||||
maunium.net/go/mautrix v0.9.23
|
||||
maunium.net/go/mautrix v0.9.27
|
||||
)
|
||||
|
||||
replace github.com/Rhymen/go-whatsapp => github.com/tulir/go-whatsapp v0.5.11
|
||||
replace github.com/Rhymen/go-whatsapp => github.com/tulir/go-whatsapp v0.5.12
|
||||
|
|
8
go.sum
8
go.sum
|
@ -138,8 +138,8 @@ github.com/tidwall/pretty v1.0.2 h1:Z7S3cePv9Jwm1KwS0513MRaoUe3S01WPbLNV40pwWZU=
|
|||
github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
||||
github.com/tidwall/sjson v1.1.5 h1:wsUceI/XDyZk3J1FUvuuYlK62zJv2HO2Pzb8A5EWdUE=
|
||||
github.com/tidwall/sjson v1.1.5/go.mod h1:VuJzsZnTowhSxWdOgsAnb886i4AjEyTkk7tNtsL7EYE=
|
||||
github.com/tulir/go-whatsapp v0.5.11 h1:e1EVhygdJ/YEdAIF9a6I4fIcW1l3qQcQs+h5loJVgRA=
|
||||
github.com/tulir/go-whatsapp v0.5.11/go.mod h1:7J3IIL3bEQiBJGtiZst1N4PgXHlWIartdVQLe6lcx9A=
|
||||
github.com/tulir/go-whatsapp v0.5.12 h1:JGU5yhoh+CyDcSMUilwy7FL0gFo0zqqepsHRqEjrjKc=
|
||||
github.com/tulir/go-whatsapp v0.5.12/go.mod h1:7J3IIL3bEQiBJGtiZst1N4PgXHlWIartdVQLe6lcx9A=
|
||||
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
|
@ -217,5 +217,5 @@ maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfk
|
|||
maunium.net/go/maulogger/v2 v2.2.4/go.mod h1:TYWy7wKwz/tIXTpsx8G3mZseIRiC5DoMxSZazOHy68A=
|
||||
maunium.net/go/maulogger/v2 v2.3.0 h1:TMCcO65fLk6+pJXo7sl38tzjzW0KBFgc6JWJMBJp4GE=
|
||||
maunium.net/go/maulogger/v2 v2.3.0/go.mod h1:TYWy7wKwz/tIXTpsx8G3mZseIRiC5DoMxSZazOHy68A=
|
||||
maunium.net/go/mautrix v0.9.23 h1:CoRCCVHSs0R2NjRcrFDUBlOrhvVixaj1PSE7jR8ghMs=
|
||||
maunium.net/go/mautrix v0.9.23/go.mod h1:7IzKfWvpQtN+W2Lzxc0rLvIxFM3ryKX6Ys3S/ZoWbg8=
|
||||
maunium.net/go/mautrix v0.9.27 h1:6MV6YSCGqfw8Rb0G1PHjTOkYkTY0vcZaz6wd+U+V1Is=
|
||||
maunium.net/go/mautrix v0.9.27/go.mod h1:7IzKfWvpQtN+W2Lzxc0rLvIxFM3ryKX6Ys3S/ZoWbg8=
|
||||
|
|
|
@ -414,6 +414,8 @@ func (prov *ProvisioningAPI) Login(w http.ResponseWriter, r *http.Request) {
|
|||
} else if errors.Is(err, whatsapp.ErrInvalidWebsocket) {
|
||||
msg = "WhatsApp connection error. Please try again."
|
||||
// TODO might need to make sure it reconnects?
|
||||
} else if errors.Is(err, whatsapp.ErrMultiDeviceNotSupported) {
|
||||
msg = "WhatsApp multi-device is not currently supported. Please disable it and try again."
|
||||
} else {
|
||||
msg = fmt.Sprintf("Unknown error while logging in: %v", err)
|
||||
}
|
||||
|
|
18
user.go
18
user.go
|
@ -415,6 +415,8 @@ func (user *User) Login(ce *CommandEvent) {
|
|||
reply.Body = "You have a login in progress already."
|
||||
} else if err == whatsapp.ErrLoginTimedOut {
|
||||
reply.Body = "QR code scan timed out. Please try again."
|
||||
} else if errors.Is(err, whatsapp.ErrMultiDeviceNotSupported) {
|
||||
reply.Body = "WhatsApp multi-device is not currently supported. Please disable it and try again."
|
||||
} else {
|
||||
user.log.Warnln("Failed to log in:", err)
|
||||
reply.Body = fmt.Sprintf("Unknown error while logging in: %v", err)
|
||||
|
@ -976,6 +978,10 @@ func (user *User) HandleError(err error) {
|
|||
user.log.Errorfln("WhatsApp error: %v", err)
|
||||
}
|
||||
if closed, ok := err.(*whatsapp.ErrConnectionClosed); ok {
|
||||
if user.Session == nil {
|
||||
user.log.Debugln("Websocket disconnected, but no session stored, not trying to reconnect")
|
||||
return
|
||||
}
|
||||
user.bridge.Metrics.TrackDisconnection(user.MXID)
|
||||
if closed.Code == 1000 && user.cleanDisconnection {
|
||||
user.cleanDisconnection = false
|
||||
|
@ -1054,14 +1060,18 @@ func (user *User) tryReconnect(msg string) {
|
|||
if err != nil {
|
||||
user.log.Debugln("Error while disconnecting for connection reset:", err)
|
||||
}
|
||||
} else if errors.Is(err, whatsapp.ErrUnpaired) {
|
||||
user.log.Errorln("Got init 401 (unpaired) error when trying to reconnect, not retrying")
|
||||
} else if errors.Is(err, whatsapp.ErrUnpaired) || errors.Is(err, whatsapp.ErrInvalidSession) {
|
||||
user.log.Errorfln("Got init %s error when trying to reconnect, not retrying", err)
|
||||
user.removeFromJIDMap(StateBadCredentials)
|
||||
//user.JID = ""
|
||||
user.SetSession(nil)
|
||||
user.DeleteConnection()
|
||||
user.sendMarkdownBridgeAlert("\u26a0 Failed to reconnect to WhatsApp: unpaired from phone. " +
|
||||
"To re-pair your phone, log in again.")
|
||||
errMsg := "unpaired from phone"
|
||||
if errors.Is(err, whatsapp.ErrInvalidSession) {
|
||||
errMsg = "invalid session"
|
||||
}
|
||||
user.sendMarkdownBridgeAlert("\u26a0 Failed to reconnect to WhatsApp: %s. " +
|
||||
"To re-pair your phone, log in again.", errMsg)
|
||||
return
|
||||
} else if errors.Is(err, whatsapp.ErrAlreadyLoggedIn) {
|
||||
user.log.Warnln("Reconnection said we're already logged in, not trying anymore")
|
||||
|
|
Loading…
Add table
Reference in a new issue