Compare commits

..

18 Commits

Author SHA1 Message Date
Ajay
f9f6ac0107 bump version 2025-07-22 20:08:34 -04:00
Ajay
133c61ffed update translations 2025-07-22 20:08:10 -04:00
Ajay
21b7507a9e Add video title as option for advanced skip settings 2025-07-22 20:07:01 -04:00
Ajay
fd459414aa Add video duration to skip rules 2025-07-22 02:08:23 -04:00
Ajay
4296ea3f85 Fix alignment of segment category names on hover 2025-07-21 04:49:08 -04:00
Ajay
92b3cda9ef Fix status of if segments were found in popup to account for disabled categories 2025-07-21 04:00:33 -04:00
Ajay
907eba3827 Fix skip to highlight button alignment on new layout 2025-07-21 03:55:40 -04:00
Ajay
86cf324d62 FIx chapter name alignment on new YouTube layout 2025-07-21 03:41:07 -04:00
Ajay
e32db21f4e Add option to hide segment creation buttons in the popup 2025-07-16 13:18:50 -04:00
Ajay
6afcc6fb3a Add link to logo author to help page 2025-07-16 02:21:05 -04:00
Ajay
e510686baa update translations 2025-07-16 00:51:47 -04:00
Ajay
330dd3cbbd bump version 2025-07-16 00:51:14 -04:00
Ajay
e9b687df6a Improve help page layout and update some text 2025-07-16 00:50:35 -04:00
Ajay
e89dfed07e Add hide segment button to submission menu 2025-07-15 02:39:28 -04:00
Ajay
435b215025 Fix unsubmitted chapters auto skipping 2025-07-15 02:14:02 -04:00
Ajay
e0165e4aac Add guidelines button to popup 2025-07-15 01:17:29 -04:00
Ajay
63f9bd5926 Fix refresh button in popup 2025-07-09 03:19:18 -04:00
Ajay
87c4758089 Fix upcoming notice being shown for disabled categories
Fixes #2296
2025-07-02 21:04:02 -04:00
18 changed files with 323 additions and 153 deletions

View File

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

View File

