mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-08 20:47:11 +03:00
A skip notice is now shown upon voting if one isn't already on screen
A skip notice is now shown upon voting if one isn't already on screen minor fixes
This commit is contained in:
@@ -631,7 +631,10 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
|
|||||||
|
|
||||||
reskip(buttonIndex: number, index: number, forceSeek: boolean): void {
|
reskip(buttonIndex: number, index: number, forceSeek: boolean): void {
|
||||||
this.contentContainer().reskipSponsorTime(this.segments[index], forceSeek);
|
this.contentContainer().reskipSponsorTime(this.segments[index], forceSeek);
|
||||||
|
this.reskippedMode(buttonIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
reskippedMode(buttonIndex: number): void {
|
||||||
const skipButtonStates = this.state.skipButtonStates;
|
const skipButtonStates = this.state.skipButtonStates;
|
||||||
skipButtonStates[buttonIndex] = SkipButtonState.Undo;
|
skipButtonStates[buttonIndex] = SkipButtonState.Undo;
|
||||||
|
|
||||||
|
|||||||
@@ -358,8 +358,8 @@ const syncDefaults = {
|
|||||||
nextChapterKeybind: { key: "ArrowRight", ctrl: true },
|
nextChapterKeybind: { key: "ArrowRight", ctrl: true },
|
||||||
previousChapterKeybind: { key: "ArrowLeft", ctrl: true },
|
previousChapterKeybind: { key: "ArrowLeft", ctrl: true },
|
||||||
closeSkipNoticeKeybind: { key: "Backspace" },
|
closeSkipNoticeKeybind: { key: "Backspace" },
|
||||||
downvoteKeybind: { key: "h" },
|
downvoteKeybind: { key: "h", shift: true },
|
||||||
upvoteKeybind: { key: "g" },
|
upvoteKeybind: { key: "g", shift: true },
|
||||||
|
|
||||||
categorySelections: [{
|
categorySelections: [{
|
||||||
name: "sponsor" as Category,
|
name: "sponsor" as Category,
|
||||||
|
|||||||
@@ -2532,6 +2532,23 @@ function previousChapter(): void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function handleKeybindVote(type: number): Promise<void>{
|
||||||
|
let lastSkipNotice = skipNotices[0]?.skipNoticeRef.current;
|
||||||
|
|
||||||
|
if (!lastSkipNotice) {
|
||||||
|
const lastSegment = [...sponsorTimes].reverse()?.find((s) => s.source == SponsorSourceType.Server && s.actionType != 'chapter' && (s.segment[0] <= getCurrentTime() && getCurrentTime() - (s.segment[1] || s.segment[0]) <= Config.config.skipNoticeDuration));
|
||||||
|
if (!lastSegment) return;
|
||||||
|
|
||||||
|
createSkipNotice([lastSegment], shouldAutoSkip(lastSegment), lastSegment?.segment[0], false);
|
||||||
|
lastSkipNotice = await skipNotices[0]?.waitForSkipNoticeRef();
|
||||||
|
lastSkipNotice?.reskippedMode(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
lastSkipNotice?.onMouseEnter();
|
||||||
|
vote(type,lastSkipNotice?.segments[0]?.UUID, undefined, lastSkipNotice);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
function addHotkeyListener(): void {
|
function addHotkeyListener(): void {
|
||||||
document.addEventListener("keydown", hotkeyListener);
|
document.addEventListener("keydown", hotkeyListener);
|
||||||
|
|
||||||
@@ -2621,14 +2638,10 @@ function hotkeyListener(e: KeyboardEvent): void {
|
|||||||
previousChapter();
|
previousChapter();
|
||||||
return;
|
return;
|
||||||
} else if (keybindEquals(key, upvoteKey)) {
|
} else if (keybindEquals(key, upvoteKey)) {
|
||||||
const lastSegment = [...sponsorTimes].reverse()?.find((s) => s.segment[0] <= getCurrentTime() && getCurrentTime() - (s.segment[1] || s.segment[0]) <= Config.config.skipNoticeDuration);
|
handleKeybindVote(1);
|
||||||
const lastSkipNotice = skipNotices?.find((skipNotice) => skipNotice.segments.some((segment) => segment.UUID === lastSegment.UUID))?.skipNoticeRef.current;
|
|
||||||
if (lastSegment) vote(1,lastSegment.UUID, undefined, lastSkipNotice);
|
|
||||||
return;
|
return;
|
||||||
} else if (keybindEquals(key, downvoteKey)) {
|
} else if (keybindEquals(key, downvoteKey)) {
|
||||||
const lastSegment = [...sponsorTimes].reverse()?.find((s) => s.segment[0] <= getCurrentTime() && getCurrentTime() - (s.segment[1] || s.segment[0]) <= Config.config.skipNoticeDuration);
|
handleKeybindVote(0);
|
||||||
const lastSkipNotice = skipNotices?.find((skipNotice) => skipNotice.segments.some((segment) => segment.UUID === lastSegment.UUID))?.skipNoticeRef.current;
|
|
||||||
if (lastSegment) vote(0,lastSegment.UUID, undefined, lastSkipNotice);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,6 +81,26 @@ class SkipNotice {
|
|||||||
unmutedListener(time: number): void {
|
unmutedListener(time: number): void {
|
||||||
this.skipNoticeRef?.current?.unmutedListener(time);
|
this.skipNoticeRef?.current?.unmutedListener(time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async waitForSkipNoticeRef(): Promise<SkipNoticeComponent> {
|
||||||
|
const waitForRef = () => new Promise<SkipNoticeComponent>((resolve) => {
|
||||||
|
const observer = new MutationObserver(() => {
|
||||||
|
if (this.skipNoticeRef.current) {
|
||||||
|
observer.disconnect();
|
||||||
|
resolve(this.skipNoticeRef.current);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
observer.observe(document.getElementsByClassName("sponsorSkipNoticeContainer")[0], { childList: true, subtree: true});
|
||||||
|
|
||||||
|
if (this.skipNoticeRef.current) {
|
||||||
|
observer.disconnect();
|
||||||
|
resolve(this.skipNoticeRef.current);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return this.skipNoticeRef?.current || await waitForRef();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default SkipNotice;
|
export default SkipNotice;
|
||||||
Reference in New Issue
Block a user