From 415e34fb28e1919f1fa0faeb38900e4c425c82cd Mon Sep 17 00:00:00 2001 From: Ghazi Triki Date: Fri, 14 Oct 2016 21:28:44 +0100 Subject: [PATCH] Added new property redirectOnJoin to CreateBreakoutRoomsRequest. --- .../org/bigbluebutton/core/Protocol.scala | 2 +- .../bigbluebutton/core/api/InMessages.scala | 2 +- .../core/apps/BreakoutRoomApp.scala | 4 +-- .../core/apps/BreakoutRoomModel.scala | 1 + .../CreateBreakoutRoomsRequestPayload.java | 35 ++++++++++--------- .../CreateBreakoutRoomsRequestTest.java | 3 +- .../main/model/users/UserService.as | 2 +- .../modules/users/services/MessageSender.as | 3 +- 8 files changed, 29 insertions(+), 23 deletions(-) diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/Protocol.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/Protocol.scala index e0c9e689d8c5..7138d1eb811e 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/Protocol.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/Protocol.scala @@ -25,7 +25,7 @@ object UserMessagesProtocol extends DefaultJsonProtocol { } implicit val breakoutRoomInPayloadFormat = jsonFormat3(BreakoutRoomInPayload) - implicit val createBreakoutRoomsFormat = jsonFormat4(CreateBreakoutRooms) + implicit val createBreakoutRoomsFormat = jsonFormat5(CreateBreakoutRooms) implicit val breakoutRoomsListMessageFormat = jsonFormat1(BreakoutRoomsListMessage) implicit val requestBreakoutJoinURLInMessageFormat = jsonFormat4(RequestBreakoutJoinURLInMessage) implicit val transferUserToMeetingRequestFormat = jsonFormat3(TransferUserToMeetingRequest) diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala index 0c1a37f108d6..805e890ac514 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala @@ -42,7 +42,7 @@ case class LockSetting(meetingID: String, locked: Boolean, settings: Map[String, // Sent by user to request the breakout rooms list of a room case class BreakoutRoomsListMessage(meetingId: String) extends InMessage // Sent by user to request creation of breakout rooms -case class CreateBreakoutRooms(meetingId: String, durationInMinutes: Int, record: Boolean, rooms: Vector[BreakoutRoomInPayload]) extends InMessage +case class CreateBreakoutRooms(meetingId: String, durationInMinutes: Int, record: Boolean, redirectOnJoin: Boolean, rooms: Vector[BreakoutRoomInPayload]) extends InMessage case class BreakoutRoomInPayload(name: String, sequence: Int, users: Vector[String]) // Sent by user to request for a join URL in order to be able to join a breakout room case class RequestBreakoutJoinURLInMessage(meetingId: String, breakoutMeetingId: String, userId: String, redirect: Boolean) extends InMessage diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomApp.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomApp.scala index 8b7822bbac88..2d858d45b9a6 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomApp.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomApp.scala @@ -44,6 +44,7 @@ trait BreakoutRoomApp extends SystemConfiguration { val sourcePresentationId = if (!presModel.getCurrentPresentation().isEmpty) presModel.getCurrentPresentation().get.id else "blank" val sourcePresentationSlide = if (!presModel.getCurrentPage().isEmpty) presModel.getCurrentPage().get.num else 0 breakoutModel.pendingRoomsNumber = msg.rooms.length; + breakoutModel.redirectOnJoin = msg.redirectOnJoin; for (room <- msg.rooms) { i += 1 @@ -90,8 +91,7 @@ trait BreakoutRoomApp extends SystemConfiguration { breakoutModel.getAssignedUsers(room.id) foreach { users => users.foreach { u => log.debug("Sending Join URL for users"); - // @fixme: to refactor with CreateBreakoutRooms - sendJoinURL(u, room.externalMeetingId, true) + sendJoinURL(u, room.externalMeetingId, breakoutModel.redirectOnJoin) } } } diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomModel.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomModel.scala index e6d54f1a9fa1..dbc653480e56 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomModel.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomModel.scala @@ -10,6 +10,7 @@ class BreakoutRoomModel { private var rooms = new collection.immutable.HashMap[String, BreakoutRoom] var pendingRoomsNumber: Integer = 0 + var redirectOnJoin: Boolean = false def add(room: BreakoutRoom): BreakoutRoom = { rooms += room.id -> room diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/CreateBreakoutRoomsRequestPayload.java b/bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/CreateBreakoutRoomsRequestPayload.java index 33e020df1994..35038b6e0cf8 100755 --- a/bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/CreateBreakoutRoomsRequestPayload.java +++ b/bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/CreateBreakoutRoomsRequestPayload.java @@ -3,21 +3,24 @@ import java.util.ArrayList; public class CreateBreakoutRoomsRequestPayload { - // The main meeting internal id - public final String meetingId; - // The list of breakout rooms - public final ArrayList rooms; - // The duration of the breakout room - public final Integer durationInMinutes; - // Breakout rooms recording option - public final Boolean record; + // The main meeting internal id + public final String meetingId; + // The list of breakout rooms + public final ArrayList rooms; + // The duration of the breakout room + public final Integer durationInMinutes; + // Breakout rooms recording option + public final Boolean record; + // Creates join URL with redirect value true or false + public final Boolean redirectOnJoin; - public CreateBreakoutRoomsRequestPayload(String meetingId, - ArrayList breakoutRooms, - Integer duration, Boolean record) { - this.meetingId = meetingId; - this.rooms = breakoutRooms; - this.durationInMinutes = duration; - this.record = record; - } + public CreateBreakoutRoomsRequestPayload(String meetingId, + ArrayList breakoutRooms, + Integer duration, Boolean record, Boolean redirectOnJoin) { + this.meetingId = meetingId; + this.rooms = breakoutRooms; + this.durationInMinutes = duration; + this.record = record; + this.redirectOnJoin = redirectOnJoin; + } } diff --git a/bbb-common-message/src/test/java/org/bigbluebutton/messages/CreateBreakoutRoomsRequestTest.java b/bbb-common-message/src/test/java/org/bigbluebutton/messages/CreateBreakoutRoomsRequestTest.java index a0c780b36018..c7ee9eb25340 100755 --- a/bbb-common-message/src/test/java/org/bigbluebutton/messages/CreateBreakoutRoomsRequestTest.java +++ b/bbb-common-message/src/test/java/org/bigbluebutton/messages/CreateBreakoutRoomsRequestTest.java @@ -15,6 +15,7 @@ public void testCreateBreakoutRoomsRequest() { String meetingId = "abc123"; Integer durationInMinutes = 20; Boolean record = true; + Boolean redirectOnJoin = false; ArrayList room1Users = new ArrayList(); room1Users.add("Tidora"); room1Users.add("Nidora"); room1Users.add("Tinidora"); @@ -31,7 +32,7 @@ public void testCreateBreakoutRoomsRequest() { ArrayList rooms = new ArrayList(); rooms.add(room1); rooms.add(room2); rooms.add(room3); - CreateBreakoutRoomsRequestPayload payload = new CreateBreakoutRoomsRequestPayload(meetingId, rooms, durationInMinutes, record); + CreateBreakoutRoomsRequestPayload payload = new CreateBreakoutRoomsRequestPayload(meetingId, rooms, durationInMinutes, record, redirectOnJoin); CreateBreakoutRoomsRequest msg = new CreateBreakoutRoomsRequest(payload); Gson gson = new Gson(); String json = gson.toJson(msg); diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as index 66b826227540..67196559c603 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as @@ -199,7 +199,7 @@ package org.bigbluebutton.main.model.users } public function createBreakoutRooms(e:BreakoutRoomEvent):void{ - sender.createBreakoutRooms(_conferenceParameters.meetingID, e.rooms, e.durationInMinutes, e.record); + sender.createBreakoutRooms(_conferenceParameters.meetingID, e.rooms, e.durationInMinutes, e.record, true); } public function requestBreakoutJoinUrl(e:BreakoutRoomEvent):void{ diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageSender.as b/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageSender.as index 8f2622f9fa11..9881a0fe0f5a 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageSender.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageSender.as @@ -87,12 +87,13 @@ package org.bigbluebutton.modules.users.services ); } - public function createBreakoutRooms(meetingId:String, rooms:Array, durationInMinutes:int, record:Boolean):void { + public function createBreakoutRooms(meetingId:String, rooms:Array, durationInMinutes:int, record:Boolean, redirectOnJoin:Boolean):void { var message:Object = new Object(); message["meetingId"] = meetingId; message["rooms"] = rooms; message["durationInMinutes"] = durationInMinutes; message["record"] = record; + message["redirectOnJoin"] = redirectOnJoin; var jsonMsg:String = JSON.stringify(message); var _nc:ConnectionManager = BBB.initConnectionManager();