Skip to content

Commit

Permalink
[HTML5] Improve editor progressive web app behavior.
Browse files Browse the repository at this point in the history
Ensures early claim for aggressive caching.
Adds a button to update when it detects a new version asking
confirmation due to the necessary reload.
  • Loading branch information
Faless committed Feb 6, 2022
1 parent 73f3965 commit afdfe7c
Showing 1 changed file with 33 additions and 3 deletions.
36 changes: 33 additions & 3 deletions misc/dist/html/editor.html
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ <h2 id="welcome-modal-title">Important - Please read before continuing</h2>
<button id="btn-close-editor" class="btn close-btn" disabled="disabled" onclick="closeEditor()">×</button>
<button id="btn-tab-game" class="btn tab-btn" disabled="disabled" onclick="showTab('game')">Game</button>
<button id="btn-close-game" class="btn close-btn" disabled="disabled" onclick="closeGame()">×</button>
<button id="btn-tab-update" class="btn tab-btn" style="display: none;">Update</button>
</div>
<div id="tabs">
<div id="tab-loader">
Expand Down Expand Up @@ -325,10 +326,39 @@ <h2 id="welcome-modal-title">Important - Please read before continuing</h2>
<div id="status-notice" class="godot" style="display: none;"></div>
</div>
</div>
<script>
<script>//<![CDATA[
window.addEventListener("load", () => {
function notifyUpdate(sw) {
const btn = document.getElementById("btn-tab-update");
btn.onclick = function () {
if (!window.confirm("Are you sure you want to update?\nClicking \"OK\" will reload all active instances!")) {
return;
}
sw.postMessage("update");
btn.innerHTML = "Updating...";
btn.disabled = true;
};
btn.style.display = "";
}
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("service.worker.js");
navigator.serviceWorker.register("service.worker.js").then(function (reg) {
if (reg.waiting) {
notifyUpdate(reg.waiting);
}
reg.addEventListener("updatefound", function () {
const update = reg.installing;
update.addEventListener("statechange", function () {
if (update.state === "installed") {
// It's a new install, claim and perform aggressive caching.
if (!reg.active) {
update.postMessage("claim");
} else {
notifyUpdate(update);
}
}
});
});
});
}

if (localStorage.getItem("welcomeModalDismissed") !== 'true') {
Expand All @@ -343,7 +373,7 @@ <h2 id="welcome-modal-title">Important - Please read before continuing</h2>
localStorage.setItem("welcomeModalDismissed", 'true');
}
}
</script>
//]]></script>
<script src="godot.tools.js"></script>
<script>//<![CDATA[

Expand Down

0 comments on commit afdfe7c

Please sign in to comment.