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