Improve connection error handling

This commit is contained in:
Tulir Asokan
2019-05-15 23:04:09 +03:00
parent 69879df346
commit 6b73c66e12
7 changed files with 188 additions and 17 deletions

View File

@ -17,11 +17,13 @@
package main
import (
"fmt"
"strings"
"maunium.net/go/maulogger/v2"
"maunium.net/go/mautrix"
"maunium.net/go/mautrix-appservice"
"maunium.net/go/mautrix/format"
"maunium.net/go/mautrix-whatsapp/types"
)
@ -112,7 +114,7 @@ func (mx *MatrixHandler) HandleMembership(evt *mautrix.Event) {
func (mx *MatrixHandler) HandleRoomMetadata(evt *mautrix.Event) {
user := mx.bridge.GetUserByMXID(types.MatrixUserID(evt.Sender))
if user == nil || !user.Whitelisted || !user.IsLoggedIn() {
if user == nil || !user.Whitelisted || !user.IsLoggedIn() || !user.Connected {
return
}
@ -165,6 +167,12 @@ func (mx *MatrixHandler) HandleMessage(evt *mautrix.Event) {
if !user.IsLoggedIn() {
return
} else if !user.Connected {
msg := format.RenderMarkdown(fmt.Sprintf("\u26a0 You are not connected to WhatsApp, so your message was not bridged. " +
"Use `%s reconnect` to reconnect.", mx.bridge.Config.Bridge.CommandPrefix))
msg.MsgType = mautrix.MsgNotice
_, _ = mx.bridge.Bot.SendMessageEvent(roomID, mautrix.EventMessage, msg)
return
}
portal := mx.bridge.GetPortalByMXID(roomID)