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