diff options
Diffstat (limited to 'src/content.ts')
-rw-r--r-- | src/content.ts | 58 |
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); |