Skip to content

Commit 48ac85b

Browse files
committed
Invite link for presenters
1 parent da0b52d commit 48ac85b

File tree

9 files changed

+58
-11
lines changed

9 files changed

+58
-11
lines changed

backend/src/main/java/urjc/ovteaching/rooms/Room.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public interface NameOnly {}
3131
private Long id;
3232
private String codeParticipant;
3333
private String codeModerator;
34+
private String codePresenter;
3435
@JsonView(NameOnly.class)
3536
private String name;
3637
@Lob
@@ -52,6 +53,7 @@ public Room(String name) {
5253
this.presenters = new HashSet<>();
5354
this.codeParticipant = UUID.randomUUID().toString();
5455
this.codeModerator = UUID.randomUUID().toString();
56+
this.codePresenter = UUID.randomUUID().toString();
5557
this.handRaisedUsers = new LinkedList<>();
5658
this.name = name;
5759
}
@@ -64,13 +66,17 @@ public Long getId() {
6466
}
6567

6668
public String getParticipantInviteCode() {
67-
return codeParticipant.toString();
69+
return codeParticipant;
6870
}
6971

7072
public String getModeratorInviteCode() {
71-
return codeModerator.toString();
73+
return codeModerator;
7274
}
7375

76+
public String getPresenterInviteCode() {
77+
return codePresenter;
78+
}
79+
7480
public boolean isModerator(User user) {
7581
return this.mods.contains(user);
7682
}

backend/src/main/java/urjc/ovteaching/rooms/RoomRepository.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ public interface RoomRepository extends JpaRepository<Room, Long> {
66

77
Room findByName(String name);
88

9-
Room findByCodeParticipant(String uuidParticipant);
9+
Room findByCodeParticipant(String inviteCodeParticipant);
1010

11-
Room findByCodeModerator(String uuidModerator);
11+
Room findByCodeModerator(String inviteCodeModerator);
12+
13+
Room findByCodePresenter(String inviteCodePresenter);
1214

1315
}

