fix(bbb-web): fix plugins not loading nor running into breakout-rooms (#21525)
* [fix-breakouts-plugin] - Fix plugin not loading and not running into breakouts. * [fix-breakouts-plugin] - simplifying createMeeting logic - changes in review
This commit is contained in:
parent
6d4fa12de2
commit
d1af76d8ff
@ -99,6 +99,7 @@ trait CreateBreakoutRoomsCmdMsgHdlr extends RightsManagementTrait {
|
|||||||
breakout.captureSlides,
|
breakout.captureSlides,
|
||||||
breakout.captureNotesFilename,
|
breakout.captureNotesFilename,
|
||||||
breakout.captureSlidesFilename,
|
breakout.captureSlidesFilename,
|
||||||
|
pluginProp = liveMeeting.props.pluginProp,
|
||||||
)
|
)
|
||||||
|
|
||||||
val event = buildCreateBreakoutRoomSysCmdMsg(liveMeeting.props.meetingProp.intId, roomDetail)
|
val event = buildCreateBreakoutRoomSysCmdMsg(liveMeeting.props.meetingProp.intId, roomDetail)
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package org.bigbluebutton.common2.msgs
|
package org.bigbluebutton.common2.msgs
|
||||||
|
|
||||||
|
import java.util
|
||||||
|
|
||||||
object BreakoutRoomEndedEvtMsg { val NAME = "BreakoutRoomEndedEvtMsg" }
|
object BreakoutRoomEndedEvtMsg { val NAME = "BreakoutRoomEndedEvtMsg" }
|
||||||
case class BreakoutRoomEndedEvtMsg(header: BbbClientMsgHeader, body: BreakoutRoomEndedEvtMsgBody) extends BbbCoreMsg
|
case class BreakoutRoomEndedEvtMsg(header: BbbClientMsgHeader, body: BreakoutRoomEndedEvtMsgBody) extends BbbCoreMsg
|
||||||
case class BreakoutRoomEndedEvtMsgBody(parentId: String, breakoutId: String)
|
case class BreakoutRoomEndedEvtMsgBody(parentId: String, breakoutId: String)
|
||||||
@ -56,6 +58,7 @@ case class BreakoutRoomDetail(
|
|||||||
captureSlides: Boolean,
|
captureSlides: Boolean,
|
||||||
captureNotesFilename: String,
|
captureNotesFilename: String,
|
||||||
captureSlidesFilename: String,
|
captureSlidesFilename: String,
|
||||||
|
pluginProp: util.Map[String, AnyRef],
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -464,15 +464,27 @@ public class MeetingService implements MessageListener {
|
|||||||
}
|
}
|
||||||
return urlContents;
|
return urlContents;
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized boolean createMeeting(Meeting m) {
|
public synchronized boolean createMeeting(Meeting m) {
|
||||||
|
Map<String, Object> pluginsMap = new HashMap<>();
|
||||||
|
return createMeeting(m, pluginsMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized boolean createMeeting(Meeting m, Map<String, Object> plugins) {
|
||||||
String internalMeetingId = paramsProcessorUtil.convertToInternalMeetingId(m.getExternalId());
|
String internalMeetingId = paramsProcessorUtil.convertToInternalMeetingId(m.getExternalId());
|
||||||
Meeting existingId = getNotEndedMeetingWithId(internalMeetingId);
|
Meeting existingId = getNotEndedMeetingWithId(internalMeetingId);
|
||||||
Meeting existingTelVoice = getNotEndedMeetingWithTelVoice(m.getTelVoice());
|
Meeting existingTelVoice = getNotEndedMeetingWithTelVoice(m.getTelVoice());
|
||||||
Meeting existingWebVoice = getNotEndedMeetingWithWebVoice(m.getWebVoice());
|
Meeting existingWebVoice = getNotEndedMeetingWithWebVoice(m.getWebVoice());
|
||||||
if (existingId == null && existingTelVoice == null && existingWebVoice == null) {
|
if (existingId == null && existingTelVoice == null && existingWebVoice == null) {
|
||||||
meetings.put(m.getInternalId(), m);
|
meetings.put(m.getInternalId(), m);
|
||||||
Map<String, Object> requestedManifests = requestPluginManifests(m);
|
Map<String, Object> pluginsMap;
|
||||||
m.setPlugins(requestedManifests);
|
if (m.isBreakout()) {
|
||||||
|
pluginsMap = plugins;
|
||||||
|
} else {
|
||||||
|
pluginsMap = requestPluginManifests(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
m.setPlugins(pluginsMap);
|
||||||
handle(new CreateMeeting(m));
|
handle(new CreateMeeting(m));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -808,7 +820,7 @@ public class MeetingService implements MessageListener {
|
|||||||
|
|
||||||
Meeting breakout = paramsProcessorUtil.processCreateParams(params);
|
Meeting breakout = paramsProcessorUtil.processCreateParams(params);
|
||||||
|
|
||||||
createMeeting(breakout);
|
createMeeting(breakout, message.pluginProp);
|
||||||
|
|
||||||
presDownloadService.extractPresentationPage(message.parentMeetingId,
|
presDownloadService.extractPresentationPage(message.parentMeetingId,
|
||||||
message.sourcePresentationId,
|
message.sourcePresentationId,
|
||||||
|
@ -576,16 +576,18 @@ public class ParamsProcessorUtil {
|
|||||||
|
|
||||||
// Parse Plugins Manifests from config and param
|
// Parse Plugins Manifests from config and param
|
||||||
ArrayList<PluginManifest> listOfPluginManifests = new ArrayList<PluginManifest>();
|
ArrayList<PluginManifest> listOfPluginManifests = new ArrayList<PluginManifest>();
|
||||||
//Process plugins from config
|
if (!isBreakout){
|
||||||
if(defaultPluginManifests != null && !defaultPluginManifests.isEmpty()) {
|
//Process plugins from config
|
||||||
ArrayList<PluginManifest> pluginManifestsFromConfig = processPluginManifests(defaultPluginManifests);
|
if (defaultPluginManifests != null && !defaultPluginManifests.isEmpty()) {
|
||||||
listOfPluginManifests.addAll(pluginManifestsFromConfig);
|
ArrayList<PluginManifest> pluginManifestsFromConfig = processPluginManifests(defaultPluginManifests);
|
||||||
}
|
listOfPluginManifests.addAll(pluginManifestsFromConfig);
|
||||||
//Process plugins from /create param
|
}
|
||||||
String pluginManifestsParam = params.get(ApiParams.PLUGIN_MANIFESTS);
|
//Process plugins from /create param
|
||||||
if (!StringUtils.isEmpty(pluginManifestsParam)) {
|
String pluginManifestsParam = params.get(ApiParams.PLUGIN_MANIFESTS);
|
||||||
ArrayList<PluginManifest> pluginManifestsFromParam = processPluginManifests(pluginManifestsParam);
|
if (!StringUtils.isEmpty(pluginManifestsParam)) {
|
||||||
listOfPluginManifests.addAll(pluginManifestsFromParam);
|
ArrayList<PluginManifest> pluginManifestsFromParam = processPluginManifests(pluginManifestsParam);
|
||||||
|
listOfPluginManifests.addAll(pluginManifestsFromParam);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if VirtualBackgrounds is disabled
|
// Check if VirtualBackgrounds is disabled
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package org.bigbluebutton.api.messaging.messages;
|
package org.bigbluebutton.api.messaging.messages;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class CreateBreakoutRoom implements IMessage {
|
public class CreateBreakoutRoom implements IMessage {
|
||||||
|
|
||||||
public final String meetingId;
|
public final String meetingId;
|
||||||
@ -23,6 +25,7 @@ public class CreateBreakoutRoom implements IMessage {
|
|||||||
public final Boolean captureSlides; // Upload annotated breakout slides to main room after breakout room end
|
public final Boolean captureSlides; // Upload annotated breakout slides to main room after breakout room end
|
||||||
public final String captureNotesFilename;
|
public final String captureNotesFilename;
|
||||||
public final String captureSlidesFilename;
|
public final String captureSlidesFilename;
|
||||||
|
public final Map<String, Object> pluginProp;
|
||||||
|
|
||||||
public CreateBreakoutRoom(String meetingId,
|
public CreateBreakoutRoom(String meetingId,
|
||||||
String parentMeetingId,
|
String parentMeetingId,
|
||||||
@ -43,7 +46,8 @@ public class CreateBreakoutRoom implements IMessage {
|
|||||||
Boolean captureNotes,
|
Boolean captureNotes,
|
||||||
Boolean captureSlides,
|
Boolean captureSlides,
|
||||||
String captureNotesFilename,
|
String captureNotesFilename,
|
||||||
String captureSlidesFilename) {
|
String captureSlidesFilename,
|
||||||
|
Map<String, Object> pluginProp) {
|
||||||
this.meetingId = meetingId;
|
this.meetingId = meetingId;
|
||||||
this.parentMeetingId = parentMeetingId;
|
this.parentMeetingId = parentMeetingId;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
@ -64,5 +68,6 @@ public class CreateBreakoutRoom implements IMessage {
|
|||||||
this.captureSlides = captureSlides;
|
this.captureSlides = captureSlides;
|
||||||
this.captureNotesFilename = captureNotesFilename;
|
this.captureNotesFilename = captureNotesFilename;
|
||||||
this.captureSlidesFilename = captureSlidesFilename;
|
this.captureSlidesFilename = captureSlidesFilename;
|
||||||
|
this.pluginProp = pluginProp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -127,6 +127,7 @@ class OldMeetingMsgHdlrActor(val olgMsgGW: OldMessageReceivedGW)
|
|||||||
msg.body.room.captureSlides,
|
msg.body.room.captureSlides,
|
||||||
msg.body.room.captureNotesFilename,
|
msg.body.room.captureNotesFilename,
|
||||||
msg.body.room.captureSlidesFilename,
|
msg.body.room.captureSlidesFilename,
|
||||||
|
msg.body.room.pluginProp,
|
||||||
))
|
))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user