Compare commits

...

10 Commits
5.5 ... 5.5.2

Author SHA1 Message Date
Ajay
b3b5d46e4e bump version 2024-01-21 15:57:35 -05:00
Ajay
c996680a58 Fix category selection changes not saving 2024-01-21 15:57:22 -05:00
Ajay
ade4654ae0 bump version 2024-01-21 14:26:27 -05:00
Ajay
4e9e6282f6 update translations 2024-01-21 14:26:16 -05:00
Ajay
783326afca Use runtime.getURL 2024-01-21 13:51:32 -05:00
Ajay
8dfd06919b Only require a preview for skip and mute segments 2024-01-21 13:40:01 -05:00
Ajay
50ee690717 Only prevent scrolling while editing 2024-01-21 13:37:29 -05:00
Ajay
74aebd32a7 Prevent zooming when trying to scroll to edit times 2024-01-21 13:31:45 -05:00
Ajay
e489d0f913 Fix german title not being shortened 2024-01-16 18:39:29 -05:00
Ajay
814df46521 Don't warn about using the word intro in chapter names 2024-01-16 18:21:44 -05:00
11 changed files with 37 additions and 26 deletions

View File

@@ -1,7 +1,7 @@
{ {
"name": "__MSG_fullName__", "name": "__MSG_fullName__",
"short_name": "SponsorBlock", "short_name": "SponsorBlock",
"version": "5.5", "version": "5.5.2",
"default_locale": "en", "default_locale": "en",
"description": "__MSG_Description__", "description": "__MSG_Description__",
"homepage_url": "https://sponsor.ajay.app", "homepage_url": "https://sponsor.ajay.app",

View File

@@ -123,7 +123,7 @@ chrome.runtime.onInstalled.addListener(function () {
// If there is no userID, then it is the first install. // If there is no userID, then it is the first install.
if (!userID && !Config.local.alreadyInstalled){ if (!userID && !Config.local.alreadyInstalled){
//open up the install page //open up the install page
chrome.tabs.create({url: chrome.extension.getURL("/help/index.html")}); chrome.tabs.create({url: chrome.runtime.getURL("/help/index.html")});
//generate a userID //generate a userID
const newUserID = generateUserID(); const newUserID = generateUserID();
@@ -137,7 +137,7 @@ chrome.runtime.onInstalled.addListener(function () {
if (Config.config.supportInvidious) { if (Config.config.supportInvidious) {
if (!(await utils.containsInvidiousPermission())) { if (!(await utils.containsInvidiousPermission())) {
chrome.tabs.create({url: chrome.extension.getURL("/permissions/index.html")}); chrome.tabs.create({url: chrome.runtime.getURL("/permissions/index.html")});
} }
} }
}, 1500); }, 1500);

View File

@@ -53,7 +53,7 @@ class CategoryPillComponent extends React.Component<CategoryPillProps, CategoryP
<span className="sponsorBlockCategoryPillTitleSection"> <span className="sponsorBlockCategoryPillTitleSection">
<img className="sponsorSkipLogo sponsorSkipObject" <img className="sponsorSkipLogo sponsorSkipObject"
src={chrome.extension.getURL("icons/IconSponsorBlocker256px.png")}> src={chrome.runtime.getURL("icons/IconSponsorBlocker256px.png")}>
</img> </img>
{ {
@@ -86,7 +86,7 @@ class CategoryPillComponent extends React.Component<CategoryPillProps, CategoryP
)} )}
{/* Close Button */} {/* Close Button */}
<img src={chrome.extension.getURL("icons/close.png")} <img src={chrome.runtime.getURL("icons/close.png")}
className="categoryPillClose" className="categoryPillClose"
onClick={() => { onClick={() => {
this.setState({ show: false }); this.setState({ show: false });

View File

@@ -207,7 +207,7 @@ class NoticeComponent extends React.Component<NoticeProps, NoticeState> {
{/* Close button */} {/* Close button */}
<img src={chrome.extension.getURL("icons/close.png")} <img src={chrome.runtime.getURL("icons/close.png")}
className={"sponsorSkipObject sponsorSkipNoticeButton sponsorSkipNoticeCloseButton sponsorSkipNoticeRightButton" className={"sponsorSkipObject sponsorSkipNoticeButton sponsorSkipNoticeCloseButton sponsorSkipNoticeRightButton"
+ (this.props.biggerCloseButton ? " biggerCloseButton" : "")} + (this.props.biggerCloseButton ? " biggerCloseButton" : "")}
onClick={() => this.close()}> onClick={() => this.close()}>

View File

@@ -34,7 +34,7 @@ export interface SponsorTimeEditState {
chapterNameSelectorHovering: boolean; chapterNameSelectorHovering: boolean;
} }
const categoryNamesGrams: string[] = [].concat(...CompileConfig.categoryList.filter((name) => name !== "chapter") const categoryNamesGrams: string[] = [].concat(...CompileConfig.categoryList.filter((name) => !["chapter", "intro"].includes(name))
.map((name) => chrome.i18n.getMessage("category_" + name).split(/\/|\s|-/))); .map((name) => chrome.i18n.getMessage("category_" + name).split(/\/|\s|-/)));
class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, SponsorTimeEditState> { class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, SponsorTimeEditState> {
@@ -81,13 +81,15 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
componentDidMount(): void { componentDidMount(): void {
// Prevent inputs from triggering key events // Prevent inputs from triggering key events
document.getElementById("sponsorTimeEditContainer" + this.idSuffix).addEventListener('keydown', function (event) { document.getElementById("sponsorTimeEditContainer" + this.idSuffix).addEventListener('keydown', (e) => {
event.stopPropagation(); e.stopPropagation();
}); });
// Prevent scrolling while changing times // Prevent scrolling while changing times
document.getElementById("sponsorTimesContainer" + this.idSuffix).addEventListener('wheel', function (event) { document.getElementById("sponsorTimesContainer" + this.idSuffix).addEventListener('wheel', (e) => {
event.preventDefault(); if (this.state.editing) {
e.preventDefault();
}
}, {passive: false}); }, {passive: false});
// Add as a config listener // Add as a config listener
@@ -221,7 +223,7 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
target="_blank" rel="noreferrer"> target="_blank" rel="noreferrer">
<img id={"sponsorTimeCategoriesHelpButton" + this.idSuffix} <img id={"sponsorTimeCategoriesHelpButton" + this.idSuffix}
className="helpButton" className="helpButton"
src={chrome.extension.getURL("icons/help.svg")} src={chrome.runtime.getURL("icons/help.svg")}
title={chrome.i18n.getMessage("categoryGuidelines")} /> title={chrome.i18n.getMessage("categoryGuidelines")} />
</a> </a>
</div> </div>

View File

@@ -69,6 +69,13 @@ class SubmissionNoticeComponent extends React.Component<SubmissionNoticeProps, S
this.videoObserver.observe(this.contentContainer().v, { this.videoObserver.observe(this.contentContainer().v, {
attributes: true attributes: true
}); });
// Prevent zooming while changing times
document.getElementById("sponsorSkipNoticeMiddleRow" + this.state.idSuffix).addEventListener('wheel', function (event) {
if (event.ctrlKey) {
event.preventDefault();
}
}, {passive: false});
} }
componentWillUnmount(): void { componentWillUnmount(): void {
@@ -100,7 +107,7 @@ class SubmissionNoticeComponent extends React.Component<SubmissionNoticeProps, S
onClick={() => this.sortSegments()} onClick={() => this.sortSegments()}
title={chrome.i18n.getMessage("sortSegments")} title={chrome.i18n.getMessage("sortSegments")}
key="sortButton" key="sortButton"
src={chrome.extension.getURL("icons/sort.svg")}> src={chrome.runtime.getURL("icons/sort.svg")}>
</img>; </img>;
const exportButton = const exportButton =
<img id={"sponsorSkipExportButton" + this.state.idSuffix} <img id={"sponsorSkipExportButton" + this.state.idSuffix}
@@ -108,7 +115,7 @@ class SubmissionNoticeComponent extends React.Component<SubmissionNoticeProps, S
onClick={() => this.exportSegments()} onClick={() => this.exportSegments()}
title={chrome.i18n.getMessage("exportSegments")} title={chrome.i18n.getMessage("exportSegments")}
key="exportButton" key="exportButton"
src={chrome.extension.getURL("icons/export.svg")}> src={chrome.runtime.getURL("icons/export.svg")}>
</img>; </img>;
return ( return (
<NoticeComponent noticeTitle={this.state.noticeTitle} <NoticeComponent noticeTitle={this.state.noticeTitle}

View File

@@ -158,7 +158,7 @@ class CategorySkipOptionsComponent extends React.Component<CategorySkipOptionsPr
}); });
} }
Config.forceLocalUpdate("categorySelections"); Config.forceSyncUpdate("categorySelections");
} }
getCategorySkipOptions(): JSX.Element[] { getCategorySkipOptions(): JSX.Element[] {

View File

@@ -1768,7 +1768,7 @@ function createButton(baseID: string, title: string, callback: () => void, image
newButton.draggable = isDraggable; newButton.draggable = isDraggable;
newButtonImage.id = baseID + "Image"; newButtonImage.id = baseID + "Image";
newButtonImage.className = "playerButtonImage"; newButtonImage.className = "playerButtonImage";
newButtonImage.src = chrome.extension.getURL("icons/" + imageName); newButtonImage.src = chrome.runtime.getURL("icons/" + imageName);
// Append image to button // Append image to button
newButton.appendChild(newButtonImage); newButton.appendChild(newButtonImage);
@@ -1867,10 +1867,10 @@ function updateEditButtonsOnPlayer(): void {
if (buttonsEnabled) { if (buttonsEnabled) {
if (creatingSegment) { if (creatingSegment) {
playerButtons.startSegment.image.src = chrome.extension.getURL("icons/PlayerStopIconSponsorBlocker.svg"); playerButtons.startSegment.image.src = chrome.runtime.getURL("icons/PlayerStopIconSponsorBlocker.svg");
playerButtons.startSegment.button.setAttribute("title", chrome.i18n.getMessage("sponsorEnd")); playerButtons.startSegment.button.setAttribute("title", chrome.i18n.getMessage("sponsorEnd"));
} else { } else {
playerButtons.startSegment.image.src = chrome.extension.getURL("icons/PlayerStartIconSponsorBlocker.svg"); playerButtons.startSegment.image.src = chrome.runtime.getURL("icons/PlayerStartIconSponsorBlocker.svg");
playerButtons.startSegment.button.setAttribute("title", chrome.i18n.getMessage("sponsorStart")); playerButtons.startSegment.button.setAttribute("title", chrome.i18n.getMessage("sponsorStart"));
} }
} }
@@ -2048,7 +2048,7 @@ function openInfoMenu() {
} }
} }
}); });
frame.src = chrome.extension.getURL("popup.html"); frame.src = chrome.runtime.getURL("popup.html");
popup.appendChild(frame); popup.appendChild(frame);
const elemHasChild = (elements: NodeListOf<HTMLElement>): Element => { const elemHasChild = (elements: NodeListOf<HTMLElement>): Element => {
@@ -2266,13 +2266,15 @@ async function sendSubmitMessage() {
return; return;
} }
if (!previewedSegment) { if (!previewedSegment
&& !sponsorTimesSubmitting.every((segment) =>
[ActionType.Full, ActionType.Chapter, ActionType.Poi].includes(segment.actionType))) {
alert(`${chrome.i18n.getMessage("previewSegmentRequired")} ${keybindToString(Config.config.previewKeybind)}`); alert(`${chrome.i18n.getMessage("previewSegmentRequired")} ${keybindToString(Config.config.previewKeybind)}`);
return; return;
} }
// Add loading animation // Add loading animation
playerButtons.submit.image.src = chrome.extension.getURL("icons/PlayerUploadIconSponsorBlocker.svg"); playerButtons.submit.image.src = chrome.runtime.getURL("icons/PlayerUploadIconSponsorBlocker.svg");
const stopAnimation = AnimationUtils.applyLoadingAnimation(playerButtons.submit.button, 1, () => updateEditButtonsOnPlayer()); const stopAnimation = AnimationUtils.applyLoadingAnimation(playerButtons.submit.button, 1, () => updateEditButtonsOnPlayer());
//check if a sponsor exceeds the duration of the video //check if a sponsor exceeds the duration of the video
@@ -2347,7 +2349,7 @@ async function sendSubmitMessage() {
} else { } else {
// Show that the upload failed // Show that the upload failed
playerButtons.submit.button.style.animation = "unset"; playerButtons.submit.button.style.animation = "unset";
playerButtons.submit.image.src = chrome.extension.getURL("icons/PlayerUploadFailedIconSponsorBlocker.svg"); playerButtons.submit.image.src = chrome.runtime.getURL("icons/PlayerUploadFailedIconSponsorBlocker.svg");
if (response.status === 403 && response.responseText.startsWith("Submission rejected due to a tip from a moderator.")) { if (response.status === 403 && response.responseText.startsWith("Submission rejected due to a tip from a moderator.")) {
openWarningDialog(skipNoticeContentContainer); openWarningDialog(skipNoticeContentContainer);
@@ -2531,7 +2533,7 @@ function addCSS() {
fileref.rel = "stylesheet"; fileref.rel = "stylesheet";
fileref.type = "text/css"; fileref.type = "text/css";
fileref.href = chrome.extension.getURL(file); fileref.href = chrome.runtime.getURL(file);
head.appendChild(fileref); head.appendChild(fileref);
} }

View File

@@ -59,7 +59,7 @@ export class RectangleTooltip {
className="sponsorBlockRectangleTooltip" > className="sponsorBlockRectangleTooltip" >
<div> <div>
<img className="sponsorSkipLogo sponsorSkipObject" <img className="sponsorSkipLogo sponsorSkipObject"
src={chrome.extension.getURL("icons/IconSponsorBlocker256px.png")}> src={chrome.runtime.getURL("icons/IconSponsorBlocker256px.png")}>
</img> </img>
<span className="sponsorSkipObject"> <span className="sponsorSkipObject">
{this.text + (props.link ? ". " : "")} {this.text + (props.link ? ". " : "")}

View File

@@ -160,7 +160,7 @@ module.exports = env => {
if (path.match(/(\/|\\)_locales(\/|\\).+/)) { if (path.match(/(\/|\\)_locales(\/|\\).+/)) {
const parsed = JSON.parse(content.toString()); const parsed = JSON.parse(content.toString());
if (env.browser.toLowerCase() === "safari") { if (env.browser.toLowerCase() === "safari") {
parsed.fullName.message = parsed.fullName.message.match(/^.+(?= -)/)?.[0] || parsed.fullName.message; parsed.fullName.message = parsed.fullName.message.match(/^.+(?= [-])/)?.[0] || parsed.fullName.message;
if (parsed.fullName.message.length > 50) { if (parsed.fullName.message.length > 50) {
parsed.fullName.message = parsed.fullName.message.slice(0, 47) + "..."; parsed.fullName.message = parsed.fullName.message.slice(0, 47) + "...";
} }