// Generic helpers package main import ( "errors" "gosrc.io/xmpp/stanza" "sort" "sync" ) func rangeOrdered(m *sync.Map, fn func(k, v any) bool) { var keys []string m.Range(func(k, v any) bool { keys = append(keys, k.(string)) return true }) sort.Strings(keys) for _, k := range keys { v, _ := m.Load(k) if !fn(k, v) { break } } } func getPresenceFromJIDMuc(jid *stanza.Jid) (*stanza.Presence, error) { mo, ok := mucmembers.Load(jid.Bare()) if !ok { return nil, errors.New("tab is not present in mucmembers") } mm, ok := mo.(mucUnit) if !ok { return nil, errors.New("mucUnit is nil") } mmm := mm.Members mmmm, ok := mmm.Load(jid.Resource) if !ok { return nil, errors.New("user not in room") } pres, ok := mmmm.(stanza.Presence) if !ok { return nil, errors.New("presence is nil") } return &pres, nil }