12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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;
|