mirror of
https://github.com/SuperBFG7/ympd
synced 2024-11-26 23:07:17 +00:00
improve error handling for local player
This commit is contained in:
parent
d72c10cd8c
commit
2526a015f0
@ -178,6 +178,65 @@ $(document).ready(function(){
|
|||||||
else
|
else
|
||||||
if ($.cookie("notification") === "true")
|
if ($.cookie("notification") === "true")
|
||||||
$('#btnnotify').addClass("active")
|
$('#btnnotify').addClass("active")
|
||||||
|
|
||||||
|
document.getElementById('player').addEventListener('stalled', function() {
|
||||||
|
if ( !document.getElementById('player').paused ) {
|
||||||
|
this.pause();
|
||||||
|
clickLocalPlay();
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"music stream stalled - trying to recover..."},
|
||||||
|
type: "danger",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('player').addEventListener('pause', function() {
|
||||||
|
this.src='';
|
||||||
|
this.removeAttribute("src");
|
||||||
|
$("#localplay-icon").removeClass("glyphicon-pause").addClass("glyphicon-play");
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('player').addEventListener('error', function failed(e) {
|
||||||
|
this.pause();
|
||||||
|
switch (e.target.error.code) {
|
||||||
|
case e.target.error.MEDIA_ERR_ABORTED:
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"Audio playback aborted by user."},
|
||||||
|
type: "info",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
break;
|
||||||
|
case e.target.error.MEDIA_ERR_NETWORK:
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"Network error while playing audio."},
|
||||||
|
type: "danger",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
break;
|
||||||
|
case e.target.error.MEDIA_ERR_DECODE:
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"Audio playback aborted. Did you unplug your headphones?"},
|
||||||
|
type: "danger",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
break;
|
||||||
|
case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"Error while loading audio (server, network or format error)."},
|
||||||
|
type: "danger",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"Unknown error while playing audio."},
|
||||||
|
type: "danger",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
@ -596,12 +655,14 @@ var updatePlayIcon = function(state)
|
|||||||
if(state == 1) { // stop
|
if(state == 1) { // stop
|
||||||
$("#play-icon").addClass("glyphicon-play");
|
$("#play-icon").addClass("glyphicon-play");
|
||||||
$('#track-icon').addClass("glyphicon-stop");
|
$('#track-icon').addClass("glyphicon-stop");
|
||||||
} else if(state == 2) { // pause
|
document.getElementById('player').pause();
|
||||||
|
} else if(state == 2) { // play
|
||||||
$("#play-icon").addClass("glyphicon-pause");
|
$("#play-icon").addClass("glyphicon-pause");
|
||||||
$('#track-icon').addClass("glyphicon-play");
|
$('#track-icon').addClass("glyphicon-play");
|
||||||
} else { // play
|
} else { // pause
|
||||||
$("#play-icon").addClass("glyphicon-play");
|
$("#play-icon").addClass("glyphicon-play");
|
||||||
$('#track-icon').addClass("glyphicon-pause");
|
$('#track-icon').addClass("glyphicon-pause");
|
||||||
|
document.getElementById('player').pause();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -633,6 +694,11 @@ function clickLocalPlay() {
|
|||||||
var player = document.getElementById('player');
|
var player = document.getElementById('player');
|
||||||
$("#localplay-icon").removeClass("glyphicon-play").removeClass("glyphicon-pause");
|
$("#localplay-icon").removeClass("glyphicon-play").removeClass("glyphicon-pause");
|
||||||
|
|
||||||
|
|
||||||
|
if ( !$('#track-icon').hasClass('glyphicon-play') ) {
|
||||||
|
clickPlay();
|
||||||
|
}
|
||||||
|
|
||||||
if ( player.paused ) {
|
if ( player.paused ) {
|
||||||
var mpdstream = $.cookie("mpdstream");
|
var mpdstream = $.cookie("mpdstream");
|
||||||
|
|
||||||
@ -649,9 +715,6 @@ function clickLocalPlay() {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
player.pause();
|
player.pause();
|
||||||
player.src='';
|
|
||||||
player.removeAttribute("src");
|
|
||||||
$("#localplay-icon").addClass("glyphicon-play");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,10 @@
|
|||||||
<!-- Custom styles for this template -->
|
<!-- Custom styles for this template -->
|
||||||
<link href="css/mpd.min.css" rel="stylesheet">
|
<link href="css/mpd.min.css" rel="stylesheet">
|
||||||
<link href="assets/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon">
|
<link href="assets/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon">
|
||||||
|
<script src="js/jquery-1.10.2.min.js"></script>
|
||||||
|
<script src="js/jquery.cookie.js"></script>
|
||||||
|
<script src="js/bootstrap.min.js"></script>
|
||||||
|
<script src="js/bootstrap-notify.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function clickLocalPlay() {
|
function clickLocalPlay() {
|
||||||
var player = document.getElementById('player');
|
var player = document.getElementById('player');
|
||||||
@ -38,6 +42,66 @@ function clickLocalPlay() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
document.getElementById('player').addEventListener('stalled', function() {
|
||||||
|
if ( !document.getElementById('player').paused ) {
|
||||||
|
this.pause();
|
||||||
|
clickLocalPlay();
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"music stream stalled - trying to recover..."},
|
||||||
|
type: "danger",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('player').addEventListener('pause', function() {
|
||||||
|
this.src='';
|
||||||
|
this.removeAttribute("src");
|
||||||
|
$("#localplay-icon").removeClass("glyphicon-pause").addClass("glyphicon-play");
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('player').addEventListener('error', function failed(e) {
|
||||||
|
this.pause();
|
||||||
|
switch (e.target.error.code) {
|
||||||
|
case e.target.error.MEDIA_ERR_ABORTED:
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"Audio playback aborted by user."},
|
||||||
|
type: "info",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
break;
|
||||||
|
case e.target.error.MEDIA_ERR_NETWORK:
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"Network error while playing audio."},
|
||||||
|
type: "danger",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
break;
|
||||||
|
case e.target.error.MEDIA_ERR_DECODE:
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"Audio playback aborted. Did you unplug your headphones?"},
|
||||||
|
type: "danger",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
break;
|
||||||
|
case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"Error while loading audio (server, network or format error)."},
|
||||||
|
type: "danger",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$('.top-right').notify({
|
||||||
|
message:{text:"Unknown error while playing audio."},
|
||||||
|
type: "danger",
|
||||||
|
fadeOut: { enabled: true, delay: 1000 },
|
||||||
|
}).show();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@ -54,15 +118,9 @@ function clickLocalPlay() {
|
|||||||
<button type="button" class="btn btn-default btn-lg center-block" onclick="clickLocalPlay()">
|
<button type="button" class="btn btn-default btn-lg center-block" onclick="clickLocalPlay()">
|
||||||
<span id="localplay-icon" class="glyphicon glyphicon-play"></span>
|
<span id="localplay-icon" class="glyphicon glyphicon-play"></span>
|
||||||
</button>
|
</button>
|
||||||
|
<div class="notifications top-right"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Bootstrap core JavaScript
|
|
||||||
================================================== -->
|
|
||||||
<!-- Placed at the end of the document so the pages load faster -->
|
|
||||||
<script src="js/jquery-1.10.2.min.js"></script>
|
|
||||||
<script src="js/jquery.cookie.js"></script>
|
|
||||||
<script src="js/bootstrap.min.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user