From 7ef32096af6017607f70a0b5aa2fbc03925c72d1 Mon Sep 17 00:00:00 2001 From: Bohdan Horbeshko Date: Fri, 8 Jul 2022 08:43:44 -0400 Subject: Basic room disco info --- xmpp/handlers.go | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'xmpp/handlers.go') 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 -- cgit v1.2.3