Skip to content

Commit 808c371

Browse files
committed
Fix segment hiding/unhiding
1 parent 1da5f33 commit 808c371

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

src/popup/SegmentListComponent.tsx

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -146,18 +146,27 @@ function SegmentListItem({ segment, videoID, currentTime, isVip, loopedChapter,
146146
sendMessage: (request: Message) => Promise<MessageResponse>;
147147
}) {
148148
const [voteMessage, setVoteMessage] = React.useState<string | null>(null);
149-
const [hidden, setHidden] = React.useState(segment.hidden || SponsorHideType.Visible);
149+
const [hidden, setHidden] = React.useState(segment.hidden ?? SponsorHideType.Visible); // undefined ?? undefined lol
150150
const [isLooped, setIsLooped] = React.useState(loopedChapter === segment.UUID);
151151

152-
let extraInfo = "";
153-
if (segment.hidden === SponsorHideType.Downvoted) {
154-
// This one is downvoted
155-
extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDownvote") + ")";
156-
} else if (segment.hidden === SponsorHideType.MinimumDuration) {
157-
// This one is too short
158-
extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDuration") + ")";
159-
} else if (segment.hidden === SponsorHideType.Hidden) {
160-
extraInfo = " (" + chrome.i18n.getMessage("manuallyHidden") + ")";
152+
let extraInfo: string;
153+
switch (hidden) {
154+
case SponsorHideType.Visible:
155+
extraInfo = "";
156+
break;
157+
case SponsorHideType.Downvoted:
158+
extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDownvote") + ")";
159+
break;
160+
case SponsorHideType.MinimumDuration:
161+
extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDuration") + ")";
162+
break;
163+
case SponsorHideType.Hidden:
164+
extraInfo = " (" + chrome.i18n.getMessage("manuallyHidden") + ")";
165+
break;
166+
default:
167+
// hidden satisfies never; // need to upgrade TS
168+
console.warn(`[SB] Unhandled variant of SponsorHideType in SegmentListItem: ${hidden}`);
169+
extraInfo = "";
161170
}
162171

163172
return (
@@ -279,7 +288,7 @@ function SegmentListItem({ segment, videoID, currentTime, isVip, loopedChapter,
279288
{
280289
(segment.actionType === ActionType.Skip || segment.actionType === ActionType.Mute
281290
|| segment.actionType === ActionType.Poi
282-
&& [SponsorHideType.Visible, SponsorHideType.Hidden].includes(segment.hidden)) &&
291+
&& [SponsorHideType.Visible, SponsorHideType.Hidden].includes(hidden)) &&
283292
<img
284293
className="voteButton"
285294
title={chrome.i18n.getMessage("hideSegment")}
@@ -288,17 +297,11 @@ function SegmentListItem({ segment, videoID, currentTime, isVip, loopedChapter,
288297
const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.4);
289298
stopAnimation();
290299

291-
if (segment.hidden === SponsorHideType.Hidden) {
292-
segment.hidden = SponsorHideType.Visible;
293-
setHidden(SponsorHideType.Visible);
294-
} else {
295-
segment.hidden = SponsorHideType.Hidden;
296-
setHidden(SponsorHideType.Hidden);
297-
}
298-
300+
const newState = hidden === SponsorHideType.Hidden ? SponsorHideType.Visible : SponsorHideType.Hidden;
301+
setHidden(newState);
299302
sendMessage({
300303
message: "hideSegment",
301-
type: segment.hidden,
304+
type: newState,
302305
UUID: segment.UUID
303306
});
304307
}}/>

0 commit comments

Comments
 (0)