Fix transition

This commit is contained in:
Nicolas Mowen 2024-03-30 10:24:09 -06:00
parent c3256c79de
commit d7155a90da

View File

@ -162,12 +162,16 @@ function PreviewVideoPlayer({
return; return;
} }
setCurrentHourFrame(undefined);
if (isAndroid && isChrome) { if (isAndroid && isChrome) {
// android/chrome glitches when setting currentTime at the same time as onSeeked // android/chrome glitches when setting currentTime at the same time as onSeeked
setTimeout(() => controller.finishedSeeking(), 25); setTimeout(() => controller.finishedSeeking(), 25);
} else { } else {
controller.finishedSeeking(); controller.finishedSeeking();
} }
// we only want to update on controller change
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [controller]); }, [controller]);
// canvas to cover preview transition // canvas to cover preview transition
@ -177,9 +181,8 @@ function PreviewVideoPlayer({
const changeSource = useCallback( const changeSource = useCallback(
(newPreview: Preview | undefined, video: HTMLVideoElement | null) => { (newPreview: Preview | undefined, video: HTMLVideoElement | null) => {
setCurrentPreview(newPreview);
if (!newPreview || !video) { if (!newPreview || !video) {
setCurrentPreview(newPreview);
return; return;
} }
@ -197,6 +200,8 @@ function PreviewVideoPlayer({
setCurrentHourFrame(canvasRef.current?.toDataURL("image/webp")); setCurrentHourFrame(canvasRef.current?.toDataURL("image/webp"));
} }
setCurrentPreview(newPreview);
// we only want this to change when current preview changes // we only want this to change when current preview changes
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, },
@ -240,7 +245,7 @@ function PreviewVideoPlayer({
/> />
<video <video
ref={previewRef} ref={previewRef}
className="absolute size-full" className={`absolute size-full ${currentHourFrame ? "invisible" : "visible"}`}
preload="auto" preload="auto"
autoPlay autoPlay
playsInline playsInline
@ -248,8 +253,6 @@ function PreviewVideoPlayer({
disableRemotePlayback disableRemotePlayback
onSeeked={onPreviewSeeked} onSeeked={onPreviewSeeked}
onLoadedData={() => { onLoadedData={() => {
setCurrentHourFrame(undefined);
if (controller) { if (controller) {
controller.previewReady(); controller.previewReady();
} else { } else {