Handle pair revoke events

This commit is contained in:
Tulir Asokan 2023-07-16 02:41:34 +03:00
parent 9f189d913b
commit 511e85c242
3 changed files with 10 additions and 1 deletions

View file

@ -23,6 +23,7 @@ import (
const ( const (
GMListenError status.BridgeStateErrorCode = "gm-listen-error" GMListenError status.BridgeStateErrorCode = "gm-listen-error"
GMFatalError status.BridgeStateErrorCode = "gm-listen-fatal-error" GMFatalError status.BridgeStateErrorCode = "gm-listen-fatal-error"
GMUnpaired status.BridgeStateErrorCode = "gm-unpaired"
GMNotConnected status.BridgeStateErrorCode = "gm-not-connected" GMNotConnected status.BridgeStateErrorCode = "gm-not-connected"
GMConnecting status.BridgeStateErrorCode = "gm-connecting" GMConnecting status.BridgeStateErrorCode = "gm-connecting"
GMConnectionFailed status.BridgeStateErrorCode = "gm-connection-failed" GMConnectionFailed status.BridgeStateErrorCode = "gm-connection-failed"
@ -35,7 +36,8 @@ const (
func init() { func init() {
status.BridgeStateHumanErrors.Update(status.BridgeStateErrorMap{ status.BridgeStateHumanErrors.Update(status.BridgeStateErrorMap{
GMListenError: "Error polling messages from Google Messages server, the bridge will try to reconnect", GMListenError: "Error polling messages from Google Messages server, the bridge will try to reconnect",
GMFatalError: "Google Messages login was invalidated, please re-link the bridge", GMFatalError: "Google Messages token was invalidated, please re-link the bridge",
GMUnpaired: "The bridge was unpaired from Google Messages, please re-link the bridge",
GMBrowserInactive: "Google Messages opened in another browser", GMBrowserInactive: "Google Messages opened in another browser",
GMBrowserInactiveTimeout: "Google Messages disconnected due to timeout", GMBrowserInactiveTimeout: "Google Messages disconnected due to timeout",
GMBrowserInactiveInactivity: "Google Messages disconnected due to inactivity", GMBrowserInactiveInactivity: "Google Messages disconnected due to inactivity",

View file

@ -23,6 +23,7 @@ func (c *Client) handlePairingEvent(response *pblite.Response) {
} }
case *binary.PairEvents_Revoked: case *binary.PairEvents_Revoked:
c.Logger.Debug().Any("data", evt).Msg("Revoked Device") c.Logger.Debug().Any("data", evt).Msg("Revoked Device")
c.triggerEvent(evt.Revoked)
default: default:
c.Logger.Debug().Any("response", response).Any("evt", evt).Msg("Invalid PairEvents type") c.Logger.Debug().Any("response", response).Any("evt", evt).Msg("Invalid PairEvents type")
} }

View file

@ -546,6 +546,12 @@ func (user *User) HandleEvent(event interface{}) {
if err != nil { if err != nil {
user.zlog.Err(err).Msg("Failed to update session in database") user.zlog.Err(err).Msg("Failed to update session in database")
} }
case *binary.RevokePairData:
user.zlog.Info().Any("revoked_device", v.GetRevokedDevice()).Msg("Got pair revoked event")
user.Logout(status.BridgeState{
StateEvent: status.StateBadCredentials,
Error: GMUnpaired,
}, false)
case *events.AuthTokenRefreshed: case *events.AuthTokenRefreshed:
err := user.Update(context.TODO()) err := user.Update(context.TODO())
if err != nil { if err != nil {