SponsorBlock: Prevent multiple notifications at the end of a video
Closes: #1299 Previously, the app would notified the user (with a toast) of a sponsor segment skip repeatedly if the segment lasted until the end of a video. This commit fixes that behavior so that it's displayed only once.
This commit is contained in:
parent
f6fb6c67c9
commit
089cd5845b
|
@ -241,6 +241,10 @@ export default Vue.extend({
|
||||||
}, 200)
|
}, 200)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.useSponsorBlock) {
|
||||||
|
this.initializeSponsorBlock()
|
||||||
|
}
|
||||||
|
|
||||||
$(document).on('keydown', this.keyboardShortcutHandler)
|
$(document).on('keydown', this.keyboardShortcutHandler)
|
||||||
|
|
||||||
this.player.on('mousemove', this.hideMouseTimeout)
|
this.player.on('mousemove', this.hideMouseTimeout)
|
||||||
|
@ -286,18 +290,22 @@ export default Vue.extend({
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
setTimeout(() => { this.fetchSponsorBlockInfo() }, 100)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
fetchSponsorBlockInfo() {
|
initializeSponsorBlock() {
|
||||||
if (this.useSponsorBlock) {
|
|
||||||
this.$store.dispatch('sponsorBlockSkipSegments', {
|
this.$store.dispatch('sponsorBlockSkipSegments', {
|
||||||
videoId: this.videoId,
|
videoId: this.videoId,
|
||||||
categories: ['sponsor']
|
categories: ['sponsor']
|
||||||
}).then((skipSegments) => {
|
}).then((skipSegments) => {
|
||||||
|
if (skipSegments.length === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
this.player.ready(() => {
|
||||||
this.player.on('timeupdate', () => {
|
this.player.on('timeupdate', () => {
|
||||||
this.skipSponsorBlocks(skipSegments)
|
this.skipSponsorBlocks(skipSegments)
|
||||||
})
|
})
|
||||||
|
|
||||||
skipSegments.forEach(({
|
skipSegments.forEach(({
|
||||||
category,
|
category,
|
||||||
segment: [startTime, endTime]
|
segment: [startTime, endTime]
|
||||||
|
@ -309,11 +317,12 @@ export default Vue.extend({
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
skipSponsorBlocks(skipSegments) {
|
skipSponsorBlocks(skipSegments) {
|
||||||
const currentTime = this.player.currentTime()
|
const currentTime = this.player.currentTime()
|
||||||
|
const duration = this.player.duration()
|
||||||
let newTime = null
|
let newTime = null
|
||||||
let skippedCategory = null
|
let skippedCategory = null
|
||||||
skipSegments.forEach(({ category, segment: [startTime, endTime] }) => {
|
skipSegments.forEach(({ category, segment: [startTime, endTime] }) => {
|
||||||
|
@ -322,7 +331,7 @@ export default Vue.extend({
|
||||||
skippedCategory = category
|
skippedCategory = category
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
if (newTime !== null) {
|
if (newTime !== null && Math.abs(duration - currentTime) > 0.500) {
|
||||||
if (this.sponsorBlockShowSkippedToast) {
|
if (this.sponsorBlockShowSkippedToast) {
|
||||||
this.showSkippedSponsorSegmentInformation(skippedCategory)
|
this.showSkippedSponsorSegmentInformation(skippedCategory)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue