forked from External/greenlight
Show a browser notification when a user is waiting to join a room
The owner of a room receives a browser notification if he has the page open and another person tries to join his room.
This commit is contained in:
72
app/assets/javascripts/shared.js.erb
Normal file
72
app/assets/javascripts/shared.js.erb
Normal file
@ -0,0 +1,72 @@
|
||||
// BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
|
||||
//
|
||||
// Copyright (c) 2016 BigBlueButton Inc. and by respective authors (see below).
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU Lesser General Public License as published by the Free Software
|
||||
// Foundation; either version 3.0 of the License, or (at your option) any later
|
||||
// version.
|
||||
//
|
||||
// BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
// PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public License along
|
||||
// with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
|
||||
}
|
||||
});
|
||||
|
||||
var loopJoin = function() {
|
||||
var jqxhr = Meeting.getInstance().getJoinMeetingResponse();
|
||||
jqxhr.done(function(data) {
|
||||
if (data.messageKey === 'wait_for_moderator') {
|
||||
setTimeout(loopJoin, 5000);
|
||||
} else {
|
||||
$(location).attr("href", data.response.join_url);
|
||||
}
|
||||
});
|
||||
jqxhr.fail(function(xhr, status, error) {
|
||||
console.info("meeting join failed");
|
||||
});
|
||||
};
|
||||
|
||||
var alertTimeout = null;
|
||||
var showAlert = function(html, timeout_delay) {
|
||||
if (!html) {
|
||||
return;
|
||||
}
|
||||
|
||||
$('.alert-template .alert-message').html(html);
|
||||
$('#alerts').html($('.alert-template').html());
|
||||
|
||||
if (timeout_delay) {
|
||||
clearTimeout(alertTimeout);
|
||||
alertTimeout = setTimeout(function() {
|
||||
$('#alerts > .alert').alert('close');
|
||||
}, timeout_delay);
|
||||
}
|
||||
};
|
||||
|
||||
var displayRoomURL = function() {
|
||||
$('.meeting-url').val(Meeting.getInstance().getURL());
|
||||
};
|
||||
|
||||
var showNotification = function(title, options) {
|
||||
if (Notification.permission === "granted") {
|
||||
var icon = '<%= asset_path("bbb-logo.png") %>';
|
||||
options = $.extend(options, {
|
||||
icon: icon
|
||||
});
|
||||
var notification = new Notification(title, options);
|
||||
notification.onclick = function() {
|
||||
window.focus();
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
// TODO: only need permissions if the user is signed in
|
||||
Notification.requestPermission();
|
Reference in New Issue
Block a user