You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2019/02/28 16:31:52 UTC
[openmeetings] 01/01: [OPENMEETINGS-2017] initial attempt to fix
Safari permission multimedia issue
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch 4.0.x
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
commit 882355bdbbc5856bdf78474b4f04a0911028da5d
Merge: b734c70 b2ca241
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Feb 28 23:31:36 2019 +0700
[OPENMEETINGS-2017] initial attempt to fix Safari permission multimedia issue
.../apache/openmeetings/web/room/RoomPanel.html | 3 +++
.../apache/openmeetings/web/room/raw-video-util.js | 24 ++++++++++++++++++
.../apache/openmeetings/web/room/wb/raw-player.js | 29 ++++++++++++++++++----
3 files changed, 51 insertions(+), 5 deletions(-)
diff --cc openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
index cbee0d3,cbee0d3..7171b83
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
@@@ -87,6 -87,6 +87,9 @@@
<div id="quick-confirmation" wicket:message="title:832, data-btn-ok:54, data-btn-cancel:lbl.cancel">
<wicket:message key="1419"/>
</div>
++ <div id="ask-permission" title="Ask Permission" data-btn-ok="OK">
++ Extra permission is required to play audio/video. Press OK to play video.
++ </div>
</div>
</wicket:panel>
</html>
diff --cc openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
index 679d7c4,679d7c4..2fc635c
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
@@@ -102,6 -102,6 +102,29 @@@ var VideoUtil = (function()
list.push(_getRect(v));
}
}
++ function _askPermission(callback) {
++ const perm = $('#ask-permission');
++ if (undefined === perm.dialog('instance')) {
++ perm.data('callbacks', [callback]).dialog({
++ appendTo: '.room.holder .room.box'
++ , autoOpen: true
++ , buttons: [
++ {
++ text: perm.data('btn-ok')
++ , click: function() {
++ while (perm.data('callbacks').length > 0) {
++ perm.data('callbacks').pop()();
++ }
++ $(this).dialog('close');
++ }
++ }
++ ]
++ });
++ } else if (!perm.dialog('isOpen')) {
++ perm.dialog('open')
++ }
++ perm.data('callbacks').push(callback);
++ }
self.getVid = _getVid;
self.isSharing = _isSharing;
@@@ -112,5 -112,5 +135,6 @@@
self.getPos = _getPos;
self.container = _container;
self.arrange = _arrange;
++ self.askPermission = _askPermission;
return self;
})();
diff --cc openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-player.js
index 2ded739,5407736..809c164
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-player.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-player.js
@@@ -200,8 -206,26 +206,21 @@@ var Player = (function()
if (group.status.paused) {
video.getElement().pause();
} else {
- video.getElement().play();
- fabric.util.requestAnimFrame(render);
+ const prom = video.getElement().play();
+ if (prom !== undefined) {
+ prom.then(function() {
+ fabric.util.requestAnimFrame(render);
+ }).catch(function(err) {
+ if ('NotAllowedError' === err.name) {
- $('<div title="Ask permission">Ask permission</div>').dialog({
- buttons: {
- "OK": function() {
- video.getElement().play();
- fabric.util.requestAnimFrame(render);
- $(this).dialog('close');
- }
- }
++ VideoUtil.askPermission(function() {
++ video.getElement().play();
++ fabric.util.requestAnimFrame(render);
+ });
+ }
+ });
+ } else {
+ fabric.util.requestAnimFrame(render);
+ }
}
}
group.setPlayable(wb.getRole());