1
0
mirror of https://github.com/SuperBFG7/ympd synced 2025-12-18 03:48:14 +00:00

feat: Implement ServiceWorker

feat: Implement A2H
This commit is contained in:
jcorporation
2018-07-16 18:33:20 +01:00
parent 02c9a5635e
commit a46a9acebc
8 changed files with 146 additions and 22 deletions

View File

@@ -29,6 +29,7 @@ var current_song = new Object();
var playstate = '';
var settings = {};
var alertTimeout;
let deferredPrompt;
var app = {};
app.apps = { "Playback": { "state": "0/-/", "scrollPos": 0 },
@@ -66,6 +67,7 @@ domCache.btnNext = document.getElementById('btnNext');
domCache.progressBar = document.getElementById('progressBar');
domCache.volumeBar = document.getElementById('volumeBar');
domCache.outputs = document.getElementById('outputs');
domCache.btnAdd = document.getElementById('btnAdd');
var modalConnectionError = new Modal(document.getElementById('modalConnectionError'));
var modalSettings = new Modal(document.getElementById('modalSettings'));
@@ -456,6 +458,51 @@ function appInit() {
}
event.preventDefault();
}, false);
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/sw.js', {scope: '/'}).then(function(registration) {
// Registration was successful
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}, function(err) {
// registration failed :(
console.log('ServiceWorker registration failed: ', err);
});
});
}
window.addEventListener('beforeinstallprompt', (e) => {
// Prevent Chrome 67 and earlier from automatically showing the prompt
e.preventDefault();
// Stash the event so it can be triggered later.
deferredPrompt = e;
});
window.addEventListener('beforeinstallprompt', (e) => {
e.preventDefault();
deferredPrompt = e;
// Update UI notify the user they can add to home screen
domCache.btnAdd.classList.remove('hide');
});
domCache.btnAdd.addEventListener('click', (e) => {
// hide our user interface that shows our A2HS button
domCache.btnAdd.classList.add('hide');
// Show the prompt
deferredPrompt.prompt();
// Wait for the user to respond to the prompt
deferredPrompt.userChoice.then((choiceResult) => {
if (choiceResult.outcome === 'accepted')
console.log('User accepted the A2HS prompt');
else
console.log('User dismissed the A2HS prompt');
deferredPrompt = null;
});
});
window.addEventListener('appinstalled', (evt) => {
console.log('appinstalled');
});
}
function webSocketConnect() {