@@ -107,6 +107,10 @@ div:hover > #previewbar.sbNotInvidious {
transform: translateY(-1em) !important;
}
.ytp-tooltip.sponsorCategoryTooltipVisible {
transform: translateY(-1em) !important;
}
.ytp-tooltip.sponsorCategoryTooltipVisible.sponsorTwoTooltips {
transform: translateY(-2em) !important;
}
@@ -145,17 +149,17 @@ div:hover > #previewbar.sbNotInvidious {
}
.ytp-big-mode .ytp-tooltip.sponsorCategoryTooltipVisible.sponsorTwoTooltips > .ytp-tooltip-text-wrapper {
transform: translateY(1em) !important;
transform: translateY(1.75em) !important;
}
.ytp-big-mode .ytp-tooltip.sponsorCategoryTooltipVisible > .ytp-tooltip-text-wrapper > .ytp-tooltip-text {
display: block !important;
transform: translateY(1em) !important;
.ytp-big-mode .ytp-tooltip.sponsorCategoryTooltipVisible > .ytp-tooltip-text-wrapper .ytp-tooltip-text {
display: inline-block !important;
transform: translateY(0.75em) !important;
}
.ytp-big-mode .ytp-tooltip.sponsorCategoryTooltipVisible.sponsorTwoTooltips > .ytp-tooltip-text-wrapper > .ytp-tooltip-text {
display: block !important;
transform: translateY(2em) !important;
.ytp-big-mode .ytp-tooltip.sponsorCategoryTooltipVisible.sponsorTwoTooltips > .ytp-tooltip-text-wrapper .ytp-tooltip-text {
display: inline-block !important;
transform: translateY(0.75em) !important;
}
div:hover > .sponsorBlockChapterBar {
@@ -184,6 +188,10 @@ div:hover > .sponsorBlockChapterBar {
margin: auto;
}
.sbChapterVoteButton {
padding: 0 !important;
}
.playerButton {
vertical-align: top;
}
@@ -683,6 +691,14 @@ input::-webkit-inner-spin-button {
color: white;
}
.hideSegmentSubmitButton {
cursor: pointer;
margin: auto;
top: 0;
bottom: 0;
position: absolute;
}
/* Start SelectorComponent */
.sbSelector {
@@ -740,6 +756,13 @@ input::-webkit-inner-spin-button {
cursor: pointer;
display: flex;
color: white;
align-items: center;
}
/* July 2025 test UI */
.ytp-delhi-modern .skipButtonControlBarContainer {
height: 48px;
margin: auto 0;
}
.skipButtonControlBarContainer.sbhidden {
@@ -949,5 +972,5 @@ input::-webkit-inner-spin-button {
}
.sponsorblock-chapter-visible {
display: inherit !important;
display: block !important;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -21,128 +21,128 @@
<div class="container sponsorBlockPageBody">
<p class="createdBy">
<img src="https://ajay.app/newprofilepic.jpg" height="30" class="profilepiccircle"/>
<img src="../icons/newprofilepic.jpg" height="30" class="profilepiccircle"/>
Created By <a href="https://ajay.app">Ajay Ramachandran</a>
<a href="https://sponsor.ajay.app/donate" target="_blank" rel="noopener" id="sbDonate">(Donate)</a>
</p>
<p>
__MSG_helpPageThanksForInstalling__ By using this extension, you agree to the <a href="https://gist.github.com/ajayyy/aa9f8ded2b573d4f73a3ffa0ef74f796">Privacy Policy</a> and <a href="https://gist.github.com/ajayyy/9e8100f069348e0bc062641f34d6af12">Terms of Use</a>.
</p>
<p>
Come contribute, make some suggestions and help out on <a href="https://discord.gg/SponsorBlock">Discord</a> or on <a href="https://matrix.to/#/#sponsor:ajay.app?via=ajay.app&via=matrix.org&via=mozilla.org">Matrix</a>.
</p>
<a href="https://dearrow.ajay.app"
target="_blank"
id="dearrow-link"
class="dearrow-link hidden"
rel="noreferrer">
<img src="/icons/dearrow.svg"/>
<span id="dearrow-link-text">
</span>
<img src="/icons/close.png" class="close-button"/>
</a>
<p style="margin-bottom: 0; margin-top: 0" class="bigText center">__MSG_helpPageReviewOptions__</p>
<p class="smallText">
__MSG_helpPageFeatureDisclaimer__
</p>
<iframe class="optionsFrame" src="../options/options.html#embed" style="border: none"></iframe>
<h1>__MSG_helpPageHowSkippingWorks__</h1>
<p class="projectPreview">
<span class="projectPreviewImageLarge">
<img src="images/popup.png">
</span>
__MSG_helpPageHowSkippingWorks1__
<span class="help-page-flex-container">
<div class="left-sidebar">
<div class="box1">
<p>
__MSG_helpPageThanksForInstalling__ By using this extension, you agree to the <a href="https://gist.github.com/ajayyy/aa9f8ded2b573d4f73a3ffa0ef74f796">Privacy Policy</a> and <a href="https://gist.github.com/ajayyy/9e8100f069348e0bc062641f34d6af12">Terms of Use</a>.
</p>
<br/>
<br/>
__MSG_helpPageHowSkippingWorks2__
</p>
<div class="center"><img src="images/voting on notice.gif"></div>
<h1>__MSG_Submitting__</h1>
<p class="projectPreview">
<img class="projectPreviewImageLarge" src="https://i.imgur.com/A1ilk6x.gif">
__MSG_helpPageSubmitting1__
<br/>
<br/>
__MSG_helpPageSubmitting2__
</p>
<h1>__MSG_Editing__</h1>
<p class="projectPreview">
<span class="projectPreviewImageLarge">
<img src="https://wiki.sponsor.ajay.app/images/6/6a/Popup_only.png">
</span>
__MSG_helpPageEditing1__
</p>
<h1>__MSG_helpPageTooSlow__</h1>
<p>
__MSG_helpPageTooSlow1__
</p>
<h1>__MSG_helpPageCopyOfDatabase__</h1>
<p>
__MSG_helpPageCopyOfDatabase1__ <a href="https://sponsor.ajay.app/database">https://sponsor.ajay.app/database</a>. __MSG_helpPageCopyOfDatabase2__
</p>
<h1>__MSG_helpPageNews__</h1>
<p>
See <a href="https://sponsor.ajay.app/news">https://sponsor.ajay.app/news</a>.
</p>
<h1>__MSG_helpPageSourceCode__</h1>
<h4 style="display: inline">Client:</h4>
<!-- Github logo -->
<a href="https://github.com/ajayyy/SponsorBlock"><svg aria-hidden="true" version="1.1" viewBox="0 0 16 16" height="58px" style="padding-left: 15px"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a>
<h4 style="display: inline; padding-left: 20px">Server:</h4>
<!-- Github logo -->
<a href="https://github.com/ajayyy/SponsorBlockServer"><svg aria-hidden="true" version="1.1" viewBox="0 0 16 16" height="58px" style="padding-left: 15px"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a>
<h1>__MSG_Credits__</h1>
<p>
Thanks to all <a href="https://github.com/ajayyy/SponsorBlock/graphs/contributors">SponsorBlock contributors</a>,
<a href="https://github.com/ajayyy/SponsorBlockServer/graphs/contributors">SponsorBlockServer contributors</a> and
<a href="https://github.com/ajayyy/SponsorBlockSite/graphs/contributors">SponsorBlockSite contributors</a> such
as <a href="https://github.com/NDevTK">NDev</a>, <a href="https://github.com/Joe-Dowd">Joe Dowd</a>,
<a href="https://mchang.name/">Michael Chang</a> and more.
</p>
<p>The awesome <a href="https://github.com/omarroth/invidious/wiki/API">Invidious API</a> is used to grab the time the video was published.</p>
<p>Some icons made by <a href="https://www.flaticon.com/authors/gregor-cresnar" title="Gregor Cresnar">Gregor Cresnar</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> and are licensed by <a href="https://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a></p>
<p>
Come contribute, make some suggestions and help out on <a href="https://discord.gg/SponsorBlock">Discord</a> or on <a href="https://matrix.to/#/#sponsor:ajay.app?via=ajay.app&via=matrix.org&via=mozilla.org">Matrix</a>.
</p>
<a href="https://dearrow.ajay.app"
target="_blank"
id="dearrow-link"
class="dearrow-link hidden"
rel="noreferrer">
<img src="/icons/dearrow.svg"/>
<span id="dearrow-link-text">
</span>
<img src="/icons/close.png" class="close-button"/>
</a>
<div id="donate-component" class="donate-ask">
<div class="donate-text">
<img
src="../icons/newprofilepic.jpg"
alt="Ajay's avatar"
></img>
__MSG_supportSponsorBlock__
</div>
<a href="https://sponsor.ajay.app/donate" class="donate-button" target="_blank" rel="noopener">
__MSG_Donate__
</a>
</div>
</div>
<div class="box3">
<h1>__MSG_helpPageHowSkippingWorks__</h1>
<p>Some icons made by <a href="https://www.flaticon.com/authors/freepik" title="Freepik">Freepik</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> and are licensed by <a href="https://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a></p>
<p class="projectPreview">
__MSG_helpPageHowSkippingWorks2__
</p>
<p style="text-align: center;"><a href="/oss-attribution/attribution.txt">Open Source Licenses</a></p>
<div class="center"><img src="images/voting on notice.gif"></div>
<p class="projectPreview">
__MSG_helpPageHowSkippingWorks1__
</p>
<div class="center"><img style="height: 400px;" src="images/popup.png"></div>
</div>
<h1>__MSG_Submitting__</h1>
<p class="projectPreview">
__MSG_helpPageSubmitting1__
</p>
<div class="center"><img src="images/votebuttons.gif"></div>
<p class="projectPreview">
__MSG_helpPageSubmitting2__
</p>
<div class="center"><img src="images/submission menu.png"></div>
<p class="projectPreview center">
<a href="https://wiki.sponsor.ajay.app/w/Guidelines" target="_blank">__MSG_guidelines__</a>
<br/>
<a href="https://wiki.sponsor.ajay.app/w/Advice_for_submitting" target="_blank">__MSG_AdviceForSubmitting__</a>
</p>
<h1>__MSG_helpPageCopyOfDatabase__</h1>
<p>
__MSG_helpPageCopyOfDatabase1__ <a href="https://sponsor.ajay.app/database">https://sponsor.ajay.app/database</a>. __MSG_helpPageCopyOfDatabase2__
</p>
<h4 style="display: inline">Client:</h4>
<!-- Github logo -->
<a href="https://github.com/ajayyy/SponsorBlock"><svg aria-hidden="true" version="1.1" viewBox="0 0 16 16" height="58px" style="padding-left: 15px"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a>
<h4 style="display: inline; padding-left: 20px">Server:</h4>
<!-- Github logo -->
<a href="https://github.com/ajayyy/SponsorBlockServer"><svg aria-hidden="true" version="1.1" viewBox="0 0 16 16" height="58px" style="padding-left: 15px"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a>
<h1>__MSG_Credits__</h1>
<p>
Thanks to all <a href="https://github.com/ajayyy/SponsorBlock/graphs/contributors">SponsorBlock contributors</a>,
<a href="https://github.com/ajayyy/SponsorBlockServer/graphs/contributors">SponsorBlockServer contributors</a> and
<a href="https://github.com/ajayyy/SponsorBlockSite/graphs/contributors">SponsorBlockSite contributors</a> such
as <a href="https://github.com/NDevTK">NDev</a>, <a href="https://github.com/Joe-Dowd">Joe Dowd</a>,
<a href="https://mchang.name/">Michael Chang</a> and more.
</p>
<p>
Logo by <a href="https://github.com/munadikieh">Munadi Kiehl</a>
</p>
<p>Some icons made by <a href="https://www.flaticon.com/authors/gregor-cresnar" title="Gregor Cresnar">Gregor Cresnar</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> and are licensed by <a href="https://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a></p>
<p>Some icons made by <a href="https://www.flaticon.com/authors/freepik" title="Freepik">Freepik</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> and are licensed by <a href="https://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a></p>
<p style="text-align: center;"><a href="/oss-attribution/attribution.txt">Open Source Licenses</a></p>
</div>
</div>
<div class="box2">
<p style="margin-bottom: 0; margin-top: 0" class="bigText center">__MSG_helpPageReviewOptions__</p>
<p class="smallText" style="margin-bottom: 0; margin-top: 0">
__MSG_helpPageFeatureDisclaimer__
</p>
<iframe class="optionsFrame" src="../options/options.html#embed" style="border: none"></iframe>
</div>
</span>
</body>

View File

@@ -29,7 +29,11 @@ html {
}
.bigText {
font-size: 50px;
font-size: 30px;
}
.smallText {
font-size: 14px;
}
body {
@@ -46,7 +50,6 @@ body {
}
.container {
max-width: 60%;
margin: auto;
}
@@ -168,7 +171,7 @@ p,li,code,a {
.optionsFrame {
width: 100%;
height: 500px;
height: 100%;
}
.previewImage {
@@ -194,14 +197,59 @@ img {
h1,h2,h3,h4,h5,h6 {
color: var(--title);
text-align: center;
font-size: 25px;
margin: 5px 0px;
}
svg {
text-decoration: none;
}
#sbDonate {
font-size: 10px;
.donate-ask {
background-color: rgb(26, 26, 26, 0.95);
border-radius: 15px;
text-align: center;
padding: 10px;
margin: 0.7em 0px;
}
.donate-ask .donate-text {
margin-top: 10px;
margin-bottom: 10px;
display: flex;
align-items: center;
justify-content: center;
}
.donate-ask .donate-text img {
height: 2rem;
border-radius: 100%;
margin-right: 15px;
}
.donate-ask a {
text-decoration: none;
color: #eee;
border-radius: 15px;
background-color: rgb(58, 58, 58, 0.9);
padding: 10px;
transition: background-color 0.3s ease;
display: block;
width: fit-content;
margin: auto;
margin-top: 10px;
margin-bottom: 10px;
}
.donate-ask a:hover {
background-color: rgba(70, 70, 70, 0.9);
}
@media screen and (orientation:portrait) {
@@ -351,4 +399,50 @@ svg {
.hidden {
display: none;
}
.help-page-flex-container {
display: flex;
flex-direction: row;
gap: 20px;
margin-left: 20px;
margin-right: 20px;
}
.left-sidebar {
display: flex;
flex-direction: column;
flex: 1 1 50%;
}
.box2 {
flex: 1 1 50%;
}
/* Mobile */
@media only screen and (max-width: 600px) {
.box1 {
order: 1;
}
.box2 {
order: 2;
}
.box3 {
order: 3;
}
.left-sidebar {
display: contents;
}
.help-page-flex-container {
flex-direction: column;
}
.optionsFrame {
height: 500px;
}
}

View File

@@ -365,7 +365,7 @@
<div class="small-description">__MSG_showTimeWithSkipsDescription__</div>
</div>
<div data-type="toggle" data-sync="cleanPopup" data-no-safari="true">
<div data-type="toggle" data-sync="cleanPopup">
<div class="switch-container">
<label class="switch">
<input id="cleanPopup" type="checkbox" checked>
@@ -375,6 +375,20 @@
__MSG_cleanPopup__
</label>
</div>
<br/>
<div data-type="toggle" data-sync="hideSegmentCreationInPopup">
<div class="switch-container">
<label class="switch">
<input id="hideSegmentCreationInPopup" type="checkbox" checked>
<span class="slider round"></span>
</label>
<label class="switch-label" for="hideSegmentCreationInPopup">
__MSG_hideSegmentCreationInPopup__
</label>
</div>
</div>
</div>
<div data-type="toggle" data-sync="darkMode">

View File

@@ -48,7 +48,7 @@ class ChapterVoteComponent extends React.Component<ChapterVoteProps, ChapterVote
draggable="false"
title={chrome.i18n.getMessage("upvoteButtonInfo")}
onClick={(e) => this.vote(e, 1)}>
<ThumbsUpSvg className="playerButtonImage"
<ThumbsUpSvg className="playerButtonImage sbChapterVoteButton"
fill={Config.config.colorPalette.white}
width={this.state.size} height={this.state.size} />
</button>
@@ -102,7 +102,7 @@ class ChapterVoteComponent extends React.Component<ChapterVoteProps, ChapterVote
}
}}>
<ThumbsDownSvg
className="playerButtonImage"
className="playerButtonImage sbChapterVoteButton"
fill={downvoteButtonColor(this.state.segment ? [this.state.segment] : null, SkipNoticeAction.Downvote, SkipNoticeAction.Downvote)}
width={this.state.size}
height={this.state.size} />

View File

@@ -1,7 +1,7 @@
import * as React from "react";
import * as CompileConfig from "../../config.json";
import Config from "../config";
import { ActionType, Category, ChannelIDStatus, ContentContainer, SponsorTime } from "../types";
import { ActionType, Category, ChannelIDStatus, ContentContainer, SponsorHideType, SponsorTime } from "../types";
import SubmissionNoticeComponent from "./SubmissionNoticeComponent";
import { RectangleTooltip } from "../render/RectangleTooltip";
import SelectorComponent, { SelectorOption } from "./SelectorComponent";
@@ -10,6 +10,7 @@ import { getFormattedTime, getFormattedTimeToSeconds } from "../../maze-utils/sr
import { asyncRequestToServer } from "../utils/requests";
import { defaultPreviewTime } from "../utils/constants";
import { getVideo, getVideoDuration } from "../../maze-utils/src/video";
import { AnimationUtils } from "../../maze-utils/src/animationUtils";
export interface SponsorTimeEditProps {
index: number;
@@ -242,6 +243,22 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
onChange={(e) => this.actionTypeSelectionChange(e)}>
{this.getActionTypeOptions(sponsorTime)}
</select>
<img
className="voteButton hideSegmentSubmitButton"
title={chrome.i18n.getMessage("hideSegment")}
src={sponsorTime.hidden === SponsorHideType.Hidden ? chrome.runtime.getURL("icons/not_visible.svg") : chrome.runtime.getURL("icons/visible.svg")}
onClick={(e) => {
const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.4);
stopAnimation();
if (sponsorTime.hidden === SponsorHideType.Hidden) {
sponsorTime.hidden = SponsorHideType.Visible;
} else {
sponsorTime.hidden = SponsorHideType.Hidden;
}
this.saveEditTimes();
}}/>
</div>
): ""}

View File

@@ -77,6 +77,7 @@ interface SBConfig {
shownDeArrowPromotion: boolean;
showZoomToFillError2: boolean;
cleanPopup: boolean;
hideSegmentCreationInPopup: boolean;
// Used to cache calculated text color info
categoryPillColors: {
@@ -349,6 +350,7 @@ const syncDefaults = {
shownDeArrowPromotion: false,
showZoomToFillError2: true,
cleanPopup: false,
hideSegmentCreationInPopup: false,
categoryPillColors: {},

View File

@@ -712,7 +712,10 @@ async function startSponsorSchedule(includeIntersectingSegments = false, current
if (incorrectVideoCheck(videoID, currentSkip)) return;
forceVideoTime ||= Math.max(getCurrentTime(), getVirtualTime());
if ((shouldSkip(currentSkip) || sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment))) {
if ((shouldSkip(currentSkip)
|| sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment
&& segment.actionType !== ActionType.Chapter
&& segment.hidden === SponsorHideType.Visible))) {
if (forceVideoTime >= skipTime[0] - skipBuffer && (forceVideoTime < skipTime[1] || skipTime[1] < skipTime[0])) {
skipToTime({
v: getVideo(),
@@ -816,6 +819,7 @@ async function startSponsorSchedule(includeIntersectingSegments = false, current
if (Config.config.showUpcomingNotice && getCurrentTime() < skippingSegments[0].segment[0]
&& !sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)
&& [ActionType.Skip, ActionType.Mute].includes(skippingSegments[0].actionType)
&& getCategorySelection(skippingSegments[0])?.option > CategorySkipOption.ShowOverlay
&& !getVideo()?.paused) {
const maxPopupTime = 3000;
const timeUntilPopup = Math.max(0, offsetDelayTime - maxPopupTime);
@@ -1189,7 +1193,7 @@ async function sponsorsLookup(keepOldSubmissions = true, ignoreCache = false) {
const receivedSegments = segmentData.segments;
if (receivedSegments && receivedSegments.length) {
sponsorDataFound = true;
sponsorDataFound = receivedSegments.findIndex((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled) !== -1;
// Check if any old submissions should be kept
if (sponsorTimes !== null && keepOldSubmissions) {
@@ -1425,7 +1429,8 @@ function updatePreviewBar(): void {
}
sponsorTimesSubmitting.forEach((segment) => {
if (segment.actionType !== ActionType.Chapter || segment.segment.length > 1) {
if (segment.hidden === SponsorHideType.Visible
&& (segment.actionType !== ActionType.Chapter || segment.segment.length > 1)) {
previewBarSegments.push({
segment: segment.segment as [number, number],
category: segment.category,
@@ -1938,7 +1943,7 @@ function shouldAutoSkip(segment: SponsorTime): boolean {
}
function shouldSkip(segment: SponsorTime): boolean {
return (segment.actionType !== ActionType.Full
return segment.hidden === SponsorHideType.Visible && (segment.actionType !== ActionType.Full
&& getCategorySelection(segment)?.option > CategorySkipOption.ShowOverlay)
|| (Config.config.autoSkipOnMusicVideos && sponsorTimes?.some((s) => s.category === "music_offtopic")
&& segment.actionType === ActionType.Skip)
@@ -2133,6 +2138,7 @@ function updateSponsorTimesSubmitting(getFromConfig = true) {
category: segmentTime.category,
actionType: segmentTime.actionType,
description: segmentTime.description,
hidden: segmentTime.hidden,
source: segmentTime.source
});
}

View File

@@ -47,6 +47,6 @@ async function init() {
}
if (!showDonationLink()) {
document.getElementById("sbDonate").style.display = "none";
document.getElementById("donate-component").style.display = "none";
}
}

View File

@@ -103,15 +103,18 @@ export const PopupComponent = () => {
<button id="refreshSegmentsButton" title={chrome.i18n.getMessage("refreshSegments")} onClick={(e) => {
const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.3);
loadSegments({
updating: true,
setStatus,
setChannelWhitelisted,
setVideoID,
setCurrentTime,
setSegments,
setLoopedChapter
}).then(() => stopAnimation());
sendMessage({ message: "refreshSegments" }).then(() => {
loadSegments({
updating: true,
setStatus,
setChannelWhitelisted,
setVideoID,
setCurrentTime,
setSegments,
setLoopedChapter
}).then(() => stopAnimation());
});
}}>
<img src="/icons/refresh.svg" alt="Refresh icon" id="refreshSegments" />
</button>
@@ -217,7 +220,7 @@ export const PopupComponent = () => {
}
{
!Config.config.cleanPopup &&
!Config.config.cleanPopup && !Config.config.hideSegmentCreationInPopup &&
<SegmentSubmissionComponent
videoID={videoID || ""}
status={status.status}
@@ -262,6 +265,10 @@ export const PopupComponent = () => {
<a href="https://matrix.to/#/#sponsor:ajay.app?via=ajay.app&via=matrix.org&via=mozilla.org" target="_blank" rel="noreferrer">
Matrix
</a>
<a href="https://wiki.sponsor.ajay.app/w/Guidelines" target="_blank" rel="noreferrer">
{chrome.i18n.getMessage("guidelines")}
</a>
<br />
<a id="debugLogs"
onClick={async () => {
const logs = await sendMessage({ message: "getLogs" }) as LogResponse;

View File

@@ -237,7 +237,7 @@ function SegmentListItem({ segment, videoID, currentTime, isVip, startingLooped,
&& [SponsorHideType.Visible, SponsorHideType.Hidden].includes(segment.hidden)) &&
<img
className="voteButton"
title="Hide Segment"
title={chrome.i18n.getMessage("hideSegment")}
src={hidden === SponsorHideType.Hidden ? chrome.runtime.getURL("icons/not_visible.svg") : chrome.runtime.getURL("icons/visible.svg")}
onClick={(e) => {
const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.4);

View File

@@ -1,3 +1,4 @@
import { getCurrentPageTitle } from "../../maze-utils/src/elements";
import { getChannelIDInfo, getVideoDuration } from "../../maze-utils/src/video";
import Config from "../config";
import { CategorySelection, CategorySkipOption, SponsorSourceType, SponsorTime } from "../types";
@@ -19,7 +20,9 @@ export enum SkipRuleAttribute {
Description = "chapter.name",
Source = "chapter.source",
ChannelID = "channel.id",
ChannelName = "channel.name"
ChannelName = "channel.name",
VideoDuration = "video.duration",
Title = "video.title"
}
export enum SkipRuleOperator {
@@ -116,6 +119,10 @@ function getSkipRuleValue(segment: SponsorTime | VideoLabelsCacheData, rule: Adv
case SkipRuleAttribute.ChannelName:
getChannelIDInfo()
return getChannelIDInfo().author;
case SkipRuleAttribute.VideoDuration:
return getVideoDuration();
case SkipRuleAttribute.Title:
return getCurrentPageTitle() || "";
default:
return undefined;
}