Initial back-end wiring for breakout slides capture

This commit is contained in:
Daniel Petri Rocha 2022-09-04 22:34:04 +02:00
parent 8aa0d1b0e7
commit 16b3d43f19
13 changed files with 37 additions and 9 deletions

View File

@ -70,7 +70,8 @@ trait CreateBreakoutRoomsCmdMsgHdlr extends RightsManagementTrait {
liveMeeting.props.password.moderatorPass, liveMeeting.props.password.moderatorPass,
liveMeeting.props.password.viewerPass, liveMeeting.props.password.viewerPass,
presId, presSlide, msg.body.record, presId, presSlide, msg.body.record,
liveMeeting.props.breakoutProps.privateChatEnabled liveMeeting.props.breakoutProps.privateChatEnabled,
liveMeeting.props.breakoutProps.bringBackSlidesEnabled
) )
val event = buildCreateBreakoutRoomSysCmdMsg(liveMeeting.props.meetingProp.intId, roomDetail) val event = buildCreateBreakoutRoomSysCmdMsg(liveMeeting.props.meetingProp.intId, roomDetail)

View File

@ -25,7 +25,8 @@ case class BreakoutProps(
freeJoin: Boolean, freeJoin: Boolean,
breakoutRooms: Vector[String], breakoutRooms: Vector[String],
record: Boolean, record: Boolean,
privateChatEnabled: Boolean privateChatEnabled: Boolean,
bringBackSlidesEnabled: Boolean
) )
case class PasswordProp(moderatorPass: String, viewerPass: String, learningDashboardAccessToken: String) case class PasswordProp(moderatorPass: String, viewerPass: String, learningDashboardAccessToken: String)

View File

