aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.eslintrc.js1
-rw-r--r--src/components/SkipNoticeComponent.tsx38
-rw-r--r--src/components/TooltipComponent.tsx2
-rw-r--r--src/config.ts22
-rw-r--r--src/content.ts26
-rw-r--r--src/js-components/skipButtonControlBar.ts8
6 files changed, 33 insertions, 64 deletions
diff --git a/.eslintrc.js b/.eslintrc.js
index 96035c76..622e66ad 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -21,6 +21,7 @@ module.exports = {
},
plugins: ["react", "@typescript-eslint"],
rules: {
+ '@typescript-eslint/no-unused-vars': 'error',
// TODO: Remove warn rules when not needed anymore
"no-self-assign": "off",
"@typescript-eslint/no-empty-interface": "off",
diff --git a/src/components/SkipNoticeComponent.tsx b/src/components/SkipNoticeComponent.tsx
index 67facd3a..a972b325 100644
--- a/src/components/SkipNoticeComponent.tsx
+++ b/src/components/SkipNoticeComponent.tsx
@@ -1,7 +1,7 @@
import * as React from "react";
import * as CompileConfig from "../../config.json";
import Config from "../config"
-import { Category, ContentContainer, SponsorHideType, SponsorTime, NoticeVisbilityMode, ActionType, SponsorSourceType, SegmentUUID } from "../types";
+import { Category, ContentContainer, SponsorTime, NoticeVisbilityMode, ActionType, SponsorSourceType, SegmentUUID } from "../types";
import NoticeComponent from "./NoticeComponent";
import NoticeTextSelectionComponent from "./NoticeTextSectionComponent";
import Utils from "../utils";
@@ -72,7 +72,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
amountOfPreviousNotices: number;
showInSecondSlot: boolean;
-
+
idSuffix: string;
noticeRef: React.MutableRefObject<NoticeComponent>;
@@ -105,7 +105,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
if (this.segments.length > 1) {
this.segments.sort((a, b) => a.segment[0] - b.segment[0]);
}
-
+
// This is the suffix added at the end of every id
for (const segment of this.segments) {
this.idSuffix += segment.UUID;
@@ -168,7 +168,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
noticeStyle.transform = "scale(0.8) translate(10%, 10%)";
}
- // If it started out as smaller, always keep the
+ // If it started out as smaller, always keep the
// skip button there
const showFirstSkipButton = this.props.smaller || this.segments[0].actionType === ActionType.Mute;
const firstColumn = showFirstSkipButton ? (
@@ -181,7 +181,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
showInSecondSlot={this.showInSecondSlot}
idSuffix={this.idSuffix}
fadeIn={true}
- startFaded={Config.config.noticeVisibilityMode >= NoticeVisbilityMode.FadedForAll
+ startFaded={Config.config.noticeVisibilityMode >= NoticeVisbilityMode.FadedForAll
|| (Config.config.noticeVisibilityMode >= NoticeVisbilityMode.FadedForAutoSkip && this.autoSkip)}
timed={true}
maxCountdownTime={this.state.maxCountdownTime}
@@ -205,7 +205,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
key={0}>
{/* Vote Button Container */}
- {!this.state.thanksForVotingText ?
+ {!this.state.thanksForVotingText ?
<td id={"sponsorTimesVoteButtonsContainer" + this.idSuffix}
className="sponsorTimesVoteButtonsContainer">
@@ -268,7 +268,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
? this.getSkipButton(1) : null}
{/* Never show button */}
- {!this.autoSkip || this.props.startReskip ? "" :
+ {!this.autoSkip || this.props.startReskip ? "" :
<td className="sponsorSkipNoticeRightSection"
key={1}>
<button className="sponsorSkipObject sponsorSkipNoticeButton sponsorSkipNoticeRightButton"
@@ -343,7 +343,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
}
getSkipButton(buttonIndex: number): JSX.Element {
- if (this.state.showSkipButton[buttonIndex] && (this.segments.length > 1
+ if (this.state.showSkipButton[buttonIndex] && (this.segments.length > 1
|| this.segments[0].actionType !== ActionType.Poi
|| this.props.unskipTime)) {
@@ -365,8 +365,8 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
className="sponsorSkipObject sponsorSkipNoticeButton"
style={style}
onClick={() => this.prepAction(buttonIndex === 1 ? SkipNoticeAction.Unskip1 : SkipNoticeAction.Unskip0)}>
- {this.getSkipButtonText(buttonIndex, forceSeek ? ActionType.Skip : null)
- + (!forceSeek && this.state.showKeybindHint
+ {this.getSkipButtonText(buttonIndex, forceSeek ? ActionType.Skip : null)
+ + (!forceSeek && this.state.showKeybindHint
? " (" + keybindToString(Config.config.skipKeybind) + ")" : "")}
</button>
</span>
@@ -379,7 +379,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
for (let i = 0; i < this.segments.length; i++) {
elements.push(
<button className="sponsorSkipObject sponsorSkipNoticeButton"
- style={{opacity: this.getSubmissionChooserOpacity(i),
+ style={{opacity: this.getSubmissionChooserOpacity(i),
color: this.getSubmissionChooserColor(i)}}
onClick={() => this.performAction(i)}
key={"submission" + i + this.segments[i].category + this.idSuffix}>
@@ -404,7 +404,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
getSubmissionChooserColor(index: number): string {
const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;
const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;
- const shouldWarnUser = Config.config.isVip && (isDownvote || isCopyDownvote)
+ const shouldWarnUser = Config.config.isVip && (isDownvote || isCopyDownvote)
&& this.segments[index].locked === 1;
return shouldWarnUser ? this.lockedColor : this.unselectedColor;
@@ -480,8 +480,8 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
/**
* Performs the action from the current state
- *
- * @param index
+ *
+ * @param index
*/
performAction(index: number, action?: SkipNoticeAction): void {
switch (action ?? this.state.actionState) {
@@ -620,7 +620,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
// See if the title should be changed
if (!this.autoSkip) {
newState.noticeTitle = chrome.i18n.getMessage("noticeTitle");
- }
+ }
//reset countdown
this.setState(newState, () => {
@@ -723,7 +723,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
messages
});
}
-
+
addVoteButtonInfo(message: string): void {
this.setState({
thanksForVotingText: message
@@ -786,7 +786,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
case ActionType.Mute: {
return chrome.i18n.getMessage("unmute");
}
- case ActionType.Skip:
+ case ActionType.Skip:
default: {
return chrome.i18n.getMessage("unskip");
}
@@ -799,7 +799,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
case ActionType.Mute: {
return chrome.i18n.getMessage("mute");
}
- case ActionType.Skip:
+ case ActionType.Skip:
default: {
return chrome.i18n.getMessage("reskip");
}
@@ -812,7 +812,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
case ActionType.Mute: {
return chrome.i18n.getMessage("mute");
}
- case ActionType.Skip:
+ case ActionType.Skip:
default: {
return chrome.i18n.getMessage("skip");
}
diff --git a/src/components/TooltipComponent.tsx b/src/components/TooltipComponent.tsx
index 5e2cacb2..0e13c63c 100644
--- a/src/components/TooltipComponent.tsx
+++ b/src/components/TooltipComponent.tsx
@@ -1,6 +1,4 @@
import * as React from "react";
-import Config from "../config";
-import { Category, SegmentUUID, SponsorTime } from "../types";
export interface TooltipProps {
text: string;
diff --git a/src/config.ts b/src/config.ts
index 03ebbaf0..5a0fe5be 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -1,6 +1,6 @@
import * as CompileConfig from "../config.json";
import * as invidiousList from "../ci/invidiouslist.json";
-import { Category, CategorySelection, CategorySkipOption, NoticeVisbilityMode, PreviewBarOption, SponsorTime, StorageChangesObject, UnEncodedSegmentTimes as UnencodedSegmentTimes, Keybind, HashedValue, VideoID, SponsorHideType } from "./types";
+import { Category, CategorySelection, CategorySkipOption, NoticeVisbilityMode, PreviewBarOption, SponsorTime, StorageChangesObject, Keybind, HashedValue, VideoID, SponsorHideType } from "./types";
import { keybindEquals } from "./utils/configUtils";
interface SBConfig {
@@ -302,7 +302,7 @@ function configProxy(): { sync: SBConfig, local: SBStorage } {
for (const key in changes) {
Config.cachedSyncConfig[key] = changes[key].newValue;
}
-
+
for (const callback of Config.configSyncListeners) {
callback(changes);
}
@@ -312,7 +312,7 @@ function configProxy(): { sync: SBConfig, local: SBStorage } {
}
}
});
-
+
const syncHandler: ProxyHandler<SBConfig> = {
set<K extends keyof SBConfig>(obj: SBConfig, prop: K, value: SBConfig[K]) {
Config.cachedSyncConfig[prop] = value;
@@ -329,10 +329,10 @@ function configProxy(): { sync: SBConfig, local: SBStorage } {
return obj[prop] || data;
},
-
+
deleteProperty(obj: SBConfig, prop: keyof SBConfig) {
chrome.storage.sync.remove(<string> prop);
-
+
return true;
}
@@ -354,10 +354,10 @@ function configProxy(): { sync: SBConfig, local: SBStorage } {
return obj[prop] || data;
},
-
+
deleteProperty(obj: SBStorage, prop: keyof SBStorage) {
chrome.storage.local.remove(<string> prop);
-
+
return true;
}
@@ -381,7 +381,7 @@ function forceLocalUpdate(prop: string): void {
});
}
-async function fetchConfig(): Promise<void> {
+async function fetchConfig(): Promise<void> {
await Promise.all([new Promise<void>((resolve) => {
chrome.storage.sync.get(null, function(items) {
Config.cachedSyncConfig = <SBConfig> <unknown> items;
@@ -389,7 +389,7 @@ async function fetchConfig(): Promise<void> {
});
}), new Promise<void>((resolve) => {
chrome.storage.local.get(null, function(items) {
- Config.cachedLocalStorage = <SBStorage> <unknown> items;
+ Config.cachedLocalStorage = <SBStorage> <unknown> items;
resolve();
});
})]);
@@ -433,9 +433,9 @@ function migrateOldSyncFormats(config: SBConfig) {
if (!config["autoSkipOnMusicVideosUpdate"]) {
config["autoSkipOnMusicVideosUpdate"] = true;
for (const selection of config.categorySelections) {
- if (selection.name === "music_offtopic"
+ if (selection.name === "music_offtopic"
&& selection.option === CategorySkipOption.AutoSkip) {
-
+
config.autoSkipOnMusicVideos = true;
break;
}
diff --git a/src/content.ts b/src/content.ts
index 56b08571..6b12a578 100644
--- a/src/content.ts
+++ b/src/content.ts
@@ -321,9 +321,6 @@ async function videoIDChange(id) {
}
}
- // Get new video info
- // getVideoInfo(); // Seems to have been replaced
-
// Update whitelist data when the video data is loaded
whitelistCheck();
@@ -942,12 +939,10 @@ function startSkipScheduleCheckingForStartSponsors() {
// See if there are any starting sponsors
let startingSegmentTime = getStartTimeFromUrl(document.URL) || -1;
let found = false;
- let startingSegment: SponsorTime = null;
for (const time of sponsorTimes) {
if (time.segment[0] <= video.currentTime && time.segment[0] > startingSegmentTime && time.segment[1] > video.currentTime
&& time.actionType !== ActionType.Poi) {
startingSegmentTime = time.segment[0];
- startingSegment = time;
found = true;
break;
}
@@ -957,7 +952,6 @@ function startSkipScheduleCheckingForStartSponsors() {
if (time.segment[0] <= video.currentTime && time.segment[0] > startingSegmentTime && time.segment[1] > video.currentTime
&& time.actionType !== ActionType.Poi) {
startingSegmentTime = time.segment[0];
- startingSegment = time;
found = true;
break;
}
@@ -995,26 +989,6 @@ function startSkipScheduleCheckingForStartSponsors() {
}
}
-/**
- * Get the video info for the current tab from YouTube
- *
- * TODO: Replace
- */
-async function getVideoInfo(): Promise<void> {
- const result = await utils.asyncRequestToCustomServer("GET", "https://www.youtube.com/get_video_info?video_id=" + sponsorVideoID + "&html5=1&c=TVHTML5&cver=7.20190319");
-
- if (result.ok) {
- const decodedData = decodeURIComponent(result.responseText).match(/player_response=([^&]*)/)[1];
- if (!decodedData) {
- console.error("[SB] Failed at getting video info from YouTube.");
- console.error("[SB] Data returned from YouTube: " + result.responseText);
- return;
- }
-
- videoInfo = JSON.parse(decodedData);
- }
-}
-
function getYouTubeVideoID(document: Document): string | boolean {
const url = document.URL;
// clips should never skip, going from clip to full video has no indications.
diff --git a/src/js-components/skipButtonControlBar.ts b/src/js-components/skipButtonControlBar.ts
index b765fc3e..11bbf1ac 100644
--- a/src/js-components/skipButtonControlBar.ts
+++ b/src/js-components/skipButtonControlBar.ts
@@ -2,10 +2,7 @@ import Config from "../config";
import { SponsorTime } from "../types";
import { getSkippingText } from "../utils/categoryUtils";
import { keybindToString } from "../utils/configUtils";
-
-import Utils from "../utils";
import { AnimationUtils } from "../utils/animationUtils";
-const utils = new Utils();
export interface SkipButtonControlBarProps {
skip: (segment: SponsorTime) => void;
@@ -53,7 +50,7 @@ export class SkipButtonControlBar {
this.skipIcon.id = "sbSkipIconControlBarImage";
this.textContainer = document.createElement("div");
-
+
this.container.appendChild(this.skipIcon);
this.container.appendChild(this.textContainer);
this.container.addEventListener("click", () => this.toggleSkip());
@@ -73,7 +70,7 @@ export class SkipButtonControlBar {
attachToPage(): void {
const mountingContainer = this.getMountingContainer();
this.chapterText = document.querySelector(".ytp-chapter-container");
-
+
if (mountingContainer && !mountingContainer.contains(this.container)) {
if (this.onMobileYouTube) {
mountingContainer.appendChild(this.container);
@@ -220,4 +217,3 @@ export class SkipButtonControlBar {
this.container.style.left = this.left + "px";
}
}
-