aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/content.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/content.ts')
-rw-r--r--src/content.ts58
1 files changed, 12 insertions, 46 deletions
diff --git a/src/content.ts b/src/content.ts
index c8cd4879..398102aa 100644
--- a/src/content.ts
+++ b/src/content.ts
@@ -1,7 +1,6 @@
import Config from "./config";
import {
ActionType,
- ActionTypes,
Category,
CategorySkipOption,
ChannelIDInfo,
@@ -18,7 +17,6 @@ import {
VideoInfo,
} from "./types";
import Utils from "./utils";
-import * as CompileConfig from "../config.json";
import PreviewBar, { PreviewBarSegment } from "./js-components/previewBar";
import SkipNotice from "./render/SkipNotice";
import SkipNoticeComponent from "./components/SkipNoticeComponent";
@@ -52,6 +50,7 @@ import { asyncRequestToServer } from "./utils/requests";
import { isMobileControlsOpen } from "./utils/mobileUtils";
import { defaultPreviewTime } from "./utils/constants";
import { onVideoPage } from "../maze-utils/src/pageInfo";
+import { getSegmentsForVideo } from "./utils/segmentData";
cleanPage();
@@ -269,7 +268,7 @@ function messageListener(request: Message, sender: unknown, sendResponse: (respo
sendResponse({ hasVideo: getVideoID() != null });
// fetch segments
if (getVideoID()) {
- sponsorsLookup(false);
+ sponsorsLookup(false, true);
}
break;
@@ -364,7 +363,7 @@ function contentConfigUpdateListener(changes: StorageChangesObject) {
updateVisibilityOfPlayerControlsButton()
break;
case "categorySelections":
- sponsorsLookup();
+ sponsorsLookup(true, true);
break;
case "barTypes":
setCategoryColorCSSVariables();
@@ -1133,42 +1132,20 @@ function setupCategoryPill() {
categoryPill.attachToPage(isOnMobileYouTube(), isOnInvidious(), voteAsync);
}
-async function sponsorsLookup(keepOldSubmissions = true) {
- const categories: string[] = Config.config.categorySelections.map((category) => category.name);
-
- const extraRequestData: Record<string, unknown> = {};
- const hashParams = getHashParams();
- if (hashParams.requiredSegment) extraRequestData.requiredSegment = hashParams.requiredSegment;
-
+async function sponsorsLookup(keepOldSubmissions = true, ignoreCache = false) {
const videoID = getVideoID()
if (!videoID) {
console.error("[SponsorBlock] Attempted to fetch segments with a null/undefined videoID.");
return;
}
- const hashPrefix = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;
- const response = await asyncRequestToServer('GET', "/api/skipSegments/" + hashPrefix, {
- categories: CompileConfig.categoryList,
- actionTypes: ActionTypes,
- ...extraRequestData
- }, {
- "X-CLIENT-NAME": `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`
- });
+
+ const segmentData = await getSegmentsForVideo(videoID, ignoreCache);
// store last response status
- lastResponseStatus = response?.status;
-
- if (response?.ok) {
- const enabledActionTypes = getEnabledActionTypes();
-
- const receivedSegments: SponsorTime[] = JSON.parse(response.responseText)
- ?.filter((video) => video.videoID === getVideoID())
- ?.map((video) => video.segments)?.[0]
- ?.filter((segment) => enabledActionTypes.includes(segment.actionType) && categories.includes(segment.category))
- ?.map((segment) => ({
- ...segment,
- source: SponsorSourceType.Server
- }))
- ?.sort((a, b) => a.segment[0] - b.segment[0]);
+ lastResponseStatus = segmentData.status;
+ if (segmentData.status === 200) {
+ const receivedSegments = segmentData.segments;
+
if (receivedSegments && receivedSegments.length) {
sponsorDataFound = true;
@@ -1208,6 +1185,7 @@ async function sponsorsLookup(keepOldSubmissions = true) {
}
// See if some segments should be hidden
+ const hashPrefix = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;
const downvotedData = Config.local.downvotedSegments[hashPrefix];
if (downvotedData) {
for (const segment of sponsorTimes) {
@@ -1280,18 +1258,6 @@ function importExistingChapters(wait: boolean) {
}
}
-function getEnabledActionTypes(forceFullVideo = false): ActionType[] {
- const actionTypes = [ActionType.Skip, ActionType.Poi, ActionType.Chapter];
- if (Config.config.muteSegments) {
- actionTypes.push(ActionType.Mute);
- }
- if (Config.config.fullVideoSegments || forceFullVideo) {
- actionTypes.push(ActionType.Full);
- }
-
- return actionTypes;
-}
-
async function lockedCategoriesLookup(): Promise<void> {
const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);
const response = await asyncRequestToServer("GET", "/api/lockCategories/" + hashPrefix);
@@ -2016,7 +1982,7 @@ function startOrEndTimingNewSegment() {
Config.forceLocalUpdate("unsubmittedSegments");
// Make sure they know if someone has already submitted something it while they were watching
- sponsorsLookup();
+ sponsorsLookup(true, true);
updateEditButtonsOnPlayer();
updateSponsorTimesSubmitting(false);