diff --git a/README.md b/README.md index 8b6e47af..35e70065 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,6 @@ Modern material design for Invidious - History deletion. - Load more for comments, history, subscriptions & search results. - Editing used instance for Return Dislikes & Sponsorblock. -- Allow disabling Return Dislikes. - Audio only mode. - PWA support. diff --git a/materialious/src/lib/Player.svelte b/materialious/src/lib/Player.svelte index 808e23b3..16dd73eb 100644 --- a/materialious/src/lib/Player.svelte +++ b/materialious/src/lib/Player.svelte @@ -7,6 +7,7 @@ import { SponsorBlock, type Category } from 'sponsorblock-api'; import { onDestroy, onMount } from 'svelte'; import { get } from 'svelte/store'; + import { sponsorBlock as sponsorBlockStore } from '../store'; import type { MediaPlayerClass } from 'dashjs'; import { @@ -61,30 +62,32 @@ ] }); - const currentCategories = get(sponsorBlockCategories); + if (get(sponsorBlockStore)) { + const currentCategories = get(sponsorBlockCategories); - if (currentCategories.length > 0) { - sponsorBlock = new SponsorBlock(''); + if (currentCategories.length > 0) { + sponsorBlock = new SponsorBlock(''); - try { - const segments = await sponsorBlock.getSegments( - data.video.videoId, - get(sponsorBlockCategories) as Category[] - ); + try { + const segments = await sponsorBlock.getSegments( + data.video.videoId, + get(sponsorBlockCategories) as Category[] + ); - player.on('timeupdate', (event: PlyrEvent) => { - segments.forEach((segment) => { - if ( - event.detail.plyr.currentTime >= segment.startTime && - event.detail.plyr.currentTime <= segment.endTime - ) { - categoryBeingSkipped = segment.category; - event.detail.plyr.currentTime = segment.endTime + 1; - ui('#sponsorblock-alert'); - } + player.on('timeupdate', (event: PlyrEvent) => { + segments.forEach((segment) => { + if ( + event.detail.plyr.currentTime >= segment.startTime && + event.detail.plyr.currentTime <= segment.endTime + ) { + categoryBeingSkipped = segment.category; + event.detail.plyr.currentTime = segment.endTime + 1; + ui('#sponsorblock-alert'); + } + }); }); - }); - } catch {} + } catch {} + } } player.on('loadeddata', (event: PlyrEvent) => { diff --git a/materialious/src/routes/+layout.svelte b/materialious/src/routes/+layout.svelte index 5ac210ac..d7b674e9 100644 --- a/materialious/src/routes/+layout.svelte +++ b/materialious/src/routes/+layout.svelte @@ -18,6 +18,8 @@ playerListenByDefault, playerProxyVideos, playerSavePlaybackPosition, + returnYtDislikes, + sponsorBlock, sponsorBlockCategories, themeColor } from '../store'; @@ -408,9 +410,41 @@ +
+
Return YT Dislikes
+ + +
+
Sponsorblock
+ + {#each sponsorCategories as sponsor}
- + {#if data.returnYTDislikes} + + {/if}

diff --git a/materialious/src/routes/watch/[slug]/+page.ts b/materialious/src/routes/watch/[slug]/+page.ts index fb8c33fb..34ad5ccc 100644 --- a/materialious/src/routes/watch/[slug]/+page.ts +++ b/materialious/src/routes/watch/[slug]/+page.ts @@ -1,16 +1,17 @@ import { amSubscribed, getComments, getDislikes, getVideo, postHistory } from '$lib/Api/index.js'; import { phaseDescription } from '$lib/misc'; import { get } from 'svelte/store'; -import { auth, playerProxyVideos } from '../../../store'; +import { auth, playerProxyVideos, sponsorBlock } from '../../../store'; export async function load({ params }) { const video = await getVideo(params.slug, get(playerProxyVideos)); if (get(auth)) { postHistory(video.videoId); } + return { video: video, - returnYTDislikes: await getDislikes(params.slug), + returnYTDislikes: get(sponsorBlock) ? await getDislikes(params.slug) : null, comments: video.liveNow ? null : await getComments(params.slug, { sort_by: "top", source: "youtube" }), subscribed: await amSubscribed(video.authorId), content: phaseDescription(video.description) diff --git a/materialious/src/store.ts b/materialious/src/store.ts index bbaa535d..d841576a 100644 --- a/materialious/src/store.ts +++ b/materialious/src/store.ts @@ -15,8 +15,11 @@ export const playerListenByDefault = persisted("listenByDefault", false); export const playerSavePlaybackPosition = persisted("savePlaybackPosition", true); export const playerDash = persisted("dashEnabled", false); +export const returnYtDislikes = persisted("returnYtDislikes", true); + export const interfaceSearchSuggestions = persisted("searchSuggestions", true); export const auth: Writable = persisted("authToken", null); +export const sponsorBlock = persisted("sponsorBlock", true); export const sponsorBlockCategories: Writable = persisted("sponsorBlockCategories", []); \ No newline at end of file