Add special casing for android preview scrubbing (#10398)

* Add special casing for android scrubbing

* Fix motion data
This commit is contained in:
Nicolas Mowen 2024-03-12 09:24:18 -06:00 committed by GitHub
parent 483a95b06b
commit 8c0275fe2f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 28 additions and 16 deletions

View File

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

View File

@ -134,7 +134,7 @@ export function DesktopRecordingView({
const { data: motionData } = useSWR<MotionData[]>(
severity == "significant_motion"
? [
"review/activity",
"review/activity/motion",
{
before: timeRange.end,
after: timeRange.start,
@ -351,7 +351,7 @@ export function MobileRecordingView({
const { data: motionData } = useSWR<MotionData[]>(
severity == "significant_motion"
? [
"review/activity",
"review/activity/motion",
{
before: timeRange.end,
after: timeRange.start,