Always return RUNNING as global bridge state event

This commit is contained in:
Tulir Asokan 2021-09-23 14:04:20 -04:00
parent cc80c90565
commit 59fa4e6480

View file

@ -29,6 +29,7 @@ import (
"time" "time"
"github.com/Rhymen/go-whatsapp" "github.com/Rhymen/go-whatsapp"
log "maunium.net/go/maulogger/v2" log "maunium.net/go/maulogger/v2"
"maunium.net/go/mautrix/id" "maunium.net/go/mautrix/id"
@ -220,14 +221,7 @@ func (prov *ProvisioningAPI) BridgeStatePing(w http.ResponseWriter, r *http.Requ
var global BridgeState var global BridgeState
global.StateEvent = StateRunning global.StateEvent = StateRunning
var remote BridgeState var remote BridgeState
if user.Conn == nil { if user.Conn != nil {
if user.Session == nil {
global.StateEvent = StateUnconfigured
} else {
remote.StateEvent = StateBadCredentials
remote.Error = WANotConnected
}
} else {
if user.Conn.IsConnected() && user.Conn.IsLoggedIn() { if user.Conn.IsConnected() && user.Conn.IsLoggedIn() {
pingID := atomic.AddUint32(&bridgeStatePingID, 1) pingID := atomic.AddUint32(&bridgeStatePingID, 1)
user.log.Debugfln("Pinging WhatsApp mobile due to bridge status /ping API request (ID %d)", pingID) user.log.Debugfln("Pinging WhatsApp mobile due to bridge status /ping API request (ID %d)", pingID)
@ -255,24 +249,22 @@ func (prov *ProvisioningAPI) BridgeStatePing(w http.ResponseWriter, r *http.Requ
} else if user.Conn.IsLoginInProgress() { } else if user.Conn.IsLoginInProgress() {
remote.StateEvent = StateConnecting remote.StateEvent = StateConnecting
remote.Error = WAConnecting remote.Error = WAConnecting
} else if user.Conn.IsConnected() { } else if !user.Conn.IsConnected() && user.Session != nil {
global.StateEvent = StateUnconfigured remote.StateEvent = StateBadCredentials
} else { remote.Error = WANotConnected
if user.Session == nil { } // else: unconfigured
global.StateEvent = StateUnconfigured } else if user.Session != nil {
} else { remote.StateEvent = StateBadCredentials
remote.StateEvent = StateBadCredentials remote.Error = WANotConnected
remote.Error = WANotConnected } // else: unconfigured
}
}
}
global = global.fill(nil) global = global.fill(nil)
resp := GlobalBridgeState{BridgeState: global} resp := GlobalBridgeState{
BridgeState: global,
RemoteStates: map[string]BridgeState{},
}
if len(remote.StateEvent) > 0 { if len(remote.StateEvent) > 0 {
remote = remote.fill(user) remote = remote.fill(user)
resp.RemoteStates = map[string]BridgeState{ resp.RemoteStates[remote.RemoteID] = remote
remote.RemoteID: remote,
}
} }
user.log.Debugfln("Responding bridge state in bridge status endpoint: %+v", resp) user.log.Debugfln("Responding bridge state in bridge status endpoint: %+v", resp)
jsonResponse(w, http.StatusOK, &resp) jsonResponse(w, http.StatusOK, &resp)