//@ts-check
import JadefinIntegrity from '../JadefinIntegrity.js';
import Jadefin from "../Jadefin.js";
import JadefinMod from "../JadefinMod.js";
import JadefinModules from "../JadefinModules.js";
import JadefinUtils from "../JadefinUtils.js";
import { rd, rdom, rd$, RDOMListHelper } from "../utils/rdom.js";
export default JadefinIntegrity("VersionCheck", import.meta.url, () => new (class VersionCheck extends JadefinMod {
_promptedUpdate = false;
constructor() {
super();
}
async init(name, modUrl) {
await super.init(name, modUrl);
await this.initStyle();
const parser = new DOMParser();
const url = `${window.location.origin}${window.location.pathname}?cachev=${Date.now()}`;
const data = await fetch(url).then(r => r.text());
const doc = parser.parseFromString(data, "text/html");
const srcOld = this.srcOld = this.storage.get("src");
const srcCurr = this.srcCurr = document.querySelector("[data-main-jellyfin-bundle]")?.getAttribute("src");
const srcNew = this.srcNew = doc.querySelector("[data-main-jellyfin-bundle]")?.getAttribute("src");
if (srcOld != srcCurr) {
this.storage.set("src", srcCurr);
JadefinModules.toast("Jadefin updated.");
}
const canUpdate = this.canUpdate = srcCurr != srcNew;
if (!canUpdate) {
return;
}
this.promptUpdate();
}
promptUpdate() {
if (this._promptedUpdate) {
return;
}
this._promptedUpdate = true;
JadefinModules.toast("Jadefin update available.");
const ExtrasMenu = /** @type {import("./ExtrasMenu.js").default} */ (Jadefin.getMod("ExtrasMenu"));
ExtrasMenu.headerExtrasEl.appendChild(rd$()``);
const item = ExtrasMenu.items.find(i => i.name == "Reload" && i.icon == "update");
const orig = item.cbEl;
item.cbEl = (/** @type {HTMLElement} */ el, current, alive) => {
orig?.(el, current, alive);
if (!alive) {
return;
}
const icon = el.querySelector(".actionsheetMenuItemIcon");
if (!icon) {
return;
}
icon.classList.add("hasVersionCheck");
icon.appendChild(rd$()``);
};
}
})());