Stop refresh animation on popup when content script is not injected

This commit is contained in:
HanYaodong
2024-03-09 23:38:09 +08:00
parent 6c71036356
commit 25b53754ba
3 changed files with 21 additions and 7 deletions

View File

@@ -259,11 +259,11 @@ function messageListener(request: Message, sender: unknown, sendResponse: (respo
case "refreshSegments":
// update video on refresh if videoID invalid
if (!getVideoID()) {
checkVideoIDChange().then(() => {
// if still no video ID found, return an empty info to the popup
if (!getVideoID()) chrome.runtime.sendMessage({ message: "infoUpdated" });
});
checkVideoIDChange();
}
// if popup rescieves no response, or the videoID is invalid,
// it will assume the page is not a video page and stop the refresh animation
sendResponse({ hasVideo: getVideoID() != null });
// fetch segments
sponsorsLookup(false);

View File

@@ -103,7 +103,8 @@ export type MessageResponse =
| IsChannelWhitelistedResponse
| Record<string, never> // empty object response {}
| VoteResponse
| ImportSegmentsResponse;
| ImportSegmentsResponse
| RefreshSegmentsResponse;
export interface VoteResponse {
successType: number;
@@ -115,6 +116,10 @@ interface ImportSegmentsResponse {
importedSegments: SponsorTime[];
}
export interface RefreshSegmentsResponse {
hasVideo: boolean;
}
export interface TimeUpdateMessage {
message: "time";
time: number;

View File

@@ -15,6 +15,7 @@ import {
Message,
MessageResponse,
PopupMessage,
RefreshSegmentsResponse,
SponsorStartResponse,
VoteResponse,
} from "./messageTypes";
@@ -982,9 +983,17 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
stopLoadingAnimation = AnimationUtils.applyLoadingAnimation(PageElements.refreshSegmentsButton, 0.3);
}
function refreshSegments() {
async function refreshSegments() {
startLoadingAnimation();
sendTabMessage({ message: 'refreshSegments' });
const response = await sendTabMessageAsync({ message: 'refreshSegments' }) as RefreshSegmentsResponse;
if (response == null || !response.hasVideo) {
if (stopLoadingAnimation != null) {
stopLoadingAnimation();
stopLoadingAnimation = null;
}
displayNoVideo();
}
}
function skipSegment(actionType: ActionType, UUID: SegmentUUID, element?: HTMLElement): void {