jellyfin-media-player/native/jmpUpdatePlugin.js

49 lines
1.9 KiB
JavaScript

class jmpUpdatePlugin {
constructor({ confirm }) {
this.name = 'JMP Update Plugin';
this.type = 'input';
this.id = 'jmpUpdatePlugin';
(async () => {
const api = await window.apiPromise;
const onUpdateNotify = async (url) => {
if (url == "SSL_UNAVAILABLE") {
// Windows (and possibly macOS) don't ship with SSL in QT......
// So we get to do a full request to GitHub here :(
const checkUrl = "https://github.com/jellyfin/jellyfin-media-player/releases/latest";
url = (await fetch(checkUrl)).url;
}
const urlSegments = url.split("/");
const version = urlSegments[urlSegments.length - 1].substring(1);
const currentVersion = navigator.userAgent.split(" ")[1];
if (currentVersion.includes('pre')) return; // Do not notify for prereleases
if (version == currentVersion) return;
if (!/^[0-9.-]+$/.test(version)) return;
try {
// wait 3 seconds before showing the dialog to prevent race conditions
await new Promise(resolve => setTimeout(resolve, 3000));
await confirm({
title: "Update Available",
text: `Jellyfin Media Player version ${version} is available.`,
cancelText: "Ignore",
confirmText: "Download"
});
api.system.openExternalUrl(url);
} catch (e) {
// User cancelled update
}
}
api.system.updateInfoEmitted.connect(onUpdateNotify);
api.system.checkForUpdates();
})();
}
}
window._jmpUpdatePlugin = jmpUpdatePlugin;