mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-10 21:47:06 +03:00
Merge pull request #580 from ajayyy/category-list
Lock category order and show all categories + more
This commit is contained in:
1195
package-lock.json
generated
1195
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -29,7 +29,7 @@
|
|||||||
"ts-jest": "^26.2.0",
|
"ts-jest": "^26.2.0",
|
||||||
"ts-loader": "^6.2.1",
|
"ts-loader": "^6.2.1",
|
||||||
"typescript": "~3.7.3",
|
"typescript": "~3.7.3",
|
||||||
"web-ext": "^5.0.0",
|
"web-ext": "^5.4.1",
|
||||||
"webpack": "~4.41.2",
|
"webpack": "~4.41.2",
|
||||||
"webpack-cli": "~3.3.10",
|
"webpack-cli": "~3.3.10",
|
||||||
"webpack-merge": "~4.2.2"
|
"webpack-merge": "~4.2.2"
|
||||||
|
|||||||
@@ -581,6 +581,10 @@
|
|||||||
"chooseACategory": {
|
"chooseACategory": {
|
||||||
"message": "Choose a Category"
|
"message": "Choose a Category"
|
||||||
},
|
},
|
||||||
|
"enableThisCategoryFirst": {
|
||||||
|
"message": "To submit segments with the category of \"{0}\", you must enable it in the options. You will be redirected to the options now.",
|
||||||
|
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
|
||||||
|
},
|
||||||
"youMustSelectACategory": {
|
"youMustSelectACategory": {
|
||||||
"message": "You must select a category for all segments you are submitting!"
|
"message": "You must select a category for all segments you are submitting!"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ export interface SponsorTimeEditState {
|
|||||||
sponsorTimeEdits: [string, string];
|
sponsorTimeEdits: [string, string];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const DEFAULT_CATEGORY = "chooseACategory";
|
||||||
|
|
||||||
class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, SponsorTimeEditState> {
|
class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, SponsorTimeEditState> {
|
||||||
|
|
||||||
idSuffix: string;
|
idSuffix: string;
|
||||||
@@ -217,27 +219,17 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
|
|||||||
|
|
||||||
getCategoryOptions(): React.ReactElement[] {
|
getCategoryOptions(): React.ReactElement[] {
|
||||||
const elements = [(
|
const elements = [(
|
||||||
<option value={"chooseACategory"}
|
<option value={DEFAULT_CATEGORY}
|
||||||
key={"chooseACategory"}>
|
key={DEFAULT_CATEGORY}>
|
||||||
{chrome.i18n.getMessage("chooseACategory")}
|
{chrome.i18n.getMessage(DEFAULT_CATEGORY)}
|
||||||
</option>
|
</option>
|
||||||
)];
|
)];
|
||||||
|
|
||||||
for (const category of Config.config.categorySelections) {
|
for (const category of CompileConfig.categoryList) {
|
||||||
elements.push(
|
elements.push(
|
||||||
<option value={category.name}
|
<option value={category}
|
||||||
key={category.name}>
|
key={category}>
|
||||||
{chrome.i18n.getMessage("category_" + category.name)}
|
{chrome.i18n.getMessage("category_" + category)}
|
||||||
</option>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (elements.length < CompileConfig.categoryList.length) {
|
|
||||||
// Add show more button
|
|
||||||
elements.push(
|
|
||||||
<option value={"moreCategories"}
|
|
||||||
key={"moreCategories"}>
|
|
||||||
{chrome.i18n.getMessage("moreCategories")}
|
|
||||||
</option>
|
</option>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -247,12 +239,17 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
|
|||||||
|
|
||||||
categorySelectionChange(event: React.ChangeEvent<HTMLSelectElement>): void {
|
categorySelectionChange(event: React.ChangeEvent<HTMLSelectElement>): void {
|
||||||
// See if show more categories was pressed
|
// See if show more categories was pressed
|
||||||
if (event.target.value === "moreCategories") {
|
if (!Config.config.categorySelections.some((category) => category.name === event.target.value)) {
|
||||||
|
const chosenCategory = event.target.value;
|
||||||
|
event.target.value = DEFAULT_CATEGORY;
|
||||||
|
|
||||||
|
// Alert that they have to enable this category first
|
||||||
|
if (confirm(chrome.i18n.getMessage("enableThisCategoryFirst")
|
||||||
|
.replace("{0}", chrome.i18n.getMessage("category_" + chosenCategory)))) {
|
||||||
// Open options page
|
// Open options page
|
||||||
chrome.runtime.sendMessage({"message": "openConfig"});
|
chrome.runtime.sendMessage({"message": "openConfig"});
|
||||||
|
}
|
||||||
|
|
||||||
// Reset option to previous
|
|
||||||
event.target.value = this.props.contentContainer().sponsorTimesSubmitting[this.props.index].category;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -752,10 +752,11 @@ function startSkipScheduleCheckingForStartSponsors() {
|
|||||||
/**
|
/**
|
||||||
* Get the video info for the current tab from YouTube
|
* Get the video info for the current tab from YouTube
|
||||||
*/
|
*/
|
||||||
function getVideoInfo() {
|
async function getVideoInfo(): Promise<void> {
|
||||||
sendRequestToCustomServer('GET', "https://www.youtube.com/get_video_info?video_id=" + sponsorVideoID, function(xmlhttp) {
|
const result = await utils.asyncRequestToCustomServer("GET", "https://www.youtube.com/get_video_info?video_id=" + sponsorVideoID);
|
||||||
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
|
|
||||||
const decodedData = decodeURIComponent(xmlhttp.responseText).match(/player_response=([^&]*)/)[1];
|
if (result.ok) {
|
||||||
|
const decodedData = decodeURIComponent(result.responseText).match(/player_response=([^&]*)/)[1];
|
||||||
if (!decodedData) {
|
if (!decodedData) {
|
||||||
console.error("[SB] Failed at getting video info from YouTube.");
|
console.error("[SB] Failed at getting video info from YouTube.");
|
||||||
return;
|
return;
|
||||||
@@ -763,7 +764,6 @@ function getVideoInfo() {
|
|||||||
|
|
||||||
videoInfo = JSON.parse(decodedData);
|
videoInfo = JSON.parse(decodedData);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getYouTubeVideoID(url: string) {
|
function getYouTubeVideoID(url: string) {
|
||||||
@@ -1052,6 +1052,8 @@ function unskipSponsorTime(segment: SponsorTime) {
|
|||||||
|
|
||||||
function reskipSponsorTime(segment: SponsorTime) {
|
function reskipSponsorTime(segment: SponsorTime) {
|
||||||
video.currentTime = segment.segment[1];
|
video.currentTime = segment.segment[1];
|
||||||
|
|
||||||
|
startSponsorSchedule(true, segment.segment[1], false);
|
||||||
}
|
}
|
||||||
|
|
||||||
function createButton(baseID, title, callback, imageName, isDraggable=false): boolean {
|
function createButton(baseID, title, callback, imageName, isDraggable=false): boolean {
|
||||||
|
|||||||
Reference in New Issue
Block a user