Duplicate chat presences as following MUC member presences too

This commit is contained in:
Bohdan Horbeshko 2025-05-08 20:17:16 -04:00
parent c6ca9c02c8
commit 71f59ee739

View file

@ -454,11 +454,32 @@ func (c *Client) ProcessStatusUpdate(chatID int64, status string, show string, o
gateway.SPPhoto(photo),
gateway.SPImmed(gateway.SPImmed.Get(oldArgs)),
}
newArgs = gateway.SPAppendFrom(newArgs, chatID)
if presenceType != "" {
newArgs = append(newArgs, gateway.SPType(presenceType))
}
c.locks.mucCacheLock.Lock()
for mucId, state := range c.mucCache {
member, ok := state.Members[chatID]
if ok {
sMucId := strconv.FormatInt(mucId, 10)
newMucArgs := append(
newArgs,
gateway.SPFrom(sMucId),
gateway.SPResource(member.Nickname),
gateway.SPMUCAffiliation(member.Affiliation),
)
err := c.sendPresence(newMucArgs...)
if err != nil {
c.locks.mucCacheLock.Unlock()
return err
}
}
}
c.locks.mucCacheLock.Unlock()
newArgs = gateway.SPAppendFrom(newArgs, chatID)
return c.sendPresence(newArgs...)
}