Browse Source

Report WhatsApp server connection errors to user too. Fixes #18

Tulir Asokan 6 năm trước cách đây
mục cha
commit
2381eb029b
2 tập tin đã thay đổi với 9 bổ sung2 xóa
  1. 4 1
      commands.go
  2. 5 1
      user.go

+ 4 - 1
commands.go

@@ -118,7 +118,10 @@ const cmdLoginHelp = `login - Authenticate this Bridge as WhatsApp Web Client`
 // CommandLogin handles login command
 func (handler *CommandHandler) CommandLogin(ce *CommandEvent) {
 	if ce.User.Conn == nil {
-		ce.User.Connect(true)
+		if !ce.User.Connect(true) {
+			ce.User.log.Debugln("Connect() returned false, assuming error was logged elsewhere and canceling login.")
+			return
+		}
 	}
 	ce.User.Login(ce)
 }

+ 5 - 1
user.go

@@ -152,13 +152,17 @@ func (user *User) Connect(evenIfNoSession bool) bool {
 	conn, err := whatsapp.NewConn(timeout * time.Second)
 	if err != nil {
 		user.log.Errorln("Failed to connect to WhatsApp:", err)
+		msg := format.RenderMarkdown(fmt.Sprintf("\u26a0 Failed to connect to WhatsApp server. " +
+			"This indicates a network problem on the bridge server. See bridge logs for more info."))
+		_, _ = user.bridge.Bot.SendMessageEvent(user.ManagementRoom, mautrix.EventMessage, msg)
 		return false
 	}
 	user.Conn = whatsappExt.ExtendConn(conn)
 	_ = user.Conn.SetClientName("Mautrix-WhatsApp bridge", "mx-wa")
 	user.log.Debugln("WhatsApp connection successful")
 	user.Conn.AddHandler(user)
-	return user.RestoreSession()
+	user.RestoreSession()
+	return true
 }
 
 func (user *User) RestoreSession() bool {