Add special casing for android scrubbing

This commit is contained in:
Nicolas Mowen 2024-03-12 06:02:35 -06:00
parent 579a7c8900
commit 6940adb7a2

View File

@ -12,6 +12,7 @@ import { Preview } from "@/types/preview";
import { PreviewPlayback } from "@/types/playback"; import { PreviewPlayback } from "@/types/playback";
import { isCurrentHour } from "@/utils/dateUtil"; import { isCurrentHour } from "@/utils/dateUtil";
import { baseUrl } from "@/api/baseUrl"; import { baseUrl } from "@/api/baseUrl";
import { isAndroid } from "react-device-detect";
type PreviewPlayerProps = { type PreviewPlayerProps = {
className?: string; className?: string;
@ -235,7 +236,7 @@ class PreviewVideoController extends PreviewController {
} }
override scrubToTimestamp(time: number): boolean { override scrubToTimestamp(time: number): boolean {
if (!this.preview || !this.timeRange) { if (!this.previewRef.current || !this.preview || !this.timeRange) {
return false; return false;
} }
@ -246,14 +247,12 @@ class PreviewVideoController extends PreviewController {
if (this.seeking) { if (this.seeking) {
this.timeToSeek = time; this.timeToSeek = time;
} else { } else {
if (this.previewRef.current) {
this.previewRef.current.currentTime = Math.max( this.previewRef.current.currentTime = Math.max(
0, 0,
time - this.preview.start, time - this.preview.start,
); );
this.seeking = true; this.seeking = true;
} }
}
return true; return true;
} }
@ -263,12 +262,25 @@ class PreviewVideoController extends PreviewController {
return; return;
} }
if (this.timeToSeek) {
if ( if (
this.timeToSeek && Math.round(this.previewRef.current.currentTime + this.preview.start) !=
this.timeToSeek != this.previewRef.current?.currentTime Math.round(this.timeToSeek)
) { ) {
if (isAndroid) {
const currentTs =
this.previewRef.current.currentTime + this.preview.start;
this.previewRef.current.currentTime =
this.previewRef.current.currentTime +
(this.timeToSeek - currentTs) / 2;
} else {
this.previewRef.current.currentTime = this.previewRef.current.currentTime =
this.timeToSeek - this.preview.start; this.timeToSeek - this.preview.start;
}
} else {
this.seeking = false;
this.timeToSeek = undefined;
}
} else { } else {
this.seeking = false; this.seeking = false;
} }