Skip to content

Commit 2618e8c

Browse files
authored
Add files via upload
1 parent 34e5679 commit 2618e8c

4 files changed

Lines changed: 138 additions & 0 deletions

File tree

assets/js/install-handler.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
var deferredInstallPrompt = null;
2+
3+
4+
window.addEventListener('beforeinstallprompt', function (event) {
5+
event.preventDefault();
6+
deferredInstallPrompt = event;
7+
showDownloadPrompt();
8+
});
9+
10+
11+
document.querySelector('.downloadButton').addEventListener('click', downloadButtonClicked)
12+
13+
function downloadButtonClicked() {
14+
deferredInstallPrompt.prompt();
15+
deferredInstallPrompt.userChoice
16+
.then(function (choiceResult) {
17+
if (choiceResult.outcome === 'accepted') {
18+
19+
deferredInstallPrompt = null;
20+
document.querySelector('.downloadPrompt').style.display = 'none';
21+
22+
} else {
23+
console.log(choiceResult)
24+
}
25+
})
26+
}
27+
28+
function showDownloadPrompt() {
29+
document.querySelector('.downloadPrompt').style.display = 'grid';
30+
}
31+
32+
window.addEventListener('appinstalled', (evt) => {
33+
// Log install to analytics
34+
35+
if (!isInStandaloneMode()) {
36+
alert('open in app');
37+
}
38+
});
39+
40+
async function foo(){
41+
if ('getInstalledRelatedApps' in window.navigator) {
42+
const relatedApps = await navigator.getInstalledRelatedApps();
43+
relatedApps.forEach((app) => {
44+
//if your PWA exists in the array it is installed
45+
alert(app.platform, app.url);
46+
});
47+
}
48+
}
49+
50+
foo();
51+
52+
53+
54+
const isInStandaloneMode = () =>(window.matchMedia('(display-mode: standalone)').matches) || (window.navigator.standalone) || document.referrer.includes('android-app://');
55+
56+
57+

assets/js/jquery.min.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/js/main.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
2+
3+
4+
window.addEventListener('load',main)
5+
function main(){
6+
7+
vaildateCacheIfOnline()
8+
.then(_=>{
9+
10+
})
11+
12+
}
13+
14+
15+
16+
17+
function vaildateCacheIfOnline(){
18+
19+
return new Promise((resolve,reject)=>{
20+
21+
fetch(`config.json?cacheBust=${new Date().getTime()}`)
22+
.then(response => { return response.json() })
23+
.then(config => {
24+
25+
let installedVersion = Settings.getVersion()
26+
if ( installedVersion== 0) {
27+
Settings.setVersion(config.version)
28+
document.querySelector('#version').innerHTML= `version ${config.version}`;
29+
return resolve();
30+
}
31+
else if (installedVersion != config.version) {
32+
console.log('Cache Version mismatch')
33+
fetch(`config.json?clean-cache=true&cacheBust=${new Date().getTime()}`).then(_ => {
34+
//actually cleans the cache
35+
Settings.setVersion(config.version);
36+
window.location.reload();
37+
38+
return resolve(); // unnecessary
39+
});
40+
41+
}else{
42+
// already updated
43+
console.log('Cache Updated')
44+
document.querySelector('#version').innerHTML= `version ${installedVersion}`;
45+
return resolve();
46+
}
47+
}).catch(err=>{
48+
console.log(err);
49+
return resolve();
50+
//handle offline here
51+
})
52+
})
53+
54+
}
55+

assets/js/settings.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
var Settings = {
2+
3+
initIfNot: () => {
4+
if (localStorage.getItem('settings') == undefined) {
5+
localStorage.setItem('settings', '{}')
6+
}
7+
8+
},
9+
10+
getVersion: () => {
11+
let settings = JSON.parse(localStorage.getItem('settings'));
12+
return settings.version || 0;
13+
},
14+
15+
setVersion: (version) => {
16+
let settings = JSON.parse(localStorage.getItem('settings'));
17+
settings.version = version;
18+
localStorage.setItem('settings', JSON.stringify(settings))
19+
}
20+
21+
22+
}
23+
24+
Settings.initIfNot();

0 commit comments

Comments
 (0)