Throttle updater toasts and bump cache-bust

This commit is contained in:
Aaron
2025-12-13 10:27:35 -05:00
parent 4241a4da69
commit c20ea57da6
3 changed files with 20 additions and 8 deletions

View File

@@ -5,7 +5,7 @@ import { placeholderStatus, renderStats } from "./status.js";
import { initServiceControls, renderServices } from "./services.js"; import { initServiceControls, renderServices } from "./services.js";
import { initSettings } from "./settings.js"; import { initSettings } from "./settings.js";
import { initUpdateSettings, isUpdatesDirty } from "./update-settings.js"; import { initUpdateSettings, isUpdatesDirty } from "./update-settings.js";
import { initReleaseUI } from "./releases.js?v=20251213f"; import { initReleaseUI } from "./releases.js?v=20251213g";
const servicesGrid = document.getElementById("servicesGrid"); const servicesGrid = document.getElementById("servicesGrid");
const heroStats = document.getElementById("heroStats"); const heroStats = document.getElementById("heroStats");

View File

@@ -45,6 +45,7 @@ export function initReleaseUI({ showToast, showBusy, hideBusy, confirmAction })
let releaseLogLines = []; let releaseLogLines = [];
let releaseLastFetched = 0; let releaseLastFetched = 0;
let lastReleaseLogKey = ""; let lastReleaseLogKey = "";
let lastReleaseToastKey = null;
let changelogCache = { version: null, text: "" }; let changelogCache = { version: null, text: "" };
let lastChangelogUrl = null; let lastChangelogUrl = null;
let releaseChannel = "dev"; let releaseChannel = "dev";
@@ -159,9 +160,9 @@ export function initReleaseUI({ showToast, showBusy, hideBusy, confirmAction })
logRelease(`Status: ${status}${progress ? " • " + progress : ""}${message ? " • " + message : ""}`); logRelease(`Status: ${status}${progress ? " • " + progress : ""}${message ? " • " + message : ""}`);
lastReleaseLogKey = key; lastReleaseLogKey = key;
} }
releaseLastFetched = now; releaseLastFetched = now;
if (status === "update_available" && message && message.startsWith("http")) { if (status === "update_available" && message && message.startsWith("http")) {
lastChangelogUrl = message; lastChangelogUrl = message;
} else if (latest_version) { } else if (latest_version) {
lastChangelogUrl = `https://git.44r0n.cc/44r0n7/pi-kit/releases/download/v${latest_version}/CHANGELOG-${latest_version}.txt`; lastChangelogUrl = `https://git.44r0n.cc/44r0n7/pi-kit/releases/download/v${latest_version}/CHANGELOG-${latest_version}.txt`;
} }
@@ -200,11 +201,20 @@ export function initReleaseUI({ showToast, showBusy, hideBusy, confirmAction })
releaseBusyActive = false; releaseBusyActive = false;
hideBusy(); hideBusy();
if (releaseProgress) releaseProgress.textContent = ""; if (releaseProgress) releaseProgress.textContent = "";
if (state.status === "up_to_date") { // Only toast once per apply/rollback cycle
showToast(state.message || "Update complete", "success"); if (state.status === "up_to_date" && releaseBusyActive === false) {
const key = `ok-${state.current_version || ""}-${state.latest_version || ""}`;
if (lastReleaseToastKey !== key) {
lastReleaseToastKey = key;
showToast(state.message || "Update complete", "success");
}
logRelease("Update complete"); logRelease("Update complete");
} else if (state.status === "error") { } else if (state.status === "error") {
showToast(state.message || "Update failed", "error"); const key = `err-${state.message || ""}`;
if (lastReleaseToastKey !== key) {
lastReleaseToastKey = key;
showToast(state.message || "Update failed", "error");
}
logRelease(`Error: ${state.message || "Update failed"}`); logRelease(`Error: ${state.message || "Update failed"}`);
} }
} }
@@ -242,6 +252,7 @@ export function initReleaseUI({ showToast, showBusy, hideBusy, confirmAction })
releaseApplyBtn?.addEventListener("click", async () => { releaseApplyBtn?.addEventListener("click", async () => {
try { try {
lastReleaseToastKey = null;
const state = window.__lastReleaseState || {}; const state = window.__lastReleaseState || {};
const { current_version, latest_version } = state; const { current_version, latest_version } = state;
const sameVersion = const sameVersion =
@@ -274,6 +285,7 @@ export function initReleaseUI({ showToast, showBusy, hideBusy, confirmAction })
releaseRollbackBtn?.addEventListener("click", async () => { releaseRollbackBtn?.addEventListener("click", async () => {
try { try {
lastReleaseToastKey = null;
releaseBusyActive = true; releaseBusyActive = true;
showBusy("Rolling back…", "Restoring previous backup."); showBusy("Rolling back…", "Restoring previous backup.");
logRelease("Starting rollback…"); logRelease("Starting rollback…");

View File

@@ -726,7 +726,7 @@
</div> </div>
</div> </div>
<script type="module" src="assets/main.js?v=20251213f"></script> <script type="module" src="assets/main.js?v=20251213g"></script>
<div id="toastContainer" class="toast-container"></div> <div id="toastContainer" class="toast-container"></div>
</body> </body>
</html> </html>