Fix layout shifting (#10313)

* Fix layout shifting

* Change value for current data

* Fix motion scrubbing lockout
This commit is contained in:
Nicolas Mowen 2024-03-07 09:11:24 -07:00 committed by GitHub
parent 8776cdfd5b
commit fc6d6a4e9a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 25 deletions

View File

@ -453,7 +453,7 @@ export class DynamicVideoController {
} }
if (time > this.preview.end) { if (time > this.preview.end) {
if (this.clipChangeLockout) { if (this.clipChangeLockout && time - this.preview.end < 30) {
return; return;
} }
@ -470,7 +470,7 @@ export class DynamicVideoController {
} }
if (time < this.preview.start) { if (time < this.preview.start) {
if (this.clipChangeLockout) { if (this.clipChangeLockout && this.preview.start - time < 30) {
return; return;
} }

View File

@ -67,10 +67,10 @@ export default function PreviewThumbnailPlayer({
preventScrollOnSwipe: true, preventScrollOnSwipe: true,
}); });
const handleSetReviewed = useCallback( const handleSetReviewed = useCallback(() => {
() => setReviewed(review), review.has_been_reviewed = true;
[review, setReviewed], setReviewed(review);
); }, [review, setReviewed]);
// playback // playback

View File

@ -133,16 +133,6 @@ export default function EventView({
}; };
}, [reviews]); }, [reviews]);
const currentItems = useMemo(() => {
const current = reviewItems[severity];
if (!current || current.length == 0) {
return null;
}
return current;
}, [reviewItems, severity]);
// review interaction // review interaction
const [selectedReviews, setSelectedReviews] = useState<string[]>([]); const [selectedReviews, setSelectedReviews] = useState<string[]>([]);
@ -175,7 +165,7 @@ export default function EventView({
const exportReview = useCallback( const exportReview = useCallback(
(id: string) => { (id: string) => {
const review = currentItems?.find((seg) => seg.id == id); const review = reviewItems.all?.find((seg) => seg.id == id);
if (!review) { if (!review) {
return; return;
@ -186,7 +176,7 @@ export default function EventView({
{ playback: "realtime" }, { playback: "realtime" },
); );
}, },
[currentItems], [reviewItems],
); );
if (!config) { if (!config) {
@ -254,7 +244,6 @@ export default function EventView({
{severity != "significant_motion" && ( {severity != "significant_motion" && (
<DetectionReview <DetectionReview
contentRef={contentRef} contentRef={contentRef}
currentItems={currentItems}
reviewItems={reviewItems} reviewItems={reviewItems}
relevantPreviews={relevantPreviews} relevantPreviews={relevantPreviews}
selectedReviews={selectedReviews} selectedReviews={selectedReviews}
@ -284,7 +273,6 @@ export default function EventView({
type DetectionReviewProps = { type DetectionReviewProps = {
contentRef: MutableRefObject<HTMLDivElement | null>; contentRef: MutableRefObject<HTMLDivElement | null>;
currentItems: ReviewSegment[] | null;
reviewItems: { reviewItems: {
all: ReviewSegment[]; all: ReviewSegment[];
alert: ReviewSegment[]; alert: ReviewSegment[];
@ -303,7 +291,6 @@ type DetectionReviewProps = {
}; };
function DetectionReview({ function DetectionReview({
contentRef, contentRef,
currentItems,
reviewItems, reviewItems,
itemsToReview, itemsToReview,
relevantPreviews, relevantPreviews,
@ -317,6 +304,23 @@ function DetectionReview({
}: DetectionReviewProps) { }: DetectionReviewProps) {
const segmentDuration = 60; const segmentDuration = 60;
// review data
const currentItems = useMemo(() => {
const current = reviewItems[severity];
if (!current || current.length == 0) {
return null;
}
if (filter?.showReviewed != 1) {
return current.filter((seg) => !seg.has_been_reviewed);
} else {
return current;
}
// only refresh when severity or filter changes
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [severity, filter, reviewItems.all.length]);
// preview // preview
const [previewTime, setPreviewTime] = useState<number>(); const [previewTime, setPreviewTime] = useState<number>();
@ -446,10 +450,6 @@ function DetectionReview({
> >
{currentItems && {currentItems &&
currentItems.map((value) => { currentItems.map((value) => {
if (value.has_been_reviewed && filter?.showReviewed != 1) {
return;
}
const selected = selectedReviews.includes(value.id); const selected = selectedReviews.includes(value.id);
return ( return (