diff --git a/public/_locales/en/messages.json b/public/_locales/en/messages.json
index 36210aad..da7c5295 100644
--- a/public/_locales/en/messages.json
+++ b/public/_locales/en/messages.json
@@ -52,6 +52,9 @@
"reskip": {
"message": "Reskip"
},
+ "unmute": {
+ "message": "Unmute"
+ },
"paused": {
"message": "Paused"
},
@@ -302,6 +305,9 @@
"skip": {
"message": "Skip"
},
+ "mute": {
+ "message": "Mute"
+ },
"skip_category": {
"message": "Skip {0}?"
},
@@ -604,6 +610,9 @@
"autoSkipOnMusicVideos": {
"message": "Auto skip all segments when there is a non-music segment"
},
+ "muteSegments": {
+ "message": "Allow segments that mute audio instead of skip"
+ },
"colorFormatIncorrect": {
"message": "Your color is formatted incorrectly. It should be a 3 or 6 digit hex code with a number sign at the beginning."
},
diff --git a/public/content.css b/public/content.css
index 9d59a22e..13cab8e4 100644
--- a/public/content.css
+++ b/public/content.css
@@ -472,7 +472,7 @@ input::-webkit-inner-spin-button {
text-decoration: underline;
}
-.sponsorTimeCategories {
+.sponsorTimeEditSelector {
margin-top: 5px;
margin-bottom: 5px;
diff --git a/public/options/options.html b/public/options/options.html
index 540b5122..b1a0dcb4 100644
--- a/public/options/options.html
+++ b/public/options/options.html
@@ -50,6 +50,22 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/SkipNoticeComponent.tsx b/src/components/SkipNoticeComponent.tsx
index 0395c19c..b96ce070 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, CategoryActionType, SponsorHideType, SponsorTime, NoticeVisbilityMode } from "../types";
+import { Category, ContentContainer, CategoryActionType, SponsorHideType, SponsorTime, NoticeVisbilityMode, ActionType } from "../types";
import NoticeComponent from "./NoticeComponent";
import NoticeTextSelectionComponent from "./NoticeTextSectionComponent";
@@ -39,8 +39,9 @@ export interface SkipNoticeState {
maxCountdownTime?: () => number;
countdownText?: string;
- unskipText?: string;
- unskipCallback?: (index: number) => void;
+ skipButtonText?: string;
+ skipButtonCallback?: (index: number) => void;
+ showSkipButton?: boolean;
downvoting?: boolean;
choosingCategory?: boolean;
@@ -110,8 +111,9 @@ class SkipNoticeComponent extends React.Component this.unskip(index),
+ skipButtonText: this.getUnskipText(),
+ skipButtonCallback: (index) => this.unskip(index),
+ showSkipButton: true,
downvoting: false,
choosingCategory: false,
@@ -126,7 +128,7 @@ class SkipNoticeComponent extends React.Component 1
+ if (this.state.showSkipButton && (this.segments.length > 1
|| getCategoryActionType(this.segments[0].category) !== CategoryActionType.POI
- || this.props.unskipTime) {
+ || this.props.unskipTime)) {
return (
);
@@ -397,7 +399,7 @@ class SkipNoticeComponent extends React.Component Config.config.skipNoticeDuration,
+ countdownTime: Config.config.skipNoticeDuration
+ };
+
+ // See if the title should be changed
+ if (!this.autoSkip) {
+ newState.noticeTitle = chrome.i18n.getMessage("noticeTitle");
+ }
+
+ //reset countdown
+ this.setState(newState, () => {
+ this.noticeRef.current.resetCountdown();
+ });
}
/** Sets up notice to be not skipped yet */
@@ -479,36 +503,14 @@ class SkipNoticeComponent extends React.Component this.reskip(index),
+ skipButtonText: buttonText,
+ skipButtonCallback: (index) => this.reskip(index),
// change max duration to however much of the sponsor is left
maxCountdownTime: maxCountdownTime,
countdownTime: maxCountdownTime()
} as SkipNoticeState;
}
- reskip(index: number): void {
- this.contentContainer().reskipSponsorTime(this.segments[index]);
-
- const newState: SkipNoticeState = {
- unskipText: chrome.i18n.getMessage("unskip"),
- unskipCallback: this.unskip.bind(this),
-
- maxCountdownTime: () => Config.config.skipNoticeDuration,
- countdownTime: Config.config.skipNoticeDuration
- };
-
- // See if the title should be changed
- if (!this.autoSkip) {
- newState.noticeTitle = chrome.i18n.getMessage("noticeTitle");
- }
-
- //reset countdown
- this.setState(newState, () => {
- this.noticeRef.current.resetCountdown();
- });
- }
-
afterVote(segment: SponsorTime, type: number, category: Category): void {
this.addVoteButtonInfo(chrome.i18n.getMessage("voted"));
@@ -559,6 +561,52 @@ class SkipNoticeComponent extends React.Component= this.props.segments[0].segment[1]) {
+ this.setState({
+ showSkipButton: false
+ });
+ }
+ }
+
+ private getUnskipText(): string {
+ switch (this.props.segments[0].actionType) {
+ case ActionType.Mute: {
+ return chrome.i18n.getMessage("unmute");
+ }
+ case ActionType.Skip:
+ default: {
+ return chrome.i18n.getMessage("unskip");
+ }
+ }
+ }
+
+ private getReskipText(): string {
+ switch (this.props.segments[0].actionType) {
+ case ActionType.Mute: {
+ return chrome.i18n.getMessage("mute");
+ }
+ case ActionType.Skip:
+ default: {
+ return chrome.i18n.getMessage("reskip");
+ }
+ }
+ }
+
+ private getSkipText(): string {
+ switch (this.props.segments[0].actionType) {
+ case ActionType.Mute: {
+ return chrome.i18n.getMessage("mute");
+ }
+ case ActionType.Skip:
+ default: {
+ return chrome.i18n.getMessage("skip");
+ }
+ }
+ }
}
export default SkipNoticeComponent;
diff --git a/src/components/SponsorTimeEditComponent.tsx b/src/components/SponsorTimeEditComponent.tsx
index 8d9f516e..5664f7a9 100644
--- a/src/components/SponsorTimeEditComponent.tsx
+++ b/src/components/SponsorTimeEditComponent.tsx
@@ -1,12 +1,12 @@
import * as React from "react";
-
-import Config from "../config";
import * as CompileConfig from "../../config.json";
-
+import Config from "../config";
+import { ActionType, ActionTypes, Category, CategoryActionType, ContentContainer, SponsorTime } from "../types";
import Utils from "../utils";
-import { Category, CategoryActionType, ContentContainer, SponsorTime } from "../types";
-import SubmissionNoticeComponent from "./SubmissionNoticeComponent";
import { getCategoryActionType } from "../utils/categoryUtils";
+import SubmissionNoticeComponent from "./SubmissionNoticeComponent";
+
+
const utils = new Utils();
export interface SponsorTimeEditProps {
@@ -32,6 +32,7 @@ class SponsorTimeEditComponent extends React.Component;
+ actionTypeOptionRef: React.RefObject;
configUpdateListener: () => void;
@@ -39,6 +40,7 @@ class SponsorTimeEditComponent extends React.Component