Explorar o código

now visibility level is controlled properly on the front-end - PRO Lobbies

Flavionel %!s(int64=5) %!d(string=hai) anos
pai
achega
b389f0a2e8
Modificáronse 1 ficheiros con 20 adicións e 6 borrados
  1. 20 6
      resources/js/components/partials/LobbyList.vue

+ 20 - 6
resources/js/components/partials/LobbyList.vue

@@ -14,16 +14,16 @@
 
                 <v-divider class="mx-4"></v-divider>
 
-                <v-list dense v-if="meetingListFiltered(lobby.meetings).length">
+                <v-list dense v-if="meetingListFiltered(lobby).length">
                     <v-container class="overflow-y-auto px-0 pt-0">
                         <v-subheader class="d-flex flex-row justify-content-between">
-                            <span>Meetings ({{meetingListFiltered(lobby.meetings).length}})</span>
+                            <span>Meetings ({{meetingListFiltered(lobby).length}})</span>
                         </v-subheader>
                     </v-container>
                     <v-container style="height: 210px" class="overflow-y-auto">
                         <v-row>
                             <v-list-item-group class="w-100" v-model="lobby.selected_meeting" color="primary">
-                                <v-list-item v-for="(item, i) in meetingListFiltered(lobby.meetings)" :key="i" :value="item">
+                                <v-list-item v-for="(item, i) in meetingListFiltered(lobby)" :key="i" :value="item">
                                     <v-list-item-icon>
                                         <v-icon v-text="'mdi-clock'"></v-icon>
                                     </v-list-item-icon>
@@ -51,7 +51,7 @@
 
                 <v-list v-else>
                     <v-subheader class="d-flex flex-row justify-content-between">
-                        <span>Meetings ({{meetingListFiltered(lobby.meetings).length}})</span>
+                        <span>Meetings ({{meetingListFiltered(lobby).length}})</span>
                     </v-subheader>
                     <v-container style="height: 210px" class="overflow-y-auto">
                         <v-row>
@@ -96,8 +96,22 @@ export default {
         ...mapState(["lobbies", "user", "meeting"])
     },
     methods: {
-        meetingListFiltered(meetings) {
-            return meetings.filter(x => x.active_members.length > 0 && (x.pros_online.length == 0 || x.pros_online.findIndex(y => y.uid == this.user.uid) !== -1));
+        meetingListFiltered(lobby) {
+            let visibilityLevel = lobby.lobbyProAccessLevel
+            let meetings = lobby.meetings
+
+            if(!visibilityLevel){
+                return []
+            }
+
+            switch(visibilityLevel){
+                case 'FREE_FOR_ALL':
+                    return meetings.filter(x => x.active_members.length > 0)
+                case 'VISIBLE_IF_UNATTENDED':
+                    return meetings.filter(x => x.active_members.length > 0 && (x.pros_online.length == 0 || x.pros_online.findIndex(y => y.uid == this.user.uid) !== -1))
+                case 'SYSTEM_CONTROLLED_BY_LOBBY_CALL':
+                    return []
+            }
         },
         joinMeeting(lobby) {
             this.loading = true;