feat: fix merge audio
This commit is contained in:
@@ -9,7 +9,7 @@ import BorderGradientButton from '../../components/BorderGradientButton'
|
||||
import GradientButton from '../../components/GradientButton'
|
||||
import MusicLandHeader from '../../components/MusicLandHeader'
|
||||
import AppCheckbox from '../../components/AppCheckbox'
|
||||
import firebase, { projectsRef, serverTimestamp } from '../../config/firebase'
|
||||
import firebase, { getFunctionsClient, projectsRef, serverTimestamp } from '../../config/firebase'
|
||||
import { uploadFileToFirebase } from '../../helpers/uploadToFirebase'
|
||||
import Page from '../../layouts/Page'
|
||||
import { Routes } from '../../navigation'
|
||||
@@ -135,6 +135,12 @@ const uploadSourceRecording = async ({ uri, uid, projectId }) => {
|
||||
return { sourcePath, videoUrl }
|
||||
}
|
||||
|
||||
const FUNCTIONS_REGION = 'europe-west1'
|
||||
const callMergeVideoAndAudio = (payload) => {
|
||||
const callable = getFunctionsClient(FUNCTIONS_REGION).httpsCallable('upload-mergeVideoAndAudio')
|
||||
return callable(payload)
|
||||
}
|
||||
|
||||
const PlaybackDownload = ({ route }) => {
|
||||
const { currentUID, selectedProject } = useUserData()
|
||||
const { hasActiveSubscription, hasPurchased, videos } = useUser() || {}
|
||||
@@ -282,8 +288,6 @@ const PlaybackDownload = ({ route }) => {
|
||||
})
|
||||
tempSourcePath = sourcePath
|
||||
|
||||
const callable = firebase.functions().httpsCallable('upload-mergeVideoAndAudio')
|
||||
|
||||
const payload = {
|
||||
projectId: projectForDownload?.id,
|
||||
videoUrl,
|
||||
@@ -293,7 +297,7 @@ const PlaybackDownload = ({ route }) => {
|
||||
|
||||
console.log('[PlaybackDownload] calling upload-mergeVideoAndAudio', payload)
|
||||
|
||||
const { data: result } = await callable(payload)
|
||||
const { data: result } = await callMergeVideoAndAudio(payload)
|
||||
|
||||
console.log('[PlaybackDownload] upload-mergeVideoAndAudio result', result)
|
||||
|
||||
@@ -431,8 +435,12 @@ const PlaybackDownload = ({ route }) => {
|
||||
}, [downloadPaymentPending, handleDownloadUri, hasPaidPlaybackDownload, isDownloading])
|
||||
|
||||
const handlePublish = async () => {
|
||||
if (isPublishing) return
|
||||
if (isPublishing) {
|
||||
console.log('[PlaybackDownload] publish blocked: already publishing')
|
||||
return
|
||||
}
|
||||
if (!hasAcceptedPublication) {
|
||||
console.log('[PlaybackDownload] publish blocked: publication not accepted')
|
||||
setTooltip({
|
||||
type: 'error',
|
||||
text: 'Confirme la diffusion de ton playback sur Musicland avant de publier',
|
||||
@@ -440,6 +448,9 @@ const PlaybackDownload = ({ route }) => {
|
||||
return
|
||||
}
|
||||
if (!projectForDownload?.id) {
|
||||
console.log('[PlaybackDownload] publish: missing project id, navigating directly', {
|
||||
projectForDownload: projectForDownload?.id,
|
||||
})
|
||||
setTooltip({
|
||||
type: 'success',
|
||||
text: publishSuccessMessage,
|
||||
@@ -451,6 +462,10 @@ const PlaybackDownload = ({ route }) => {
|
||||
let playbackUrlToSave = pendingPlaybackUrl || projectForDownload?.playbackUrl || null
|
||||
const audioUrl = resolveAudioUrl()
|
||||
if (!audioUrl && !playbackUrlToSave) {
|
||||
console.log('[PlaybackDownload] publish blocked: missing audioUrl and playbackUrl', {
|
||||
audioUrl,
|
||||
playbackUrlToSave,
|
||||
})
|
||||
setTooltip({
|
||||
type: 'error',
|
||||
text: 'Aucune piste audio disponible pour ce projet',
|
||||
@@ -458,6 +473,7 @@ const PlaybackDownload = ({ route }) => {
|
||||
return
|
||||
}
|
||||
if (!currentUID) {
|
||||
console.log('[PlaybackDownload] publish blocked: missing currentUID')
|
||||
setTooltip({
|
||||
type: 'error',
|
||||
text: 'Utilisateur non authentifié',
|
||||
@@ -466,10 +482,18 @@ const PlaybackDownload = ({ route }) => {
|
||||
}
|
||||
|
||||
try {
|
||||
console.log('[PlaybackDownload] publish start', {
|
||||
projectId: projectForDownload?.id,
|
||||
hasPendingPlaybackUrl: Boolean(pendingPlaybackUrl),
|
||||
hasPlaybackUrl: Boolean(projectForDownload?.playbackUrl),
|
||||
hasAudioUrl: Boolean(audioUrl),
|
||||
hasUri: Boolean(uri),
|
||||
})
|
||||
setIsPublishing(true)
|
||||
setIsLoading(true)
|
||||
|
||||
if (!playbackUrlToSave) {
|
||||
console.log('[PlaybackDownload] publish: no playback url, uploading source')
|
||||
const { sourcePath, videoUrl } = await uploadSourceRecording({
|
||||
uri,
|
||||
uid: currentUID,
|
||||
@@ -477,8 +501,6 @@ const PlaybackDownload = ({ route }) => {
|
||||
})
|
||||
tempSourcePath = sourcePath
|
||||
|
||||
const callable = firebase.functions().httpsCallable('upload-mergeVideoAndAudio')
|
||||
|
||||
const payload = {
|
||||
projectId: projectForDownload?.id,
|
||||
videoUrl,
|
||||
@@ -488,15 +510,20 @@ const PlaybackDownload = ({ route }) => {
|
||||
|
||||
console.log('[PlaybackDownload] publish: calling merge', payload)
|
||||
|
||||
const { data: result } = await callable(payload)
|
||||
const { data: result } = await callMergeVideoAndAudio(payload)
|
||||
|
||||
playbackUrlToSave = result?.url || null
|
||||
if (!playbackUrlToSave) {
|
||||
console.log('[PlaybackDownload] publish: merge result missing url', result)
|
||||
throw new Error('merge_failed')
|
||||
}
|
||||
setPendingPlaybackUrl(playbackUrlToSave)
|
||||
}
|
||||
|
||||
console.log('[PlaybackDownload] publish: saving playback url', {
|
||||
projectId: projectForDownload.id,
|
||||
playbackUrlToSave,
|
||||
})
|
||||
await projectsRef.doc(projectForDownload.id).set(
|
||||
{
|
||||
playbackUrl: playbackUrlToSave,
|
||||
@@ -509,6 +536,9 @@ const PlaybackDownload = ({ route }) => {
|
||||
type: 'success',
|
||||
text: publishSuccessMessage,
|
||||
})
|
||||
console.log('[PlaybackDownload] publish: navigate to PublishYoutube', {
|
||||
projectId: projectForDownload.id,
|
||||
})
|
||||
navigate(Routes.PublishYoutube, { projectId: projectForDownload.id })
|
||||
} catch (error) {
|
||||
console.log('[PlaybackDownload] publish error', {
|
||||
|
||||
Reference in New Issue
Block a user