From c2fc96299fd39453a69109c8380b1da7463541a0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Mau=C3=9F?= <lukas.mauss@mni.thm.de>
Date: Fri, 2 Aug 2019 14:40:05 +0200
Subject: [PATCH] Refactor setting role on room join

---
 .../shared/room-join/room-join.component.ts   | 22 +++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/app/components/shared/room-join/room-join.component.ts b/src/app/components/shared/room-join/room-join.component.ts
index 302f4ed94..44fbb5e11 100644
--- a/src/app/components/shared/room-join/room-join.component.ts
+++ b/src/app/components/shared/room-join/room-join.component.ts
@@ -9,6 +9,8 @@ import { TranslateService } from '@ngx-translate/core';
 import { AuthenticationService } from '../../../services/http/authentication.service';
 import { UserRole } from '../../../models/user-roles.enum';
 import { User } from '../../../models/user';
+import { Moderator } from '../../../models/moderator';
+import { ModeratorService } from '../../../services/http/moderator.service';
 
 @Component({
   selector: 'app-room-join',
@@ -30,7 +32,8 @@ export class RoomJoinComponent implements OnInit {
     private router: Router,
     public notificationService: NotificationService,
     private translateService: TranslateService,
-    public authenticationService: AuthenticationService
+    public authenticationService: AuthenticationService,
+    private moderatorService: ModeratorService
   ) {
   }
 
@@ -95,9 +98,20 @@ export class RoomJoinComponent implements OnInit {
       this.router.navigate([`/creator/room/${this.room.shortId}/comments`]);
     } else {
       this.roomService.addToHistory(this.room.id);
-      this.authenticationService.setAccess(this.room.shortId, UserRole.PARTICIPANT);
-
-      this.router.navigate([`/participant/room/${this.room.shortId}/comments`]);
+      this.moderatorService.get(this.room.id).subscribe((moderators: Moderator[]) => {
+        let isModerator = false;
+        for (const m of moderators) {
+          if (m.userId === this.user.id) {
+            this.authenticationService.setAccess(this.room.shortId, UserRole.EXECUTIVE_MODERATOR);
+            this.router.navigate([`/moderator/room/${this.room.shortId}/comments`]);
+            isModerator = true;
+          }
+        }
+        if (!isModerator) {
+          this.authenticationService.setAccess(this.room.shortId, UserRole.PARTICIPANT);
+          this.router.navigate([`/participant/room/${this.room.shortId}/comments`]);
+        }
+      });
     }
   }
 }
-- 
GitLab