diff --git a/app/assets/javascripts/active_meetings.js b/app/assets/javascripts/active_meetings.js
index ac656fe7..0427d015 100644
--- a/app/assets/javascripts/active_meetings.js
+++ b/app/assets/javascripts/active_meetings.js
@@ -1,3 +1,4 @@
+// Handles action cable events from bbb-webhooks and initial population of active meetings.
MEETINGS = {}
@@ -5,18 +6,19 @@ MEETINGS = {}
if($('body').data('current-user')){
App.messages = App.cable.subscriptions.create('RefreshMeetingsChannel', {
received: function(data) {
- console.log(data)
+ console.log('Recieved ' + data['method'] + ' action for ' + data['meeting'] + '.')
if(isPreviouslyJoined(data['meeting'])){
if(data['method'] == 'create'){
-
// Create an empty meeting.
MEETINGS[data['meeting']] = {'name': data['meeting'],
'participants': 0,
'moderators': 0}
renderActiveMeeting(MEETINGS[data['meeting']])
+ updatePreviousMeetings();
} else if(data['method'] == 'destroy'){
removeActiveMeeting(MEETINGS[data['meeting']])
+ PreviousMeetings.append([data['meeting']])
delete MEETINGS[data['meeting']]
} else if(data['method'] == 'join'){
handleUser(data, 1)
@@ -29,6 +31,15 @@ if($('body').data('current-user')){
});
}
+updatePreviousMeetings = function(){
+ $("ul.previously-joined li").each(function(idx, li) {
+ previous_meeting = $(li);
+ if(Object.keys(MEETINGS).indexOf(previous_meeting.text()) > -1){
+ previous_meeting.remove()
+ }
+ });
+}
+
handleUser = function(data, n){
if(data['role'] == 'MODERATOR'){
MEETINGS[data['meeting']]['moderators'] += n
@@ -39,7 +50,7 @@ handleUser = function(data, n){
}
updateMeetingText = function(meeting){
- $('#' + meeting['name']).html('' + meeting['name'] + ' (' +
+ $('#' + meeting['name'].replace(' ', '_')).html('' + meeting['name'] + ' (' +
meeting['participants'] + ((meeting['participants'] == 1) ? ' user, ' : ' users, ') +
meeting['moderators'] + ((meeting['moderators'] == 1) ? ' mod)' : ' mods)'))
}
@@ -57,9 +68,13 @@ initialPopulate = function(){
'moderators': moderators}
if(isPreviouslyJoined(name)){
renderActiveMeeting(MEETINGS[name])
- // remove it.
}
}
+ }).done(function(){
+ // Remove from previous meetings if they are active.
+ updatePreviousMeetings();
+ $('.hidden-list').show();
+ $('.fa-spinner').hide();
});
}
@@ -69,7 +84,7 @@ isPreviouslyJoined = function(meeting){
}
renderActiveMeeting = function(m){
- var meeting_item = $('' + m['name'] + '' +
+ var meeting_item = $('' + m['name'] + '' +
' (' + m['participants'] + ' users, ' + m['moderators'] + ' mods)' + '')
$('.actives').append(meeting_item);
@@ -80,8 +95,7 @@ renderActiveMeeting = function(m){
}
removeActiveMeeting = function(meeting){
- $('#' + meeting['name']).remove()
- //$(".actives:contains('" + meeting['name'] + "')").remove()
+ $('#' + meeting['name'].replace(' ', '_')).remove()
}
// Directly join a meeting from active meetings.
@@ -114,4 +128,4 @@ joinMeeting = function(meeting_name){
}
}
-if($('body').data('current-user')){ console.log('Populating active meetings.'); initialPopulate() }
+if($('body').data('current-user')){ console.log('Populating active meetings.'); setTimeout(initialPopulate, 1250); }
diff --git a/app/assets/stylesheets/main/landing.scss b/app/assets/stylesheets/main/landing.scss
index d8a63cf8..53dc2a34 100644
--- a/app/assets/stylesheets/main/landing.scss
+++ b/app/assets/stylesheets/main/landing.scss
@@ -89,3 +89,8 @@
color: green;
}
}
+
+.fa-spinner {
+ width: 100%;
+ text-align: center;
+}
diff --git a/app/views/landing/_previously_joined.html.erb b/app/views/landing/_previously_joined.html.erb
index ad404847..bede4087 100644
--- a/app/views/landing/_previously_joined.html.erb
+++ b/app/views/landing/_previously_joined.html.erb
@@ -16,14 +16,18 @@
<% if current_user %>
-
-
+
+
<%= t('previous_meetings') %>
-
-
+
+
+
+
+
+
<%= t('active_meetings') %>