Browse Source

Add safe area to next episode button, clean up debugging stuff, disable thumbnails on Safari, fix lightbar on landscape

Co-authored-by: mrjvs <mistrjvs@gmail.com>
pull/525/head
Jip Fr 2 years ago
parent
commit
b5cb432241
  1. 2
      src/components/player/atoms/NextEpisodeButton.tsx
  2. 17
      src/components/player/internals/ThumbnailScraper.tsx
  3. 4
      src/components/utils/Lightbar.tsx

2
src/components/player/atoms/NextEpisodeButton.tsx

@ -88,7 +88,7 @@ export function NextEpisodeButton(props: { @@ -88,7 +88,7 @@ export function NextEpisodeButton(props: {
<Transition
animation={animation}
show={show}
className="absolute right-12 bottom-0"
className="absolute right-[calc(3rem+env(safe-area-inset-right))] bottom-0"
>
<div
className={classNames([

17
src/components/player/internals/ThumbnailScraper.tsx

@ -5,6 +5,7 @@ import { playerStatus } from "@/stores/player/slices/source"; @@ -5,6 +5,7 @@ import { playerStatus } from "@/stores/player/slices/source";
import { ThumbnailImage } from "@/stores/player/slices/thumbnails";
import { usePlayerStore } from "@/stores/player/store";
import { LoadableSource, selectQuality } from "@/stores/player/utils/qualities";
import { isSafari } from "@/utils/detectFeatures";
function makeQueue(layers: number): number[] {
const output = [0, 1];
@ -39,11 +40,9 @@ class ThumnbnailWorker { @@ -39,11 +40,9 @@ class ThumnbnailWorker {
}
start(source: LoadableSource) {
if (isSafari) return false;
const el = document.createElement("video");
el.setAttribute("muted", "true");
// ! Remove before merging
el.setAttribute("controls", "true");
el.setAttribute("playsinline", "true");
const canvas = document.createElement("canvas");
this.hls = new Hls();
if (source.type === "mp4") {
@ -69,8 +68,6 @@ class ThumnbnailWorker { @@ -69,8 +68,6 @@ class ThumnbnailWorker {
private async initVideo() {
if (!this.videoEl || !this.canvasEl) return;
// ! Remove before merging
document.body.appendChild(this.videoEl);
await new Promise((resolve, reject) => {
this.videoEl?.addEventListener("loadedmetadata", resolve);
this.videoEl?.addEventListener("error", reject);
@ -103,15 +100,6 @@ class ThumnbnailWorker { @@ -103,15 +100,6 @@ class ThumnbnailWorker {
);
const imgUrl = this.canvasEl.toDataURL();
// ! Remove before merging
const img = new Image();
img.src = imgUrl;
img.style.border = "1px solid yellow";
document.body.appendChild(img);
const p = document.createElement("p");
p.innerText = `${at}`;
document.body.appendChild(p);
if (this.interrupted) return;
if (imgUrl === "data:," || !imgUrl) return; // failed image rendering
@ -163,6 +151,7 @@ export function ThumbnailScraper() { @@ -163,6 +151,7 @@ export function ThumbnailScraper() {
workerRef.current = ins;
ins.start(inputStream.stream);
}, [source, addImage, resetImages, status]);
const startRef = useRef(start);
useEffect(() => {
startRef.current = start;

4
src/components/utils/Lightbar.tsx

@ -161,8 +161,8 @@ function ParticlesCanvas() { @@ -161,8 +161,8 @@ function ParticlesCanvas() {
export function Lightbar(props: { className?: string }) {
return (
<div className="absolute inset-0 w-full h-screen overflow-hidden pointer-events-none -mt-64">
<div className="max-w-screen w-full h-screen relative pt-64">
<div className="absolute inset-0 w-full h-[300vh] overflow-hidden pointer-events-none -mt-64">
<div className="max-w-screen w-full h-[300vh] relative pt-64">
<div className={props.className}>
<div className="lightbar">
<ParticlesCanvas />

Loading…
Cancel
Save