|
49 | 49 | import org.jivesoftware.smackx.caps.packet.*; |
50 | 50 | import org.jxmpp.jid.*; |
51 | 51 |
|
| 52 | +import javax.xml.namespace.*; |
52 | 53 | import java.time.*; |
53 | 54 | import java.util.*; |
54 | 55 | import java.util.concurrent.*; |
@@ -271,6 +272,9 @@ public class JitsiMeetConferenceImpl |
271 | 272 | @Nullable |
272 | 273 | private String meetingId; |
273 | 274 |
|
| 275 | + /** Presence extensions set from the outside which are to be added to the presence in each MUC. */ |
| 276 | + private final Map<QName, ExtensionElement> presenceExtensions = new ConcurrentHashMap<>(); |
| 277 | + |
274 | 278 | /** |
275 | 279 | * Creates new instance of {@link JitsiMeetConferenceImpl}. |
276 | 280 | * |
@@ -606,6 +610,7 @@ else if (ConferenceConfig.config.enableAutoOwner() && mainRoomJid == null) |
606 | 610 | } |
607 | 611 |
|
608 | 612 | presenceExtensions.add(createConferenceProperties()); |
| 613 | + this.presenceExtensions.forEach((qName, extension) -> presenceExtensions.add(extension)); |
609 | 614 |
|
610 | 615 | // updates presence with presenceExtensions and sends it |
611 | 616 | chatRoom.addPresenceExtensions(presenceExtensions); |
@@ -648,6 +653,22 @@ private void setConferenceProperty(@NotNull String key, @NotNull String value, b |
648 | 653 | } |
649 | 654 | } |
650 | 655 |
|
| 656 | + @Override |
| 657 | + public void setPresenceExtension(@NotNull ExtensionElement extension) |
| 658 | + { |
| 659 | + presenceExtensions.put(extension.getQName(), extension); |
| 660 | + |
| 661 | + ChatRoom chatRoom = this.chatRoom; |
| 662 | + if (chatRoom != null) |
| 663 | + { |
| 664 | + chatRoom.setPresenceExtension(extension); |
| 665 | + } |
| 666 | + for (final ChatRoom visitorChatRoom: visitorChatRooms.values()) |
| 667 | + { |
| 668 | + visitorChatRoom.setPresenceExtension(extension); |
| 669 | + } |
| 670 | + } |
| 671 | + |
651 | 672 | private ConferenceProperties createConferenceProperties() |
652 | 673 | { |
653 | 674 | ConferenceProperties conferenceProperties = new ConferenceProperties(); |
@@ -2039,6 +2060,7 @@ private String selectVisitorNode() |
2039 | 2060 | // properties up to date? |
2040 | 2061 | presenceExtensions.add(createConferenceProperties()); |
2041 | 2062 |
|
| 2063 | + this.presenceExtensions.forEach((qName, extension) -> presenceExtensions.add(extension)); |
2042 | 2064 | // updates presence with presenceExtensions and sends it |
2043 | 2065 | chatRoomToJoin.addPresenceExtensions(presenceExtensions); |
2044 | 2066 |
|
|
0 commit comments