more fixes web + mobile
This commit is contained in:
@@ -17,6 +17,7 @@ import { goBack, navigate } from "../../navigation/NavigationService";
|
||||
import { gutters, Palette } from "../../styles";
|
||||
import { isWeb } from "../../hooks/useLayoutType";
|
||||
import useSharedAudioPlayer from "../../hooks/useSharedAudioPlayer";
|
||||
import { releaseBlobUrl } from "../../utils/blobUrlCache";
|
||||
|
||||
const fmtSeconds = (s) => {
|
||||
const total = Math.max(0, Math.floor(Number(s || 0)));
|
||||
@@ -36,7 +37,6 @@ const WEB_PREVIEW_WIDTH = 360;
|
||||
const RecordedPlayback = ({ route }) => {
|
||||
const { videoUri, project } = route.params || {};
|
||||
const songUrl = project?.songUrl || null;
|
||||
console.log("video uri is : ", videoUri);
|
||||
// AUDIO PLAYER (expo-audio → seconds)
|
||||
const audioPlayer = useSharedAudioPlayer(
|
||||
songUrl ? { uri: songUrl } : undefined,
|
||||
@@ -58,6 +58,7 @@ const RecordedPlayback = ({ route }) => {
|
||||
// Optionnel: si tu veux quand même un rendu vidéo sur web si tu as une source
|
||||
const videoElRef = useRef(null);
|
||||
const playbackEndedRef = useRef(false);
|
||||
const shouldPreserveBlobRef = useRef(false);
|
||||
|
||||
const [progress, setProgress] = useState({
|
||||
posS: 0, // secondes
|
||||
@@ -76,6 +77,14 @@ const RecordedPlayback = ({ route }) => {
|
||||
} catch {}
|
||||
}, [audioPlayer]);
|
||||
|
||||
useEffect(() => {
|
||||
return () => {
|
||||
if (!shouldPreserveBlobRef.current) {
|
||||
releaseBlobUrl(videoUri || null);
|
||||
}
|
||||
};
|
||||
}, [videoUri]);
|
||||
|
||||
// Démarrage / arrêt
|
||||
useEffect(() => {
|
||||
playbackEndedRef.current = false;
|
||||
@@ -345,6 +354,7 @@ const RecordedPlayback = ({ route }) => {
|
||||
<GradientButton
|
||||
title="Je valide"
|
||||
onPress={() => {
|
||||
shouldPreserveBlobRef.current = true;
|
||||
navigate(Routes.DownloadSongs, {
|
||||
action: "playback",
|
||||
uri: videoUri || null, // peut être null sur web
|
||||
|
||||
Reference in New Issue
Block a user