stop audio & go back to home

This commit is contained in:
2026-02-12 14:51:27 +01:00
parent 689b42654e
commit 99f8234b9d
3 changed files with 40 additions and 23 deletions
+15 -3
View File
@@ -1,3 +1,4 @@
import { useFocusEffect } from '@react-navigation/native'
import useSharedAudioPlayer from '../../hooks/useSharedAudioPlayer'
import * as FileSystem from 'expo-file-system'
import { VideoView, useVideoPlayer } from 'expo-video'
@@ -40,13 +41,21 @@ const RecordedPlayback = ({ route }) => {
// Start both players on mount
const stopPlayback = useCallback(async () => {
try {
if (audioPlayer?.playing) await audioPlayer.pause?.()
if (audioPlayer) await audioPlayer.pause?.()
} catch (e) { }
try {
if (videoPlayer?.playing) videoPlayer.pause()
videoPlayer?.pause?.()
} catch (e) { }
}, [audioPlayer, videoPlayer])
useFocusEffect(
useCallback(() => {
return () => {
void stopPlayback()
}
}, [stopPlayback])
)
useEffect(() => {
playbackEndedRef.current = false
const start = async () => {
@@ -213,7 +222,10 @@ const RecordedPlayback = ({ route }) => {
<View style={{ width: '80%', alignSelf: 'center', marginTop: 4, gap: 12 }}>
<GradientButton
title="Je valide"
onPress={() => {
onPress={async () => {
try {
await stopPlayback()
} catch (e) { }
navigate(Routes.PlaybackDownload, {
action: 'playback',
uri: videoUri,
+14 -2
View File
@@ -1,3 +1,4 @@
import { useFocusEffect } from '@react-navigation/native'
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { Image, Pressable, Text, View } from 'react-native'
import { background, icons } from '../../assets'
@@ -54,7 +55,7 @@ const RecordedPlayback = ({ route }) => {
const stopPlayback = useCallback(async () => {
try {
if (audioPlayer?.playing) await audioPlayer.pause?.()
if (audioPlayer) await audioPlayer.pause?.()
} catch { }
try {
if (videoElRef.current && !videoElRef.current.paused) {
@@ -63,6 +64,14 @@ const RecordedPlayback = ({ route }) => {
} catch { }
}, [audioPlayer])
useFocusEffect(
useCallback(() => {
return () => {
void stopPlayback()
}
}, [stopPlayback])
)
useEffect(() => {
return () => {
if (!shouldPreserveBlobRef.current) {
@@ -363,8 +372,11 @@ const RecordedPlayback = ({ route }) => {
>
<GradientButton
title="Je valide"
onPress={() => {
onPress={async () => {
shouldPreserveBlobRef.current = true
try {
await stopPlayback()
} catch { }
navigate(Routes.PlaybackDownload, {
action: 'playback',
uri: videoUri || null, // peut être null sur web
+11 -18
View File
@@ -152,6 +152,7 @@ const PlaybackDownload = ({ route }) => {
const [isDownloading, setIsDownloading] = useState(false)
const [hasAcceptedPublication, setHasAcceptedPublication] = useState(true)
const hasShownAfterPlaybackRef = useRef(false)
const publishSuccessMessage = action === 'playback' ? 'Playback publié !' : 'Chanson publiée !'
const afterPlaybackUrl = useMemo(() => {
if (!videos) return null
@@ -333,15 +334,11 @@ const PlaybackDownload = ({ route }) => {
return
}
if (!project?.id) {
if (action === 'playback') {
setTooltip({
type: 'success',
text: 'Playback publié !',
})
navigate(Routes.Home)
} else {
navigate(Routes.SongRelease, { action })
}
setTooltip({
type: 'success',
text: publishSuccessMessage,
})
navigate(Routes.Home)
return
}
let tempSourcePath = null
@@ -402,15 +399,11 @@ const PlaybackDownload = ({ route }) => {
{ merge: true }
)
if (action === 'playback') {
setTooltip({
type: 'success',
text: 'Playback publié !',
})
navigate(Routes.Home)
} else {
navigate(Routes.SongRelease, { action })
}
setTooltip({
type: 'success',
text: publishSuccessMessage,
})
navigate(Routes.Home)
} catch (error) {
console.log('[PlaybackDownload] publish error', {
message: error?.message,