aboutsummaryrefslogtreecommitdiff
path: root/xmpp/handlers.go
diff options
context:
space:
mode:
authorBohdan Horbeshko <bodqhrohro@gmail.com>2022-07-08 15:43:44 +0300
committerBohdan Horbeshko <bodqhrohro@gmail.com>2022-07-08 15:43:44 +0300
commit7ef32096af6017607f70a0b5aa2fbc03925c72d1 (patch)
tree1c3dfed09b9916110fd259846993c64af0f58de4 /xmpp/handlers.go
parent63f12202d0c5d2a570b48d05e62722e0fea54467 (diff)
Basic room disco info
Diffstat (limited to 'xmpp/handlers.go')
-rw-r--r--xmpp/handlers.go33
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