From 4bfb14bea831d91b96eae7fc748ddde84b89b4a3 Mon Sep 17 00:00:00 2001 From: the1812 Date: Thu, 1 Jul 2021 17:47:52 +0800 Subject: [PATCH] Fix unfollowed message count (fix #1985) --- min/custom-navbar-messages.min.js | 2 +- .../simple/custom-navbar-messages.ts | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/min/custom-navbar-messages.min.js b/min/custom-navbar-messages.min.js index 069483619..128727ca2 100644 --- a/min/custom-navbar-messages.min.js +++ b/min/custom-navbar-messages.min.js @@ -1 +1 @@ -(()=>(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\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}}})(); \ No newline at end of file +(()=>(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:s}=e.import("custom-navbar-component");class i extends s{constructor(){super();a(this,"totalCount",void 0);a(this,"settings",void 0);this.href="https://message.bilibili.com/";this.html="消息";this.popupHtml=`\n\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&show_unfollowed_msg=1`);if(t.code!==0){return}await this.setNotifyStyle(t.data.msg_notify);this.settings={notify:t.data.msg_notify!==3,hideNotFollowedCount:t.data.show_unfollowed_msg===1,json:t.data};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 s=[...a.querySelectorAll("a[data-name]")];const i=s.map((t=>t.getAttribute("data-name")));if(t.code!==0||e.code!==0){return}t.data["user_msg"]=e.data.follow_unread;if(!this.settings.hideNotFollowedCount){t.data["user_msg"]+=e.data.unfollow_unread}this.totalCount=i.reduce(((e,a)=>e+t.data[a]),0);if(!this.totalCount){return}await this.setNotifyCount(this.totalCount);i.forEach(((e,a)=>{const i=t.data[e];if(i>0){s[a].setAttribute("data-count",i.toString())}else{s[a].removeAttribute("data-count")}}))}}return{export:{Messages:i}}})(); \ No newline at end of file diff --git a/src/style/custom-navbar/simple/custom-navbar-messages.ts b/src/style/custom-navbar/simple/custom-navbar-messages.ts index 2dcc235bf..010f074bc 100644 --- a/src/style/custom-navbar/simple/custom-navbar-messages.ts +++ b/src/style/custom-navbar/simple/custom-navbar-messages.ts @@ -1,6 +1,11 @@ import { NavbarComponent } from '../custom-navbar-component' export class Messages extends NavbarComponent { totalCount: number + settings: { + notify: boolean + hideNotFollowedCount: boolean + json: any + } constructor() { super() this.href = 'https://message.bilibili.com/' @@ -28,11 +33,16 @@ export class Messages extends NavbarComponent { return 'messages' } async fetchSettings() { - const json = await Ajax.getJsonWithCredentials(`https://api.vc.bilibili.com/link_setting/v1/link_setting/get?msg_notify=1`) + const json = await Ajax.getJsonWithCredentials(`https://api.vc.bilibili.com/link_setting/v1/link_setting/get?msg_notify=1&show_unfollowed_msg=1`) if (json.code !== 0) { return } await this.setNotifyStyle(json.data.msg_notify) + this.settings = { + notify: json.data.msg_notify !== 3, + hideNotFollowedCount: json.data.show_unfollowed_msg === 1, + json: json.data, + } return json.data.msg_notify !== 3 } async setupEvents() { @@ -64,7 +74,10 @@ export class Messages extends NavbarComponent { if (mainJson.code !== 0 || messageJson.code !== 0) { return } - mainJson.data['user_msg'] = messageJson.data.unfollow_unread + messageJson.data.follow_unread + mainJson.data['user_msg'] = messageJson.data.follow_unread + if (!this.settings.hideNotFollowedCount) { + mainJson.data['user_msg'] += messageJson.data.unfollow_unread + } this.totalCount = names.reduce((acc, it) => acc + mainJson.data[it], 0) if (!this.totalCount) { return