mirror of
https://github.com/tulir/mautrix-whatsapp
synced 2024-12-13 00:53:05 +01:00
Disconnect before reconnecting
This commit is contained in:
parent
a932911c56
commit
46b784ca3d
2 changed files with 41 additions and 4 deletions
22
commands.go
22
commands.go
|
@ -231,7 +231,18 @@ func (handler *CommandHandler) CommandReconnect(ce *CommandEvent) {
|
|||
}
|
||||
return
|
||||
}
|
||||
err := ce.User.Conn.Restore()
|
||||
|
||||
wasConnected := true
|
||||
sess, err := ce.User.Conn.Disconnect()
|
||||
if err == whatsapp.ErrNotConnected {
|
||||
wasConnected = false
|
||||
} else if err != nil {
|
||||
ce.User.log.Warnln("Error while disconnecting:", err)
|
||||
} else if len(sess.Wid) > 0 {
|
||||
ce.User.SetSession(&sess)
|
||||
}
|
||||
|
||||
err = ce.User.Conn.Restore()
|
||||
if err == whatsapp.ErrInvalidSession {
|
||||
if ce.User.Session != nil {
|
||||
ce.User.log.Debugln("Got invalid session error when reconnecting, but user has session. Retrying using RestoreWithSession()...")
|
||||
|
@ -268,7 +279,14 @@ func (handler *CommandHandler) CommandReconnect(ce *CommandEvent) {
|
|||
return
|
||||
}
|
||||
ce.User.ConnectionErrors = 0
|
||||
ce.Reply("Reconnected successfully.")
|
||||
|
||||
var msg string
|
||||
if wasConnected {
|
||||
msg = "Reconnected successfully."
|
||||
} else {
|
||||
msg = "Connected successfully."
|
||||
}
|
||||
ce.Reply(msg)
|
||||
ce.User.PostLogin()
|
||||
}
|
||||
|
||||
|
|
|
@ -156,7 +156,18 @@ func (prov *ProvisioningAPI) Reconnect(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
return
|
||||
}
|
||||
err := user.Conn.Restore()
|
||||
|
||||
wasConnected := true
|
||||
sess, err := user.Conn.Disconnect()
|
||||
if err == whatsapp.ErrNotConnected {
|
||||
wasConnected = false
|
||||
} else if err != nil {
|
||||
user.log.Warnln("Error while disconnecting:", err)
|
||||
} else if len(sess.Wid) > 0 {
|
||||
user.SetSession(&sess)
|
||||
}
|
||||
|
||||
err = user.Conn.Restore()
|
||||
if err == whatsapp.ErrInvalidSession {
|
||||
if user.Session != nil {
|
||||
user.log.Debugln("Got invalid session error when reconnecting, but user has session. Retrying using RestoreWithSession()...")
|
||||
|
@ -209,7 +220,15 @@ func (prov *ProvisioningAPI) Reconnect(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
user.ConnectionErrors = 0
|
||||
user.PostLogin()
|
||||
jsonResponse(w, http.StatusOK, Response{true, "Reconnected successfully."})
|
||||
|
||||
var msg string
|
||||
if wasConnected {
|
||||
msg = "Reconnected successfully."
|
||||
} else {
|
||||
msg = "Connected successfully."
|
||||
}
|
||||
|
||||
jsonResponse(w, http.StatusOK, Response{true, msg})
|
||||
}
|
||||
|
||||
func (prov *ProvisioningAPI) Ping(w http.ResponseWriter, r *http.Request) {
|
||||
|
|
Loading…
Reference in a new issue