mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-06 11:37:02 +03:00
Merge pull request #1983 from HanYaodong/dev
[Fix #1979] Stop Refresh Animation on Popup When Content Script is Not Injected
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
21
src/popup.ts
21
src/popup.ts
@@ -15,6 +15,7 @@ import {
|
||||
Message,
|
||||
MessageResponse,
|
||||
PopupMessage,
|
||||
RefreshSegmentsResponse,
|
||||
SponsorStartResponse,
|
||||
VoteResponse,
|
||||
} from "./messageTypes";
|
||||
@@ -459,14 +460,13 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||
stopLoadingAnimation = null;
|
||||
}
|
||||
|
||||
if (chrome.runtime.lastError) {
|
||||
if (chrome.runtime.lastError || request == undefined || request.found == undefined) {
|
||||
//This page doesn't have the injected content script, or at least not yet
|
||||
// Or if the request is empty, meaning the current page is not YouTube or a video page
|
||||
displayNoVideo();
|
||||
return;
|
||||
}
|
||||
|
||||
// if request has no field other than message, then the page currently being browsed is not YouTube
|
||||
if (request.found != undefined) {
|
||||
//remove loading text
|
||||
PageElements.mainControls.style.display = "block";
|
||||
if (request.onMobileYouTube) PageElements.mainControls.classList.add("hidden");
|
||||
@@ -490,9 +490,6 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||
|
||||
PageElements.issueReporterImportExport.classList.remove("hidden");
|
||||
}
|
||||
} else {
|
||||
displayNoVideo();
|
||||
}
|
||||
|
||||
//see if whitelist button should be swapped
|
||||
const response = await sendTabMessageAsync({ message: 'isChannelWhitelisted' }) as IsChannelWhitelistedResponse;
|
||||
@@ -982,9 +979,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 {
|
||||
|
||||
Reference in New Issue
Block a user