Skip to content

Commit 7c57449

Browse files
authored
feat: Publish jibri status in visitor MUCs. (#1244)
* feat: Publish jibri status in visitor MUCs. * squash: Remove redundant null checks.
1 parent dfd3372 commit 7c57449

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

jicofo/src/main/java/org/jitsi/jicofo/conference/JitsiMeetConference.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.jitsi.jicofo.xmpp.muc.*;
2626
import org.jitsi.utils.*;
2727
import org.jitsi.xmpp.extensions.jibri.*;
28+
import org.jivesoftware.smack.packet.*;
2829
import org.jxmpp.jid.*;
2930

3031
import java.util.*;
@@ -180,4 +181,6 @@ MuteResult handleMuteRequest(
180181
@Nullable
181182
String redirectVisitor(boolean visitorRequested, @Nullable String userId, @Nullable String groupId)
182183
throws Exception;
184+
185+
void setPresenceExtension(@NotNull ExtensionElement extension);
183186
}

jicofo/src/main/java/org/jitsi/jicofo/conference/JitsiMeetConferenceImpl.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.jivesoftware.smackx.caps.packet.*;
5050
import org.jxmpp.jid.*;
5151

52+
import javax.xml.namespace.*;
5253
import java.time.*;
5354
import java.util.*;
5455
import java.util.concurrent.*;
@@ -271,6 +272,9 @@ public class JitsiMeetConferenceImpl
271272
@Nullable
272273
private String meetingId;
273274

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+
274278
/**
275279
* Creates new instance of {@link JitsiMeetConferenceImpl}.
276280
*
@@ -606,6 +610,7 @@ else if (ConferenceConfig.config.enableAutoOwner() && mainRoomJid == null)
606610
}
607611

608612
presenceExtensions.add(createConferenceProperties());
613+
this.presenceExtensions.forEach((qName, extension) -> presenceExtensions.add(extension));
609614

610615
// updates presence with presenceExtensions and sends it
611616
chatRoom.addPresenceExtensions(presenceExtensions);
@@ -648,6 +653,22 @@ private void setConferenceProperty(@NotNull String key, @NotNull String value, b
648653
}
649654
}
650655

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+
651672
private ConferenceProperties createConferenceProperties()
652673
{
653674
ConferenceProperties conferenceProperties = new ConferenceProperties();
@@ -2039,6 +2060,7 @@ private String selectVisitorNode()
20392060
// properties up to date?
20402061
presenceExtensions.add(createConferenceProperties());
20412062

2063+
this.presenceExtensions.forEach((qName, extension) -> presenceExtensions.add(extension));
20422064
// updates presence with presenceExtensions and sends it
20432065
chatRoomToJoin.addPresenceExtensions(presenceExtensions);
20442066

jicofo/src/main/kotlin/org/jitsi/jicofo/jibri/JibriRecorder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,6 @@ class JibriRecorder(
188188
"Publishing new jibri-recording-status: ${recordingStatus.toXML()} in: ${conference.roomName}"
189189
)
190190

191-
conference.chatRoom?.setPresenceExtension(recordingStatus)
191+
conference.setPresenceExtension(recordingStatus)
192192
}
193193
}

0 commit comments

Comments
 (0)