Bilibili-Evolved/min/notify-new-version.min.js
2020-03-27 17:10:22 +08:00

1 line
2.5 KiB
JavaScript

(()=>{return(e,t)=>{const n={less:-1,equal:0,greater:1,incomparable:NaN};class r{constructor(e){if(!/^[\d\.]+$/.test(e)){throw new Error("Invalid version string")}this.parts=e.split(".").map(e=>parseInt(e));this.versionString=e}compareTo(e){for(let t=0;t<this.parts.length;++t){if(e.parts.length===t){return n.greater}if(this.parts[t]===e.parts[t]){continue}if(this.parts[t]>e.parts[t]){return n.greater}return n.less}if(this.parts.length!==e.parts.length){return n.less}return n.equal}greaterThan(e){return this.compareTo(e)===n.greater}lessThan(e){return this.compareTo(e)===n.less}equals(e){return this.compareTo(e)===n.equal}}let s;async function i(){if(typeof offlineData!=="undefined"||isIframe()){return false}if(e.lastNewVersionCheck!==undefined){const t=Number(new Date);const n=t-e.lastNewVersionCheck;if(n<e.newVersionCheckInterval){return false}}try{const t=GM.info.script.name.match(/Bilibili Evolved \((.*)\)/);const n=t?"."+t[1].replace(/ /g,"-").toLowerCase():"";s=`${Resource.cdnRoot||Resource.root}bilibili-evolved${n}.user.js`;let i;try{const e=await Ajax.monkey({url:s});i=e.match(/@version[ ]*([\d\.]+)/)[1]}catch(e){i=await Ajax.monkey({url:Resource.cdnRoot||Resource.root+"version.txt"})}const a=new r(i);const o=new r(e.currentVersion);const c=a.greaterThan(o);if(c){const e=`新版本<span>${a.versionString}</span>已发布. <a id="new-version-link" class="link" href="${s}">安装</a><a class="link" target="_blank" href="https://github.com/the1812/Bilibili-Evolved/releases">查看</a>`;const t=Toast.info(e,"检查更新");SpinQuery.select("#new-version-link").then(e=>e.addEventListener("click",()=>{t&&t.dismiss()}))}return c}catch(e){return false}finally{e.lastNewVersionCheck=Number(new Date)}}const a=i();return{widget:{content:`\n<button class="gui-settings-flat-button" id="new-version-update">\n<a href="${s}" style="display:none"></a>\n<i class="icon-update"></i>\n<span>安装更新</span>\n</button>\n<button class="gui-settings-flat-button" id="new-version-info">\n<a target="blank" style="display:none" href="https://github.com/the1812/Bilibili-Evolved/releases"></a>\n<i class="icon-info"></i>\n<span>查看更新</span>\n</button>\n`,condition:()=>a,success:()=>{document.querySelector("#new-version-update").addEventListener("click",e=>{if(e.target.nodeName.toLowerCase()!=="a"){document.querySelector("#new-version-update a").click()}});document.querySelector("#new-version-info").addEventListener("click",e=>{if(e.target.nodeName.toLowerCase()!=="a"){document.querySelector("#new-version-info a").click()}})}}}}})();