diff --git a/src/background/main.ts b/src/background/main.ts index 5068a4cc..7de49aa5 100644 --- a/src/background/main.ts +++ b/src/background/main.ts @@ -174,13 +174,38 @@ chrome.runtime.onMessage.addListener((message: any, sender: chrome.runtime.Messa } if (message.contentScriptQuery === 'submitDislike') { // https://github.com/indefined/UserScripts/blob/master/bilibiliHome/bilibiliHome.API.md#%E6%8F%90%E4%BA%A4%E4%B8%8D%E5%96%9C%E6%AC%A2 - const url = `${APP_URL}/x/feed/dislike?access_key=${message.accessKey} + let url = `${APP_URL}/x/feed/dislike?access_key=${message.accessKey} &goto=${message.goto} &id=${message.id} &mid=${message.mid} &reason_id=${message.reasonID} &rid=${message.rid} - &tag_id=${message.tagID}` + &tag_id=${message.tagID} + &build=5000000` + + // remove url empty spaces + url = url.replace(/\s+/g, '') + + fetch(url) + .then(response => response.json()) + .then(data => sendResponse(data)) + .catch(error => console.error(error)) + return true + } + if (message.contentScriptQuery === 'undoDislike') { + // https://github.com/indefined/UserScripts/blob/master/bilibiliHome/bilibiliHome.API.md#%E6%92%A4%E9%94%80%E4%B8%8D%E5%96%9C%E6%AC%A2 + let url = `${APP_URL}/x/feed/dislike/cancel?access_key=${message.accessKey} + &goto=${message.goto} + &id=${message.id} + &mid=${message.mid} + &reason_id=${message.reasonID} + &rid=${message.rid} + &tag_id=${message.tagID} + &build=5000000` + + // remove url empty spaces + url = url.replace(/\s+/g, '') + fetch(url) .then(response => response.json()) .then(data => sendResponse(data)) diff --git a/src/contentScripts/views/Home/RecommendContent.vue b/src/contentScripts/views/Home/RecommendContent.vue index 8ee1d34e..338ebc3a 100644 --- a/src/contentScripts/views/Home/RecommendContent.vue +++ b/src/contentScripts/views/Home/RecommendContent.vue @@ -46,13 +46,20 @@ export default defineComponent({ }) if (response.code === 0) { + const resData = [] as any[] + response.data.forEach((item: any) => { + // remove ad videos + if (!item.ad_cb) + resData.push(item) + }) + // when videoList has length property, it means it is the first time to load if (!this.videoList.length) { - this.videoList = response.data + this.videoList = resData } else { // else we concat the new data to the old data - this.videoList = this.videoList.concat(response.data) + this.videoList = this.videoList.concat(resData) } } }, @@ -62,11 +69,11 @@ export default defineComponent({ gotoVideo(uri: string) { window.open(`/video/av${uri.split('/')[3]}`) }, - submitDislike(reasonID: number, goto: string, id: string, mid: string, rid: string, tagID: string) { + submitDislike(videoIndex: number, reasonID: number, goto: string, id: string, mid: string, rid: string, tagID: string) { browser.runtime .sendMessage({ contentScriptQuery: 'submitDislike', - accessKey: accessKey.value, + accessKey: this.accessKey, reasonID, goto, id, @@ -75,8 +82,30 @@ export default defineComponent({ tagID, }) .then((res) => { - console.log(res) - // this.getRecommendVideo() + if (res.code === 0) { + this.videoList[videoIndex].isDislike = true + this.videoList[videoIndex].selectedReasonID = reasonID + } + }) + }, + undoDislike(videoIndex: number, reasonID: number, goto: string, id: string, mid: string, rid: string, tagID: string) { + browser.runtime + .sendMessage({ + contentScriptQuery: 'undoDislike', + accessKey: this.accessKey, + reasonID, + goto, + id, + mid, + rid, + tagID, + }) + .then((res) => { + if (res.code === 0) { + this.videoList[videoIndex].isDislike = false + this.videoList[videoIndex].selectedReasonID = undefined + this.videoList[videoIndex].openControl = false + } }) }, onRefresh() { @@ -94,139 +123,152 @@ export default defineComponent({