Skip to content

Commit

Permalink
Fix preview bar on mobile
Browse files Browse the repository at this point in the history
Fixes #1947 and #1943
  • Loading branch information
ajayyy committed Jan 14, 2024
1 parent eede32a commit 3222afd
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 32 deletions.
31 changes: 10 additions & 21 deletions src/content.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ import { cleanPage } from "./utils/pageCleaner";
import { addCleanupListener } from "../maze-utils/src/cleanup";
import { hideDeArrowPromotion, tryShowingDeArrowPromotion } from "./dearrowPromotion";
import { asyncRequestToServer } from "./utils/requests";
import { isMobileControlsOpen } from "./utils/mobileUtils";

cleanPage();

Expand Down Expand Up @@ -457,16 +458,13 @@ function handleMobileControlsMutations(): void {
skipButtonControlBar?.updateMobileControls();

if (previewBar !== null) {
if (document.body.contains(previewBar.container)) {
const progressBarBackground = document.querySelector<HTMLElement>(".progress-bar-background");

if (progressBarBackground !== null) {
updatePreviewBarPositionMobile(progressBarBackground);
}
if (!previewBar.parent.contains(previewBar.container) && isMobileControlsOpen()) {
previewBar.createElement();
updatePreviewBar();

return;
} else {
// The container does not exist anymore, remove that old preview bar
} else if (!previewBar.parent.isConnected) {
// The parent does not exist anymore, remove that old preview bar
previewBar.remove();
previewBar = null;
}
Expand All @@ -483,13 +481,13 @@ function createPreviewBar(): void {
if (previewBar !== null) return;

const progressElementOptions = [{
// For mobile YouTube
selector: ".progress-bar-background",
isVisibleCheck: true
}, {
// For new mobile YouTube (#1287)
selector: ".progress-bar-line",
isVisibleCheck: true
}, {
// For newer mobile YouTube (Jan 2024)
selector: ".YtProgressBarProgressBarLine",
isVisibleCheck: true
}, {
// For Desktop YouTube
selector: ".ytp-progress-bar",
Expand Down Expand Up @@ -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 {
selectedSegment = UUID;
updatePreviewBar();
Expand Down
10 changes: 3 additions & 7 deletions src/js-components/previewBar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,16 +224,12 @@ class PreviewBar {
}
}

createElement(parent: HTMLElement): void {
this.parent = parent;
createElement(parent?: HTMLElement): void {
if (parent) this.parent = parent;

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.height = "var(--yt-progress-bar-height)";
} else if (!this.onInvidious) {
this.container.classList.add("sbNotInvidious");
}
Expand Down
7 changes: 3 additions & 4 deletions src/js-components/skipButtonControlBar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { SegmentUUID, SponsorTime } from "../types";
import { getSkippingText } from "../utils/categoryUtils";
import { AnimationUtils } from "../utils/animationUtils";
import { keybindToString } from "../../maze-utils/src/config";
import { isMobileControlsOpen } from "../utils/mobileUtils";

export interface SkipButtonControlBarProps {
skip: (segment: SponsorTime) => void;
Expand Down Expand Up @@ -183,10 +184,8 @@ export class SkipButtonControlBar {
}

updateMobileControls(): void {
const overlay = document.getElementById("player-control-overlay");

if (overlay && this.enabled) {
if (overlay?.classList?.contains("fadein")) {
if (this.enabled) {
if (isMobileControlsOpen()) {
this.showButton();
} else {
this.hideButton();
Expand Down
9 changes: 9 additions & 0 deletions src/utils/mobileUtils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export function isMobileControlsOpen(): boolean {
const overlay = document.getElementById("player-control-overlay");

if (overlay) {
return !!overlay?.classList?.contains("fadein");
}

return false;
}

0 comments on commit 3222afd

Please sign in to comment.