mirror of
https://github.com/jellyfin/jellyfin-media-player.git
synced 2025-02-17 04:17:44 +00:00
49 lines
1.9 KiB
JavaScript
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; |