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 scUsingWidget = false;
var SC_player;
var sc_initialized = false;
var soundcloud_enabled = true;
var local_new_channel = false;
var sc_need_initialization = false;
var sc_need_initialization = true;
var small_player = false;
var hiddenPlaylist = false;
var videoSource;
@@ -250,49 +251,8 @@ window.addEventListener("DOMContentLoaded", function() {
firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
}
if(document.querySelectorAll("script[src='https://connect.soundcloud.com/sdk/sdk-3.3.0.js']").length == 1) {
} 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);
}
Player.loadSoundCloudPlayer();
Player.loadSoundCloudIframe();
} else if(window.location.pathname == "/" && client) {
//Player.loadSoundCloudPlayer();
}

View File

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