Fix segment hiding/unhiding

This commit is contained in:
mini-bomba
2025-09-19 15:49:26 +02:00
parent 1da5f33d72
commit 808c3718a8

View File

@@ -146,18 +146,27 @@ function SegmentListItem({ segment, videoID, currentTime, isVip, loopedChapter,
sendMessage: (request: Message) => Promise<MessageResponse>; sendMessage: (request: Message) => Promise<MessageResponse>;
}) { }) {
const [voteMessage, setVoteMessage] = React.useState<string | null>(null); const [voteMessage, setVoteMessage] = React.useState<string | null>(null);
const [hidden, setHidden] = React.useState(segment.hidden || SponsorHideType.Visible); const [hidden, setHidden] = React.useState(segment.hidden ?? SponsorHideType.Visible); // undefined ?? undefined lol
const [isLooped, setIsLooped] = React.useState(loopedChapter === segment.UUID); const [isLooped, setIsLooped] = React.useState(loopedChapter === segment.UUID);
let extraInfo = ""; let extraInfo: string;
if (segment.hidden === SponsorHideType.Downvoted) { switch (hidden) {
// This one is downvoted case SponsorHideType.Visible:
extraInfo = "";
break;
case SponsorHideType.Downvoted:
extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDownvote") + ")"; extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDownvote") + ")";
} else if (segment.hidden === SponsorHideType.MinimumDuration) { break;
// This one is too short case SponsorHideType.MinimumDuration:
extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDuration") + ")"; extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDuration") + ")";
} else if (segment.hidden === SponsorHideType.Hidden) { break;
case SponsorHideType.Hidden:
extraInfo = " (" + chrome.i18n.getMessage("manuallyHidden") + ")"; extraInfo = " (" + chrome.i18n.getMessage("manuallyHidden") + ")";
break;
default:
// hidden satisfies never; // need to upgrade TS
console.warn(`[SB] Unhandled variant of SponsorHideType in SegmentListItem: ${hidden}`);
extraInfo = "";
} }
return ( return (
@@ -279,7 +288,7 @@ function SegmentListItem({ segment, videoID, currentTime, isVip, loopedChapter,
{ {
(segment.actionType === ActionType.Skip || segment.actionType === ActionType.Mute (segment.actionType === ActionType.Skip || segment.actionType === ActionType.Mute
|| segment.actionType === ActionType.Poi || segment.actionType === ActionType.Poi
&& [SponsorHideType.Visible, SponsorHideType.Hidden].includes(segment.hidden)) && && [SponsorHideType.Visible, SponsorHideType.Hidden].includes(hidden)) &&
<img <img
className="voteButton" className="voteButton"
title={chrome.i18n.getMessage("hideSegment")} title={chrome.i18n.getMessage("hideSegment")}
@@ -288,17 +297,11 @@ function SegmentListItem({ segment, videoID, currentTime, isVip, loopedChapter,
const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.4); const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.4);
stopAnimation(); stopAnimation();
if (segment.hidden === SponsorHideType.Hidden) { const newState = hidden === SponsorHideType.Hidden ? SponsorHideType.Visible : SponsorHideType.Hidden;
segment.hidden = SponsorHideType.Visible; setHidden(newState);
setHidden(SponsorHideType.Visible);
} else {
segment.hidden = SponsorHideType.Hidden;
setHidden(SponsorHideType.Hidden);
}
sendMessage({ sendMessage({
message: "hideSegment", message: "hideSegment",
type: segment.hidden, type: newState,
UUID: segment.UUID UUID: segment.UUID
}); });
}}/> }}/>