@ -58,7 +58,8 @@ case class BreakoutRoomDetail(
sourcePresentationId: String, sourcePresentationId: String,
sourcePresentationSlide: Int, sourcePresentationSlide: Int,
record: Boolean, record: Boolean,
privateChatEnabled: Boolean privateChatEnabled: Boolean,
bringBackSlidesEnabled: Boolean
) )
/** /**

View File

@ -76,6 +76,7 @@ public class ApiParams {
public static final String BREAKOUT_ROOMS_ENABLED = "breakoutRoomsEnabled"; public static final String BREAKOUT_ROOMS_ENABLED = "breakoutRoomsEnabled";
public static final String BREAKOUT_ROOMS_RECORD = "breakoutRoomsRecord"; public static final String BREAKOUT_ROOMS_RECORD = "breakoutRoomsRecord";
public static final String BREAKOUT_ROOMS_PRIVATE_CHAT_ENABLED = "breakoutRoomsPrivateChatEnabled"; public static final String BREAKOUT_ROOMS_PRIVATE_CHAT_ENABLED = "breakoutRoomsPrivateChatEnabled";
public static final String BREAKOUT_ROOMS_BRING_BACK_SLIDES_ENABLED = "breakoutRoomsBringBackSlidesEnabled";
public static final String LOCK_SETTINGS_DISABLE_CAM = "lockSettingsDisableCam"; public static final String LOCK_SETTINGS_DISABLE_CAM = "lockSettingsDisableCam";
public static final String LOCK_SETTINGS_DISABLE_MIC = "lockSettingsDisableMic"; public static final String LOCK_SETTINGS_DISABLE_MIC = "lockSettingsDisableMic";

View File

@ -104,6 +104,7 @@ public class ParamsProcessorUtil {
private boolean defaultBreakoutRoomsEnabled = true; private boolean defaultBreakoutRoomsEnabled = true;
private boolean defaultBreakoutRoomsRecord; private boolean defaultBreakoutRoomsRecord;
private boolean defaultBreakoutRoomsBringBackSlidesEnabled = true;
private boolean defaultbreakoutRoomsPrivateChatEnabled; private boolean defaultbreakoutRoomsPrivateChatEnabled;
private boolean defaultLockSettingsDisableCam; private boolean defaultLockSettingsDisableCam;
@ -273,7 +274,13 @@ public class ParamsProcessorUtil {
breakoutRoomsPrivateChatEnabled = Boolean.parseBoolean(breakoutRoomsPrivateChatEnabledParam); breakoutRoomsPrivateChatEnabled = Boolean.parseBoolean(breakoutRoomsPrivateChatEnabledParam);
} }
return new BreakoutRoomsParams(breakoutRoomsRecord, breakoutRoomsPrivateChatEnabled); Boolean breakoutRoomsBringBackSlidesEnabled = defaultBreakoutRoomsBringBackSlidesEnabled;
String breakoutRoomsBringBackSlidesEnabledParam = params.get(ApiParams.BREAKOUT_ROOMS_BRING_BACK_SLIDES_ENABLED);
if (!StringUtils.isEmpty(breakoutRoomsBringBackSlidesEnabledParam)) {
breakoutRoomsBringBackSlidesEnabled = Boolean.parseBoolean(breakoutRoomsBringBackSlidesEnabledParam);
}
return new BreakoutRoomsParams(breakoutRoomsRecord, breakoutRoomsPrivateChatEnabled, breakoutRoomsBringBackSlidesEnabled);
} }
private LockSettingsParams processLockSettingsParams(Map<String, String> params) { private LockSettingsParams processLockSettingsParams(Map<String, String> params) {
@ -1305,6 +1312,10 @@ public class ParamsProcessorUtil {
this.defaultBreakoutRoomsRecord = breakoutRoomsRecord; this.defaultBreakoutRoomsRecord = breakoutRoomsRecord;
} }
public void setBreakoutRoomsBringBackSlidesEnabled(Boolean breakoutRoomsBringBackSlidesEnabled) {
this.defaultBreakoutRoomsBringBackSlidesEnabled = breakoutRoomsBringBackSlidesEnabled;
}
public void setBreakoutRoomsPrivateChatEnabled(Boolean breakoutRoomsPrivateChatEnabled) { public void setBreakoutRoomsPrivateChatEnabled(Boolean breakoutRoomsPrivateChatEnabled) {
this.defaultbreakoutRoomsPrivateChatEnabled = breakoutRoomsPrivateChatEnabled; this.defaultbreakoutRoomsPrivateChatEnabled = breakoutRoomsPrivateChatEnabled;
} }

View File

@ -3,9 +3,11 @@ package org.bigbluebutton.api.domain;
public class BreakoutRoomsParams { public class BreakoutRoomsParams {
public final Boolean record; public final Boolean record;
public final Boolean privateChatEnabled; public final Boolean privateChatEnabled;
public final Boolean bringBackSlidesEnabled;
public BreakoutRoomsParams(Boolean record, Boolean privateChatEnabled) { public BreakoutRoomsParams(Boolean record, Boolean privateChatEnabled, Boolean bringBackSlidesEnabled) {
this.record = record; this.record = record;
this.privateChatEnabled = privateChatEnabled; this.privateChatEnabled = privateChatEnabled;
this.bringBackSlidesEnabled = bringBackSlidesEnabled;
} }
} }

View File

@ -19,6 +19,8 @@ public class CreateBreakoutRoom implements IMessage {
public final Integer sourcePresentationSlide; public final Integer sourcePresentationSlide;
public final Boolean record; public final Boolean record;
public final Boolean privateChatEnabled; public final Boolean privateChatEnabled;
public final Boolean bringBackSlidesEnabled; // Upload annotated breakout slides to main room
// after breakout room end
public CreateBreakoutRoom(String meetingId, public CreateBreakoutRoom(String meetingId,
String parentMeetingId, String parentMeetingId,
@ -35,7 +37,8 @@ public class CreateBreakoutRoom implements IMessage {
String sourcePresentationId, String sourcePresentationId,
Integer sourcePresentationSlide, Integer sourcePresentationSlide,
Boolean record, Boolean record,
Boolean privateChatEnabled) { Boolean privateChatEnabled,
Boolean bringBackSlidesEnabled) {
this.meetingId = meetingId; this.meetingId = meetingId;
this.parentMeetingId = parentMeetingId; this.parentMeetingId = parentMeetingId;
this.name = name; this.name = name;
@ -52,5 +55,6 @@ public class CreateBreakoutRoom implements IMessage {
this.sourcePresentationSlide = sourcePresentationSlide; this.sourcePresentationSlide = sourcePresentationSlide;
this.record = record; this.record = record;
this.privateChatEnabled = privateChatEnabled; this.privateChatEnabled = privateChatEnabled;
this.bringBackSlidesEnabled = bringBackSlidesEnabled;
} }
} }

View File

@ -185,7 +185,8 @@ class BbbWebApiGWApp(
freeJoin = freeJoin.booleanValue(), freeJoin = freeJoin.booleanValue(),
breakoutRooms = Vector(), breakoutRooms = Vector(),
record = breakoutParams.record.booleanValue(), record = breakoutParams.record.booleanValue(),
privateChatEnabled = breakoutParams.privateChatEnabled.booleanValue() privateChatEnabled = breakoutParams.privateChatEnabled.booleanValue(),
bringBackSlidesEnabled = breakoutParams.bringBackSlidesEnabled.booleanValue()
) )
val welcomeProp = WelcomeProp(welcomeMsgTemplate = welcomeMsgTemplate, welcomeMsg = welcomeMsg, val welcomeProp = WelcomeProp(welcomeMsgTemplate = welcomeMsgTemplate, welcomeMsg = welcomeMsg,

View File

@ -102,7 +102,8 @@ class OldMeetingMsgHdlrActor(val olgMsgGW: OldMessageReceivedGW)
msg.body.room.sourcePresentationId, msg.body.room.sourcePresentationId,
msg.body.room.sourcePresentationSlide, msg.body.room.sourcePresentationSlide,
msg.body.room.record, msg.body.room.record,
msg.body.room.privateChatEnabled msg.body.room.privateChatEnabled,
msg.body.room.bringBackSlidesEnabled
)) ))
} }

View File

@ -74,6 +74,7 @@ export default function addMeeting(meeting) {
parentId: String, parentId: String,
record: Boolean, record: Boolean,
privateChatEnabled: Boolean, privateChatEnabled: Boolean,
bringBackSlidesEnabled: Boolean,
}, },
meetingProp: { meetingProp: {
intId: String, intId: String,

View File

@ -1023,6 +1023,7 @@
"app.createBreakoutRoom.addRoomTime": "Increase breakout room time to", "app.createBreakoutRoom.addRoomTime": "Increase breakout room time to",
"app.createBreakoutRoom.addParticipantLabel": "+ Add participant", "app.createBreakoutRoom.addParticipantLabel": "+ Add participant",
"app.createBreakoutRoom.freeJoin": "Allow users to choose a breakout room to join", "app.createBreakoutRoom.freeJoin": "Allow users to choose a breakout room to join",
"app.createBreakoutRoom.capture": "Capture presentations when breakout rooms end",
"app.createBreakoutRoom.leastOneWarnBreakout": "You must place at least one user in a breakout room.", "app.createBreakoutRoom.leastOneWarnBreakout": "You must place at least one user in a breakout room.",
"app.createBreakoutRoom.minimumDurationWarnBreakout": "Minimum duration for a breakout room is {0} minutes.", "app.createBreakoutRoom.minimumDurationWarnBreakout": "Minimum duration for a breakout room is {0} minutes.",
"app.createBreakoutRoom.modalDesc": "Tip: You can drag-and-drop a user's name to assign them to a specific breakout room.", "app.createBreakoutRoom.modalDesc": "Tip: You can drag-and-drop a user's name to assign them to a specific breakout room.",

View File

@ -391,6 +391,7 @@ checkBBBServerEvery=10
# Default settings for breakout rooms # Default settings for breakout rooms
breakoutRoomsRecord=false breakoutRoomsRecord=false
breakoutRoomsPrivateChatEnabled=true breakoutRoomsPrivateChatEnabled=true
breakoutRoomsBringBackSlidesEnabled=true
# Default Lock Settings # Default Lock Settings
lockSettingsDisableCam=false lockSettingsDisableCam=false
@ -419,6 +420,7 @@ endWhenNoModeratorDelayInMinutes=1
# List of features to disable (comma-separated) # List of features to disable (comma-separated)
# Available options: breakoutRooms, captions, chat, externalVideos, layouts, learningDashboard, polls, screenshare, # Available options: breakoutRooms, captions, chat, externalVideos, layouts, learningDashboard, polls, screenshare,
# sharedNotes, virtualBackgrounds, downloadPresentationWithAnnotations, importPresentationWithAnnotationsFromBreakoutRooms # sharedNotes, virtualBackgrounds, downloadPresentationWithAnnotations, importPresentationWithAnnotationsFromBreakoutRooms
#disabledFeatures= #disabledFeatures=
# Notify users that recording is on # Notify users that recording is on

View File

@ -1002,6 +1002,7 @@ class ApiController {
breakoutRooms { breakoutRooms {
record meeting.breakoutRoomsParams.record record meeting.breakoutRoomsParams.record
privateChatEnabled meeting.breakoutRoomsParams.privateChatEnabled privateChatEnabled meeting.breakoutRoomsParams.privateChatEnabled
bringBackSlidesEnabled meeting.breakoutRoomsParams.bringBackSlidesEnabled
} }
} }
customdata ( customdata (