2022-10-24 17:31:28 +08:00

62 lines
2.9 KiB
TypeScript

import WuhuBase from "../WuhuBase";
import NNB_INFO_HTML from "../../static/html/nnb_info.html";
import Popup from "../utils/Popup";
import Global from "../Global";
export default class NNB extends WuhuBase {
className = 'NNB';
public handle(): void {
let { isPDA, PDA_APIKey } = Global.getInstance();
const insert = NNB_INFO_HTML
.replace('{{}}', localStorage.getItem('APIKey') || '不可用')
.replace('{{}}', isPDA ? PDA_APIKey : '不可用');
const popup = new Popup(insert, '查看NNB').getElement();
const select = popup.querySelector('input');
const node = popup.querySelector('p');
popup.querySelector('button').addEventListener('click', ev => {
let target = ev.target as HTMLInputElement;
target.style.display = 'none';
node.innerHTML = '加载中';
// API 计算
if (select.checked) {
const api_key = isPDA ? PDA_APIKey : window.localStorage.getItem('APIKey');
window.fetch(`https://api.torn.com/user/?selections=bars,perks&key=${ api_key }`)
.then(res => res.json())
.then(data => {
if (data['error']) {
node.innerHTML = `出错了 ${ JSON.stringify(data['error']) }`;
target.style.display = null;
return;
}
let nb = data['nerve']['maximum'];
let perks = 0;
Object.values(data).forEach(val => {
(val instanceof Array) && val.forEach(s => {
s = s.toLowerCase();
s.includes('maximum nerve') && (perks += (<any>new RegExp('[0-9].').exec(s))[0] | 0)
})
});
node.innerHTML = `NNB: ${ nb - perks }`;
target.style.display = null;
});
}
// 主页计算
else {
if (window.location.href.includes('index.php') && document.title.includes('Home')) {
let nb = (<any>document.querySelector('#barNerve p[class^="bar-value___"]').innerText.split('/')[1]) | 0;
let perks = 0;
document.querySelectorAll('#personal-perks li').forEach(elem => {
const str = elem.innerText.toLowerCase();
str.includes('maximum nerve') && (perks += (/[0-9]./.exec(str) as any)[0] | 0)
});
node.innerHTML = `NNB: ${ nb - perks }`;
target.style.display = null;
return;
}
node.innerHTML = '不在主页面,<a href="/index.php">点击前往</a>';
target.style.display = null;
}
});
}
}