backend/src/main/java/urjc/ovteaching/rooms/RoomService.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,14 @@ public void addRoomWithMod(Room room, User mod) {
5454
public void makeModerator(User user, Room room) {
5555
user.addModdedRoom(room);
5656
user.removeParticipatedRoom(room);
57+
user.removePresentedRoom(room);
58+
roomRep.save(room);
59+
userServ.save(user);
60+
}
61+
62+
public void makePresenter(User user, Room room) {
63+
user.addPresentedRoom(room);
64+
user.removeParticipatedRoom(room);
5765
roomRep.save(room);
5866
userServ.save(user);
5967
}
@@ -69,7 +77,12 @@ public Room findByInviteCode(String code) {
6977
if (room != null) {
7078
return room;
7179
} else {
72-
return roomRep.findByCodeParticipant(code);
80+
room = roomRep.findByCodeParticipant(code);
81+
if (room != null) {
82+
return room;
83+
} else {
84+
return roomRep.findByCodePresenter(code);
85+
}
7386
}
7487
}
7588

backend/src/main/java/urjc/ovteaching/rooms/controllers/RoomController.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ public ResponseEntity<String> getInviteCode(HttpServletRequest request, @PathVar
9292
return new ResponseEntity<>(room.getParticipantInviteCode(), HttpStatus.OK);
9393
} else if (role.equals("moderator")) {
9494
return new ResponseEntity<>(room.getModeratorInviteCode(), HttpStatus.OK);
95+
} else if (role.equals("presenter")) {
96+
return new ResponseEntity<>(room.getPresenterInviteCode(), HttpStatus.OK);
9597
}
9698
}
9799
}
@@ -134,22 +136,28 @@ public ResponseEntity<User> newUserInRoom(HttpServletRequest request, @PathVaria
134136
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
135137
}
136138
if (room.isModerator(user)) {
137-
// Cannot enter a room if already a mod of it
138-
return new ResponseEntity<>(HttpStatus.CONFLICT);
139+
//Automatically enter if already a mod
140+
return new ResponseEntity<>(HttpStatus.OK);
139141
}
140-
if (code.equals(room.getParticipantInviteCode()) && (room.isParticipant(user)) || room.isPresenter(user)) {
141-
// Cannot enter a room as participant if already in it
142-
return new ResponseEntity<>(HttpStatus.CONFLICT);
142+
if (code.equals(room.getPresenterInviteCode()) && (room.isModerator(user)) || room.isPresenter(user)) {
143+
//Automatically enter as presenter if already a moderator or presenter
144+
return new ResponseEntity<>(HttpStatus.OK);
145+
}
146+
if (code.equals(room.getParticipantInviteCode()) && room.isInRoom(user)) {
147+
//Automatically enter as participant if already in it
148+
return new ResponseEntity<>(HttpStatus.OK);
143149
}
144150

145151
if (code.equals(room.getParticipantInviteCode())) {
146152
user.addParticipatedRoom(room);
147-
} else {
153+
} else if(code.equals(room.getModeratorInviteCode())){
148154
roomServ.makeModerator(user, room);
149155
if (!user.getRoles().contains("ROLE_ADMIN")) {
150156
// Makes user admin if they weren't
151157
user.addRole("ROLE_ADMIN");
152158
}
159+
} else {
160+
roomServ.makePresenter(user, room);
153161
}
154162
roomServ.save(room);
155163
userServ.save(user);

backend/src/main/java/urjc/ovteaching/users/User.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ public void addParticipatedRoom(Room room) {
106106
public void removeParticipatedRoom(Room room) {
107107
this.participatedRooms.remove(room);
108108
}
109+
110+
public void removePresentedRoom(Room room) {
111+
this.presentedRooms.remove(room);
112+
}
109113

110114
public void leaveRoom(Room room) {
111115
this.participatedRooms.remove(room);

frontend/src/app/dashboard/dashboard.component.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ login-component {
6666
margin:5% auto;
6767
}
6868

69+
.invitePresenter {
70+
color: rgb(6, 211, 98);
71+
}
72+
6973
.addRoomButton {
7074
background-color: rgb(6, 211, 98);
7175
}

frontend/src/app/dashboard/dashboard.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ <h3 mat-subheader>MODDED ROOMS</h3>
3535
<button mat-icon-button (click)="getInviteURL(mod.name,'moderator')">
3636
<mat-icon color="accent" matTooltip="Invite URL for moderators">link</mat-icon>
3737
</button>
38+
<button mat-icon-button (click)="getInviteURL(mod.name,'presenter')">
39+
<mat-icon class="invitePresenter" matTooltip="Invite URL for presenters">link</mat-icon>
40+
</button>
3841
<button mat-icon-button (click)="getInviteURL(mod.name,'participant')">
3942
<mat-icon matTooltip="Invite URL for participants">link</mat-icon>
4043
</button>

frontend/src/app/shared/components/toolbar/toolbar.component.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@
8383
border: 1px solid #ffffff !important;
8484
}
8585

86+
.invitePresenter {
87+
color: rgb(6, 211, 98);
88+
}
89+
8690
#raise_hand {
8791
max-width: 50%;
8892
max-height: 50%;

frontend/src/app/shared/components/toolbar/toolbar.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
<button mat-icon-button (click)="getInviteURL('moderator')" *ngIf="localUser && this.userService.isModOfRoom(this.mySessionId)">
3535
<mat-icon color="accent" matTooltip="Invite URL for moderators">link</mat-icon>
3636
</button>
37+
<button mat-icon-button (click)="getInviteURL('presenter')" *ngIf="localUser && this.userService.isModOfRoom(this.mySessionId)">
38+
<mat-icon class="invitePresenter" matTooltip="Invite URL for presenters">link</mat-icon>
39+
</button>
3740
<button mat-icon-button (click)="getInviteURL('participant')" *ngIf="localUser && this.userService.isModOfRoom(this.mySessionId)">
3841
<mat-icon matTooltip="Invite URL for participants">link</mat-icon>
3942
</button>

0 commit comments

Comments
 (0)