aboutsummaryrefslogtreecommitdiff
path: root/xmpp/extensions
diff options
context:
space:
mode:
authorBohdan Horbeshko <bodqhrohro@gmail.com>2023-09-18 06:21:57 +0300
committerBohdan Horbeshko <bodqhrohro@gmail.com>2023-09-18 06:21:57 +0300
commitf99f4f6acc6734ecbd0da80015285e6b3d39fdd8 (patch)
tree1edb75e85dab67337cc4d795cb66677242df1d55 /xmpp/extensions
parent776993894ad780f1500c139aff85378c8a1d22f5 (diff)
Send memberlist on MUC join, suppress PM statuses for MUC JIDs
Diffstat (limited to 'xmpp/extensions')
-rw-r--r--xmpp/extensions/extensions.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/xmpp/extensions/extensions.go b/xmpp/extensions/extensions.go
index 8e2f743..0b7269f 100644
--- a/xmpp/extensions/extensions.go
+++ b/xmpp/extensions/extensions.go
@@ -213,6 +213,19 @@ type QueryRegisterRemove struct {
XMLName xml.Name `xml:"remove"`
}
+// PresenceXMucUserExtension is from XEP-0045
+type PresenceXMucUserExtension struct {
+ XMLName xml.Name `xml:"http://jabber.org/protocol/muc#user x"`
+ Item PresenceXMucUserItem
+}
+
+// PresenceXMucUserItem is from XEP-0045
+type PresenceXMucUserItem struct {
+ XMLName xml.Name `xml:"item"`
+ Affiliation string `xml:"affiliation,attr"`
+ Role string `xml:"role,attr"`
+}
+
// Namespace is a namespace!
func (c PresenceNickExtension) Namespace() string {
return c.XMLName.Space
@@ -278,6 +291,11 @@ func (c QueryRegister) GetSet() *stanza.ResultSet {
return c.ResultSet
}
+// Namespace is a namespace!
+func (c PresenceXMucUserExtension) Namespace() string {
+ return c.XMLName.Space
+}
+
// Name is a packet name
func (ClientMessage) Name() string {
return "message"
@@ -362,4 +380,10 @@ func init() {
"jabber:iq:register",
"query",
}, QueryRegister{})
+
+ // presence muc user
+ stanza.TypeRegistry.MapExtension(stanza.PKTPresence, xml.Name{
+ "http://jabber.org/protocol/muc#user",
+ "x",
+ }, PresenceXMucUserExtension{})
}