Better loading of iframe/soundcloud sdk

- Mitigates some errors on load
This commit is contained in:
Kasper Rynning-Tønnesen
2018-09-25 22:57:04 +02:00
parent c86509b899
commit 751b5008fb
2 changed files with 64 additions and 76 deletions

View File

@@ -15,9 +15,10 @@ try {
var SC_widget; var SC_widget;
var scUsingWidget = false; var scUsingWidget = false;
var SC_player; var SC_player;
var sc_initialized = false;
var soundcloud_enabled = true; var soundcloud_enabled = true;
var local_new_channel = false; var local_new_channel = false;
var sc_need_initialization = false; var sc_need_initialization = true;
var small_player = false; var small_player = false;
var hiddenPlaylist = false; var hiddenPlaylist = false;
var videoSource; var videoSource;
@@ -250,49 +251,8 @@ window.addEventListener("DOMContentLoaded", function() {
firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
} }
if(document.querySelectorAll("script[src='https://connect.soundcloud.com/sdk/sdk-3.3.0.js']").length == 1) { Player.loadSoundCloudPlayer();
Player.loadSoundCloudIframe();
} else {
tagSC = document.createElement('script');
if (tagSC.readyState){ //IE
tagSC.onreadystatechange = function(){
if (tagSC.readyState == "loaded" ||
tagSC.readyState == "complete"){
tagSC.onreadystatechange = null;
if(sc_need_initialization) {
if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined) {
Player.soundcloudReady();
}
} else {
SC_player = SC;
SC_player.initialize({
client_id: api_key.soundcloud
}, function() {
});
}
Player.loadSoundCloudIframe();
}
};
} else { //Others
tagSC.onload = function(){
if(sc_need_initialization) {
if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined) {
Player.soundcloudReady();
}
} else {
SC_player = SC;
SC_player.initialize({
client_id: api_key.soundcloud
}, function() {
});
}
Player.loadSoundCloudIframe();
};
}
tagSC.src = "https://connect.soundcloud.com/sdk/sdk-3.3.0.js";
firstScriptTagSC = document.getElementsByTagName('script')[0];
firstScriptTagSC.parentNode.insertBefore(tagSC, firstScriptTagSC);
}
} else if(window.location.pathname == "/" && client) { } else if(window.location.pathname == "/" && client) {
//Player.loadSoundCloudPlayer(); //Player.loadSoundCloudPlayer();
} }

View File

