diff options
author | Bohdan Horbeshko <bodqhrohro@gmail.com> | 2022-07-08 15:43:44 +0300 |
---|---|---|
committer | Bohdan Horbeshko <bodqhrohro@gmail.com> | 2022-07-08 15:43:44 +0300 |
commit | 7ef32096af6017607f70a0b5aa2fbc03925c72d1 (patch) | |
tree | 1c3dfed09b9916110fd259846993c64af0f58de4 /xmpp/handlers.go | |
parent | 63f12202d0c5d2a570b48d05e62722e0fea54467 (diff) |
Basic room disco info
Diffstat (limited to 'xmpp/handlers.go')
-rw-r--r-- | xmpp/handlers.go | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/xmpp/handlers.go b/xmpp/handlers.go index 3b688f5..6531983 100644 --- a/xmpp/handlers.go +++ b/xmpp/handlers.go @@ -339,18 +339,35 @@ func handleGetDisco(dt discoType, s xmpp.Sender, iq *stanza.IQ) { if dt == discoTypeInfo { disco := answer.DiscoInfo() - _, ok := toToID(iq.To) - if ok { + toID, toOk := toToID(iq.To) + if toOk { disco.AddIdentity("", "account", "registered") } else { disco.AddIdentity("Telegram Gateway", "gateway", "telegram") } - bare, _, ok := splitFrom(iq.From) - if ok { - session, ok := sessions[bare] - if ok && session.Session.MUC { - disco.AddFeatures(stanza.NSDiscoItems) - disco.AddIdentity("Telegram group chats", "conference", "text") + bare, _, fromOk := splitFrom(iq.From) + if fromOk { + session, sessionOk := sessions[bare] + if sessionOk && session.Session.MUC { + if toOk { + chat, _, err := session.GetContactByID(toID, nil) + if err == nil && session.IsGroup(chat) { + disco.AddIdentity(chat.Title, "conference", "text") + } + + disco.AddFeatures( + "http://jabber.org/protocol/muc", + "muc_persistent", + "muc_hidden", + "muc_membersonly", + "muc_unmoderated", + "muc_nonanonymous", + "muc_unsecured", + ) + } else { + disco.AddFeatures(stanza.NSDiscoItems) + disco.AddIdentity("Telegram group chats", "conference", "text") + } } } answer.Payload = disco |