Prevent re-requesting avatar data (xmpp) (#1117)
Prevent asking the server again and again for a user's avatar if the server does not respond to our initial request.
This commit is contained in:
parent
9440b9e313
commit
900375679b
|
@ -24,6 +24,7 @@ type Bxmpp struct {
|
|||
connected bool
|
||||
sync.RWMutex
|
||||
|
||||
avatarAvailability map[string]bool
|
||||
avatarMap map[string]string
|
||||
}
|
||||
|
||||
|
@ -31,6 +32,7 @@ func New(cfg *bridge.Config) bridge.Bridger {
|
|||
return &Bxmpp{
|
||||
Config: cfg,
|
||||
xmppMap: make(map[string]string),
|
||||
avatarAvailability: make(map[string]bool),
|
||||
avatarMap: make(map[string]string),
|
||||
}
|
||||
}
|
||||
|
@ -244,10 +246,14 @@ func (b *Bxmpp) handleXMPP() error {
|
|||
event = config.EventTopicChange
|
||||
}
|
||||
|
||||
avatar := getAvatar(b.avatarMap, v.Remote, b.General)
|
||||
if avatar == "" {
|
||||
available, sok := b.avatarAvailability[v.Remote]
|
||||
avatar := ""
|
||||
if !sok {
|
||||
b.Log.Debugf("Requesting avatar data")
|
||||
b.avatarAvailability[v.Remote] = false
|
||||
b.xc.AvatarRequestData(v.Remote)
|
||||
} else if available {
|
||||
avatar = getAvatar(b.avatarMap, v.Remote, b.General)
|
||||
}
|
||||
|
||||
msgID := v.ID
|
||||
|
@ -278,6 +284,8 @@ func (b *Bxmpp) handleXMPP() error {
|
|||
}
|
||||
case xmpp.AvatarData:
|
||||
b.handleDownloadAvatar(v)
|
||||
b.avatarAvailability[v.From] = true
|
||||
b.Log.Debugf("Avatar for %s is now available", v.From)
|
||||
case xmpp.Presence:
|
||||
// Do nothing.
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue