1
0
mirror of https://github.com/SuperBFG7/ympd synced 2025-10-26 03:17:40 +00:00

Feat: startup screen, connect to websocket after getting the settings

This commit is contained in:
jcorporation
2019-01-14 23:06:07 +00:00
parent 230395e445
commit 2f3a579d07
4 changed files with 100 additions and 19 deletions

View File

@@ -29,12 +29,16 @@ var lastSongObj = {};
var lastState;
var currentSong = new Object();
var playstate = '';
var settingsLock = false;
var settingsParsed = false;
var settingsNew = {};
var settings = {};
var alertTimeout;
var progressTimer;
var deferredPrompt;
var dragEl;
var playlistEl;
var websocketConnected = false;
var app = {};
app.apps = { "Playback": { "state": "0/-/", "scrollPos": 0 },
@@ -104,6 +108,7 @@ var modalUpdateDB = new Modal(document.getElementById('modalUpdateDB'));
var modalSaveSmartPlaylist = new Modal(document.getElementById('modalSaveSmartPlaylist'));
var modalDeletePlaylist = new Modal(document.getElementById('modalDeletePlaylist'));
var modalHelp = new Modal(document.getElementById('modalHelp'));
var modalAppInit = new Modal(document.getElementById('modalAppInit'));
var dropdownMainMenu;
var dropdownVolumeMenu = new Dropdown(document.getElementById('volumeMenu'));
@@ -353,10 +358,37 @@ function appRoute() {
app.last.view = app.current.view;
};
function appInit() {
webSocketConnect();
function appInitStart() {
modalAppInit.show();
getSettings();
sendAPI({"cmd": "MPD_API_PLAYER_STATE"}, parseState);
appInitWait();
}
function appInitWait() {
setTimeout(function() {
if (settingsParsed == true && websocketConnected == true) {
//app initialized
document.getElementById('appInitWebsocket').classList.remove('unvisible');
appInit();
document.getElementById('appInitApply').classList.remove('unvisible');
document.getElementsByTagName('header')[0].classList.remove('hide');
document.getElementsByTagName('main')[0].classList.remove('hide');
document.getElementsByTagName('footer')[0].classList.remove('hide');
modalAppInit.hide();
return;
}
if (settingsParsed == true) {
//parsed settings, now its save to connect to websocket
document.getElementById('appInitSettings').classList.remove('unvisible');
webSocketConnect();
}
appInitWait();
}, 500);
}
function appInit() {
//sendAPI({"cmd": "MPD_API_PLAYER_STATE"}, parseState);
domCache.volumeBar.value = 0;
@@ -811,6 +843,12 @@ function appInit() {
window.addEventListener('appinstalled', function(event) {
console.log('myMPD installed as app');
});
window.addEventListener('beforeunload', function() {
socket.onclose = function () {}; // disable onclose handler first
socket.close();
websocketConnected = false;
});
}
function parseCmd(event, href) {
@@ -1028,6 +1066,9 @@ function webSocketConnect() {
}
switch (obj.type) {
case 'welcome':
websocketConnected = true;
break;
case 'update_state':
parseState(obj);
break;
@@ -1070,6 +1111,7 @@ function webSocketConnect() {
}
socket.onclose = function(){
websocketConnected = false;
console.log('disconnected');
modalConnectionError.show();
setTimeout(function() {
@@ -1145,8 +1187,8 @@ function filterCols(x) {
settings[x] = cols;
}
function parseSettings(obj) {
settings = obj.data;
function parseSettings() {
settingsParsed = false;
toggleBtn('btnRandom', settings.random);
toggleBtn('btnConsume', settings.consume);
@@ -1300,12 +1342,12 @@ function parseSettings(obj) {
if (settings.featSyscmds) {
var mainMenuDropdown = document.getElementById('mainMenuDropdown');
var syscmdsList = '';
var syscmdsListLen = settings.syscmds.length;
var syscmdsListLen = settings.syscmdList.length;
if (syscmdsListLen > 0) {
syscmdsList = '<div class="dropdown-divider"></div>';
for (var i = 0; i < syscmdsListLen; i++) {
syscmdsList += '<a class="dropdown-item text-light bg-dark" href="#" data-href=\'{"cmd": "execSyscmd", "options": ["' +
settings.syscmds[i] + '"]}\'>' + settings.syscmds[i] + '</a>';
settings.syscmdList[i] + '"]}\'>' + settings.syscmdList[i] + '</a>';
}
}
document.getElementById('syscmds').innerHTML = syscmdsList;
@@ -1333,6 +1375,8 @@ function parseSettings(obj) {
appRoute();
else if (app.current.app == 'Browse' && app.current.tab == 'Database' && app.current.search != '')
appRoute();
settingsParsed = true;
}
function setCols(table, className) {
@@ -1404,7 +1448,24 @@ function setCols(table, className) {
}
function getSettings() {
sendAPI({"cmd": "MPD_API_SETTINGS_GET"}, parseSettings);
if (settingsLock == false) {
settingsLock = true;
sendAPI({"cmd": "MYMPD_API_SETTINGS_GET"}, getMpdSettings);
}
}
function getMpdSettings(obj) {
settingsNew = obj.data;
sendAPI({"cmd": "MPD_API_SETTINGS_GET"}, joinSettings);
}
function joinSettings(obj) {
for (var key in obj.data) {
settingsNew[key] = obj.data[key];
}
settings = Object.assign({}, settingsNew);
settingsLock = false;
parseSettings();
}
function saveCols(table, tableEl) {
@@ -1431,7 +1492,7 @@ function saveCols(table, tableEl) {
}
}
var cols = {"cmd": "MPD_API_COLS_SAVE", "data": {"table": "cols" + table, "cols": []}};
var cols = {"cmd": "MYMPD_API_COLS_SAVE", "data": {"table": "cols" + table, "cols": []}};
var ths = header.getElementsByTagName('th');
for (var i = 0; i < ths.length; i++) {
var name = ths[i].getAttribute('data-col');
@@ -1460,7 +1521,7 @@ function saveColsPlayback(table) {
}
}
var cols = {"cmd": "MPD_API_COLS_SAVE", "data": {"table": "cols" + table, "cols": []}};
var cols = {"cmd": "MYMPD_API_COLS_SAVE", "data": {"table": "cols" + table, "cols": []}};
var ths = header.getElementsByTagName('div');
for (var i = 0; i < ths.length; i++) {
var name = ths[i].getAttribute('data-tag');
@@ -2865,7 +2926,7 @@ function confirmSettings() {
var selectReplaygain = document.getElementById('selectReplaygain');
var selectJukeboxPlaylist = document.getElementById('selectJukeboxPlaylist');
var selectJukeboxMode = document.getElementById('selectJukeboxMode');
sendAPI({"cmd": "MPD_API_SETTINGS_SET", "data": {
sendAPI({"cmd": "MYMPD_API_SETTINGS_SET", "data": {
"consume": (document.getElementById('btnConsume').classList.contains('active') ? 1 : 0),
"random": (document.getElementById('btnRandom').classList.contains('active') ? 1 : 0),
"single": (document.getElementById('btnSingle').classList.contains('active') ? 1 : 0),
@@ -3162,4 +3223,4 @@ function genId(x) {
}
//Init app
appInit();
appInitStart();