auto update customUser access token

This commit is contained in:
zhaoYangguang 2021-11-15 20:55:21 +08:00
parent 7b04f2d9b7
commit b8da92fc1b
1 changed files with 22 additions and 7 deletions

View File

@ -101,11 +101,14 @@ func (puppet *Puppet) StartCustomMXID() error {
}
resp, err := intent.Whoami()
if err != nil {
if strings.Index(err.Error(), "M_UNKNOWN_TOKEN (HTTP 401)") > -1 {
puppet.log.Debugln("StartCustomMXID UpdateAccessToken: ", puppet.MXID)
if puppet.customUser != nil {
err, _ = puppet.customUser.UpdateAccessToken(puppet)
}
// if strings.Index(err.Error(), "M_UNKNOWN_TOKEN (HTTP 401)") > -1 {
// puppet.log.Debugln("StartCustomMXID UpdateAccessToken: ", puppet.MXID)
// if puppet.customUser != nil {
// err, _ = puppet.customUser.UpdateAccessToken(puppet)
// }
// }
if puppet.customUser != nil {
err, _ = puppet.updateCustomAccessTokenIfExpired(err, puppet.customUser)
}
if err != nil {
puppet.clearCustomMXID()
@ -123,6 +126,17 @@ func (puppet *Puppet) StartCustomMXID() error {
return nil
}
func (puppet *Puppet) updateCustomAccessTokenIfExpired(err error, user *User) (newErr error, accessToken string) {
if user == nil {
return err, ""
}
puppet.log.Debugln("StartCustomMXID UpdateAccessToken: ", puppet.MXID)
if strings.Index(err.Error(), "M_UNKNOWN_TOKEN (HTTP 401)") > -1 {
return user.UpdateAccessToken(puppet)
}
return err, ""
}
func (puppet *Puppet) startSyncing() {
if !puppet.bridge.Config.Bridge.SyncWithCustomPuppets {
return
@ -146,7 +160,7 @@ func (puppet *Puppet) stopSyncing() {
func (puppet *Puppet) ProcessResponse(resp *mautrix.RespSync, since string) error {
if !puppet.customUser.IsConnected() {
puppet.log.Debugln("Skipping sync processing: custom user not connected to whatsapp")
puppet.log.Debugln("Skipping sync processing: custom user not connected to skype")
return nil
}
for roomID, events := range resp.Rooms.Join {
@ -237,7 +251,8 @@ func (puppet *Puppet) handleTypingEvent(portal *Portal, evt *event.Event) {
func (puppet *Puppet) OnFailedSync(res *mautrix.RespSync, err error) (time.Duration, error) {
puppet.log.Warnln("Sync error:", err)
return 10 * time.Second, nil
err, _ = puppet.updateCustomAccessTokenIfExpired(err, puppet.customUser)
return 10 * time.Second, err
}
func (puppet *Puppet) GetFilterJSON(_ id.UserID) *mautrix.Filter {