Bilibili-Evolved/min/custom-navbar-messages.min.js
2021-01-07 12:18:52 +08:00

1 line
2.5 KiB
JavaScript

(()=>(t,e)=>{function a(t,e,a){if(e in t){Object.defineProperty(t,e,{value:a,enumerable:true,configurable:true,writable:true})}else{t[e]=a}return t}const{NavbarComponent:i}=e.import("custom-navbar-component");class s extends i{constructor(){super();a(this,"totalCount",void 0);this.href="https://message.bilibili.com/";this.html="消息";this.popupHtml=`\n<ul id="message-list">\n<li><a data-name="reply" target="_blank" href="https://message.bilibili.com/#/reply">回复我的</a></li>\n<li><a data-name="at" target="_blank" href="https://message.bilibili.com/#/at">@我的</a></li>\n<li><a data-name="like" target="_blank" href="https://message.bilibili.com/#/love">收到的赞</a></li>\n<li><a data-name="user_msg" target="_blank" href="https://message.bilibili.com/#/whisper">我的消息</a></li>\n<li><a data-name="sys_msg" target="_blank" href="https://message.bilibili.com/#/system">系统通知</a></li>\n</ul>\n`;this.requestedPopup=true;this.active=document.URL.startsWith("https://message.bilibili.com/");this.fetchSettings().then((t=>{if(t){this.updateCount();this.setupEvents();this.onPopup=()=>this.updateCount()}}))}get name(){return"messages"}async fetchSettings(){const t=await Ajax.getJsonWithCredentials(`https://api.vc.bilibili.com/link_setting/v1/link_setting/get?msg_notify=1`);if(t.code!==0){return}await this.setNotifyStyle(t.data.msg_notify);return t.data.msg_notify!==3}async setupEvents(){const t=await SpinQuery.select("#message-list");const e=[...t.querySelectorAll("a[data-name]")];e.forEach((t=>{t.addEventListener("click",(()=>{const e=t.getAttribute("data-count");if(!e){return}const a=parseInt(e);t.removeAttribute("data-count");this.totalCount-=a;if(this.totalCount<0){this.totalCount=0}this.setNotifyCount(this.totalCount)}))}))}async updateCount(){const t=await Ajax.getJsonWithCredentials(`https://api.bilibili.com/x/msgfeed/unread`);const e=await Ajax.getJsonWithCredentials(`https://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread`);const a=await SpinQuery.select("#message-list");const i=[...a.querySelectorAll("a[data-name]")];const s=i.map((t=>t.getAttribute("data-name")));if(t.code!==0||e.code!==0){return}t.data["user_msg"]=e.data.unfollow_unread+e.data.follow_unread;this.totalCount=s.reduce(((e,a)=>e+t.data[a]),0);if(!this.totalCount){return}await this.setNotifyCount(this.totalCount);s.forEach(((e,a)=>{const s=t.data[e];if(s>0){i[a].setAttribute("data-count",s.toString())}else{i[a].removeAttribute("data-count")}}))}}return{export:{Messages:s}}})();