Fix preview bar on mobile

Fixes #1947 and #1943
This commit is contained in:
Ajay
2024-01-14 14:03:05 -05:00
parent eede32aa7e
commit 3222afd8b4
4 changed files with 25 additions and 32 deletions

View File

@@ -47,6 +47,7 @@ import { cleanPage } from "./utils/pageCleaner";
import { addCleanupListener } from "../maze-utils/src/cleanup"; import { addCleanupListener } from "../maze-utils/src/cleanup";
import { hideDeArrowPromotion, tryShowingDeArrowPromotion } from "./dearrowPromotion"; import { hideDeArrowPromotion, tryShowingDeArrowPromotion } from "./dearrowPromotion";
import { asyncRequestToServer } from "./utils/requests"; import { asyncRequestToServer } from "./utils/requests";
import { isMobileControlsOpen } from "./utils/mobileUtils";
cleanPage(); cleanPage();
@@ -457,16 +458,13 @@ function handleMobileControlsMutations(): void {
skipButtonControlBar?.updateMobileControls(); skipButtonControlBar?.updateMobileControls();
if (previewBar !== null) { if (previewBar !== null) {
if (document.body.contains(previewBar.container)) { if (!previewBar.parent.contains(previewBar.container) && isMobileControlsOpen()) {
const progressBarBackground = document.querySelector<HTMLElement>(".progress-bar-background"); previewBar.createElement();
updatePreviewBar();
if (progressBarBackground !== null) {
updatePreviewBarPositionMobile(progressBarBackground);
}
return; return;
} else { } else if (!previewBar.parent.isConnected) {
// The container does not exist anymore, remove that old preview bar // The parent does not exist anymore, remove that old preview bar
previewBar.remove(); previewBar.remove();
previewBar = null; previewBar = null;
} }
@@ -483,13 +481,13 @@ function createPreviewBar(): void {
if (previewBar !== null) return; if (previewBar !== null) return;
const progressElementOptions = [{ const progressElementOptions = [{
// For mobile YouTube
selector: ".progress-bar-background",
isVisibleCheck: true
}, {
// For new mobile YouTube (#1287) // For new mobile YouTube (#1287)
selector: ".progress-bar-line", selector: ".progress-bar-line",
isVisibleCheck: true isVisibleCheck: true
}, {
// For newer mobile YouTube (Jan 2024)
selector: ".YtProgressBarProgressBarLine",
isVisibleCheck: true
}, { }, {
// For Desktop YouTube // For Desktop YouTube
selector: ".ytp-progress-bar", selector: ".ytp-progress-bar",
@@ -1314,15 +1312,6 @@ function startSkipScheduleCheckingForStartSponsors() {
} }
} }
/**
* This function is required on mobile YouTube and will keep getting called whenever the preview bar disapears
*/
function updatePreviewBarPositionMobile(parent: HTMLElement) {
if (document.getElementById("previewbar") === null) {
previewBar.createElement(parent);
}
}
function selectSegment(UUID: SegmentUUID): void { function selectSegment(UUID: SegmentUUID): void {
selectedSegment = UUID; selectedSegment = UUID;
updatePreviewBar(); updatePreviewBar();

View File

@@ -224,16 +224,12 @@ class PreviewBar {
} }
} }
createElement(parent: HTMLElement): void { createElement(parent?: HTMLElement): void {
this.parent = parent; if (parent) this.parent = parent;
if (this.onMobileYouTube) { if (this.onMobileYouTube) {
if (parent.classList.contains("progress-bar-background")) {
parent.style.backgroundColor = "rgba(255, 255, 255, 0.3)";
parent.style.opacity = "1";
}
this.container.style.transform = "none"; this.container.style.transform = "none";
this.container.style.height = "var(--yt-progress-bar-height)";
} else if (!this.onInvidious) { } else if (!this.onInvidious) {
this.container.classList.add("sbNotInvidious"); this.container.classList.add("sbNotInvidious");
} }

View File

@@ -3,6 +3,7 @@ import { SegmentUUID, SponsorTime } from "../types";
import { getSkippingText } from "../utils/categoryUtils"; import { getSkippingText } from "../utils/categoryUtils";
import { AnimationUtils } from "../utils/animationUtils"; import { AnimationUtils } from "../utils/animationUtils";
import { keybindToString } from "../../maze-utils/src/config"; import { keybindToString } from "../../maze-utils/src/config";
import { isMobileControlsOpen } from "../utils/mobileUtils";
export interface SkipButtonControlBarProps { export interface SkipButtonControlBarProps {
skip: (segment: SponsorTime) => void; skip: (segment: SponsorTime) => void;
@@ -183,10 +184,8 @@ export class SkipButtonControlBar {
} }
updateMobileControls(): void { updateMobileControls(): void {
const overlay = document.getElementById("player-control-overlay"); if (this.enabled) {
if (isMobileControlsOpen()) {
if (overlay && this.enabled) {
if (overlay?.classList?.contains("fadein")) {
this.showButton(); this.showButton();
} else { } else {
this.hideButton(); this.hideButton();

9
src/utils/mobileUtils.ts Normal file
View File

@@ -0,0 +1,9 @@
export function isMobileControlsOpen(): boolean {
const overlay = document.getElementById("player-control-overlay");
if (overlay) {
return !!overlay?.classList?.contains("fadein");
}
return false;
}