@@ -325,8 +325,9 @@ var Player = {
_autoAdd = "true"; _autoAdd = "true";
Helper.removeClass("#player_loader_container", "hide"); Helper.removeClass("#player_loader_container", "hide");
} }
window.SC_player = SC_player;
SC_player.stream("/tracks/" + id).then(function(player){ SC_player.stream("/tracks/" + id).then(function(player){
scUsingWidget = false;
Player.soundcloud_player = player; Player.soundcloud_player = player;
Player.soundcloud_player.bind("finish", Player.soundcloudFinish); Player.soundcloud_player.bind("finish", Player.soundcloudFinish);
Player.soundcloud_player.bind("pause", Player.soundcloudPause); Player.soundcloud_player.bind("pause", Player.soundcloudPause);
@@ -341,10 +342,9 @@ var Player = {
document.querySelector("#soundcloud_listen_link").href = sound.permalink_url; document.querySelector("#soundcloud_listen_link").href = sound.permalink_url;
document.querySelector(".soundcloud_info_container .green").href = sound.user.permalink_url; document.querySelector(".soundcloud_info_container .green").href = sound.user.permalink_url;
//document.querySelector(".soundcloud_info_container .red").href = sound.user.permalink_url; //document.querySelector(".soundcloud_info_container .red").href = sound.user.permalink_url;
}); }).catch(function(){});
if(_autoplay) { if(_autoplay) {
player.play().then(function(){ player.play().then(function(){
scUsingWidget = false;
Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100); Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100);
Player.soundcloud_player.seek((seekTo) * 1000); Player.soundcloud_player.seek((seekTo) * 1000);
}).catch(function(e){ }).catch(function(e){
@@ -416,6 +416,16 @@ var Player = {
Player.soundcloud_player.bind("finish", Player.soundcloudFinish); Player.soundcloud_player.bind("finish", Player.soundcloudFinish);
Player.soundcloud_player.bind("pause", Player.soundcloudPause); Player.soundcloud_player.bind("pause", Player.soundcloudPause);
Player.soundcloud_player.bind("play", Player.soundcloudPlay); Player.soundcloud_player.bind("play", Player.soundcloudPlay);
SC_player.get('/tracks', {
ids: id
}).then(function(tracks) {
var sound = tracks[0];
Helper.removeClass(".soundcloud_info_container", "hide");
document.querySelector("#soundcloud_listen_link").href = sound.permalink_url;
document.querySelector(".soundcloud_info_container .green").href = sound.user.permalink_url;
//document.querySelector(".soundcloud_info_container .red").href = sound.user.permalink_url;
}).catch(function(){});
} catch(e) { } catch(e) {
setTimeout(function() { setTimeout(function() {
Player.addSCWidgetElements(); Player.addSCWidgetElements();
@@ -824,15 +834,6 @@ var Player = {
return; return;
} }
sc_need_initialization = false; sc_need_initialization = false;
try {
SC_player.initialize({
client_id: api_key.soundcloud
}, function() {
});
} catch(e) {
sc_need_initialization = true;
return;
}
beginning = true; beginning = true;
player_ready = true; player_ready = true;
if(!durationBegun) { if(!durationBegun) {
@@ -1118,13 +1119,19 @@ var Player = {
} }
Player.loadSoundCloudPlayer(); Player.loadSoundCloudPlayer();
Player.loadSoundCloudIframe();
}, },
loadSoundCloudPlayer: function() { loadSoundCloudPlayer: function() {
if(document.querySelectorAll("script[src='https://connect.soundcloud.com/sdk/sdk-3.3.0.js']").length == 1) { if(document.querySelectorAll("script[src='https://connect.soundcloud.com/sdk/sdk-3.3.0.js']").length == 1) {
try { try {
if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined) { if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined && !sc_initialized) {
SC_player.initialize({
client_id: api_key.soundcloud
});
sc_initialized = true;
Player.soundcloudReady(); Player.soundcloudReady();
} }
} catch(error) { } catch(error) {
sc_need_initialization = true; sc_need_initialization = true;
@@ -1132,30 +1139,39 @@ var Player = {
//console.error("Seems SoundCloud script isn't correctly loaded. Please reload the page."); //console.error("Seems SoundCloud script isn't correctly loaded. Please reload the page.");
} }
} else { } else {
tagSC = document.createElement('script'); var tagSC = document.createElement('script');
if (tagSC.readyState){ //IE if (tagSC.readyState){ //IE
tagSC.onreadystatechange = function(){ tagSC.onreadystatechange = function(){
if (tagSC.readyState == "loaded" || if (tagSC.readyState == "loaded" ||
tagSC.readyState == "complete"){ tagSC.readyState == "complete"){
tagSC.onreadystatechange = null; tagSC.onreadystatechange = null;
SC_player = SC; SC_player = SC;
if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined) { if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined && !sc_initialized) {
SC_player.initialize({
client_id: api_key.soundcloud
});
sc_initialized = true;
Player.soundcloudReady(); Player.soundcloudReady();
} }
Player.loadSoundCloudIframe(); //Player.loadSoundCloudIframe();
} }
}; };
} else { //Others } else { //Others
tagSC.onload = function(){ tagSC.onload = function(){
SC_player = SC; SC_player = SC;
if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined) { if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined && !sc_initialized) {
SC_player.initialize({
client_id: api_key.soundcloud
});
sc_initialized = true;
Player.soundcloudReady(); Player.soundcloudReady();
} }
Player.loadSoundCloudIframe(); //Player.loadSoundCloudIframe();
}; };
} }
tagSC.src = "https://connect.soundcloud.com/sdk/sdk-3.3.0.js"; tagSC.src = "https://connect.soundcloud.com/sdk/sdk-3.3.0.js";
firstScriptTagSC = document.getElementsByTagName('script')[0]; var firstScriptTagSC = document.getElementsByTagName('script')[0];
firstScriptTagSC.parentNode.insertBefore(tagSC, firstScriptTagSC); firstScriptTagSC.parentNode.insertBefore(tagSC, firstScriptTagSC);
} }
}, },
@@ -1163,7 +1179,11 @@ var Player = {
loadSoundCloudIframe: function() { loadSoundCloudIframe: function() {
if(document.querySelectorAll("script[src='/assets/sclib/scapi.js']").length == 1) { if(document.querySelectorAll("script[src='/assets/sclib/scapi.js']").length == 1) {
try { try {
if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined) { if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined && !sc_initialized) {
SC_player.initialize({
client_id: api_key.soundcloud
});
sc_initialized = true;
Player.soundcloudReady(); Player.soundcloudReady();
} }
} catch(error) { } catch(error) {
@@ -1172,29 +1192,37 @@ var Player = {
//console.error("Seems SoundCloud script isn't correctly loaded. Please reload the page."); //console.error("Seems SoundCloud script isn't correctly loaded. Please reload the page.");
} }
} else { } else {
tagSC = document.createElement('script'); var tagSCWidget = document.createElement('script');
if (tagSC.readyState){ //IE if (tagSCWidget.readyState){ //IE
tagSC.onreadystatechange = function(){ tagSCWidget.onreadystatechange = function(){
if (tagSC.readyState == "loaded" || if (tagSCWidget.readyState == "loaded" ||
tagSC.readyState == "complete"){ tagSCWidget.readyState == "complete"){
tagSC.onreadystatechange = null; tagSCWidget.onreadystatechange = null;
SC_widget = SC; SC_widget = SC;
if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined) { if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined && !sc_initialized) {
SC_player.initialize({
client_id: api_key.soundcloud
});
sc_initialized = true;
Player.soundcloudReady(); Player.soundcloudReady();
} }
} }
}; };
} else { //Others } else { //Others
tagSC.onload = function(){ tagSCWidget.onload = function(){
SC_widget = SC; SC_widget = SC;
if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined) { if(SC_player != null && SC_player != undefined && SC_widget != null && SC_widget != undefined && !sc_initialized) {
SC_player.initialize({
client_id: api_key.soundcloud
});
sc_initialized = true;
Player.soundcloudReady(); Player.soundcloudReady();
} }
}; };
} }
tagSC.src = "/assets/sclib/scapi.js"; tagSCWidget.src = "/assets/sclib/scapi.js";
firstScriptTagSC = document.getElementsByTagName('script')[0]; var firstScriptTagSCWidget = document.getElementsByTagName('script')[0];
firstScriptTagSC.parentNode.insertBefore(tagSC, firstScriptTagSC); firstScriptTagSCWidget.parentNode.insertBefore(tagSCWidget, firstScriptTagSCWidget);
} }
} }