feat: benai chagne location

This commit is contained in:
leon
2026-09-09 11:01:06 +02:00
parent c96ddfac0e
commit 0a6603d917
2 changed files with 32 additions and 17 deletions
+1 -15
View File
@@ -17,7 +17,6 @@ import { background, icons } from '../../assets'
import alert from '../../components/Alert' import alert from '../../components/Alert'
import BorderGradientButton from '../../components/BorderGradientButton' import BorderGradientButton from '../../components/BorderGradientButton'
import CreditAmount from '../../components/CreditAmount' import CreditAmount from '../../components/CreditAmount'
import FullscreenIntroVideo from '../../components/FullscreenIntroVideo'
import GradientButton from '../../components/GradientButton' import GradientButton from '../../components/GradientButton'
import ValidateModal from '../../components/modal/ValidateModal' import ValidateModal from '../../components/modal/ValidateModal'
import MusicLandHeader from '../../components/MusicLandHeader' import MusicLandHeader from '../../components/MusicLandHeader'
@@ -43,11 +42,9 @@ const SongReady = () => {
selectedProject, selectedProject,
updateProjectData, updateProjectData,
updateUserData, updateUserData,
videos,
} = useUser() } = useUser()
const [showValidateModal, setShowValidateModal] = useState(false) const [showValidateModal, setShowValidateModal] = useState(false)
const [showRegenerateModal, setShowRegenerateModal] = useState(false) const [showRegenerateModal, setShowRegenerateModal] = useState(false)
const [outroVideoUrl, setOutroVideoUrl] = useState(null)
const [musicUrls, setMusicUrls] = useState([]) const [musicUrls, setMusicUrls] = useState([])
const [selectedIndex, setSelectedIndex] = useState(0) const [selectedIndex, setSelectedIndex] = useState(0)
const playerRefs = useRef({}) const playerRefs = useRef({})
@@ -114,7 +111,6 @@ const SongReady = () => {
}, [selectedProject?.musicUrls]) }, [selectedProject?.musicUrls])
const navigateToCover = useCallback(() => { const navigateToCover = useCallback(() => {
setOutroVideoUrl(null)
reset({ reset({
index: 1, index: 1,
routes: [{ name: Routes.BottomTab }, { name: Routes.ChooseCoverType }], routes: [{ name: Routes.BottomTab }, { name: Routes.ChooseCoverType }],
@@ -156,12 +152,7 @@ const SongReady = () => {
}) })
await pauseAllPlayers() await pauseAllPlayers()
const benaiUrl = typeof videos?.benai === 'string' ? videos.benai.trim() : '' navigateToCover()
if (benaiUrl) {
setOutroVideoUrl(benaiUrl)
} else {
navigateToCover()
}
} catch (e) { } catch (e) {
console.log('Validate error', e?.message) console.log('Validate error', e?.message)
} }
@@ -348,11 +339,6 @@ const SongReady = () => {
/> />
</> </>
)} )}
<FullscreenIntroVideo
visible={!!outroVideoUrl}
url={outroVideoUrl}
onClose={navigateToCover}
/>
</Page> </Page>
) )
} }
+31 -2
View File
@@ -1,10 +1,11 @@
import React, { useCallback, useEffect, useMemo, useState } from 'react' import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { Image as ExpoImage } from 'expo-image' import { Image as ExpoImage } from 'expo-image'
import { Linking, Platform, ScrollView, StyleSheet, Text, View, Alert } from 'react-native' import { Linking, Platform, ScrollView, StyleSheet, Text, View, Alert } from 'react-native'
import useMinuit from 'react-native-minuit/src/hooks/useMinuit.js' import useMinuit from 'react-native-minuit/src/hooks/useMinuit.js'
import * as FileSystem from 'expo-file-system' import * as FileSystem from 'expo-file-system'
import * as Sharing from 'expo-sharing' import * as Sharing from 'expo-sharing'
import BorderGradientButton from '../../components/BorderGradientButton' import BorderGradientButton from '../../components/BorderGradientButton'
import FullscreenIntroVideo from '../../components/FullscreenIntroVideo'
import GradientButton from '../../components/GradientButton' import GradientButton from '../../components/GradientButton'
import MusicLandHeader from '../../components/MusicLandHeader' import MusicLandHeader from '../../components/MusicLandHeader'
import { projectsRef, serverTimestamp } from '../../config/firebase' import { projectsRef, serverTimestamp } from '../../config/firebase'
@@ -29,10 +30,18 @@ const SongDownload = ({ route }) => {
project: routeProject, project: routeProject,
selectedOption: routeSelectedOption, selectedOption: routeSelectedOption,
coverOptions: routeCoverOptions, coverOptions: routeCoverOptions,
skipAdventureGate = false,
promptPurchaseConfirm = false, promptPurchaseConfirm = false,
backRoute = null, backRoute = null,
} = route?.params || {} } = route?.params || {}
const { selectedProject, updateProjectData, hasActiveSubscription, hasPurchased } = useUser() const {
selectedProject,
updateProjectData,
hasActiveSubscription,
hasPurchased,
currentUserData,
videos,
} = useUser()
const { createSongDownloadCheckout } = useStripe() const { createSongDownloadCheckout } = useStripe()
const { setTooltip } = useMinuit() const { setTooltip } = useMinuit()
const { setLoading } = useGlobalLoading() const { setLoading } = useGlobalLoading()
@@ -41,6 +50,21 @@ const SongDownload = ({ route }) => {
const [downloadPaymentPending, setDownloadPaymentPending] = useState(false) const [downloadPaymentPending, setDownloadPaymentPending] = useState(false)
const [pendingDownloadIntent, setPendingDownloadIntent] = useState(null) const [pendingDownloadIntent, setPendingDownloadIntent] = useState(null)
const [isPublishing, setIsPublishing] = useState(false) const [isPublishing, setIsPublishing] = useState(false)
const [benaiVideoUrl, setBenaiVideoUrl] = useState(null)
const benaiVideoHandledRef = useRef(false)
useEffect(() => {
if (skipAdventureGate || benaiVideoHandledRef.current) return
const preferredLanguage = currentUserData?.preferredLanguage === 'en' ? 'en' : 'fr'
if (videos?.id !== preferredLanguage) return
benaiVideoHandledRef.current = true
const url = typeof videos?.benai === 'string' ? videos.benai.trim() : ''
if (url) {
setBenaiVideoUrl(url)
}
}, [currentUserData?.preferredLanguage, skipAdventureGate, videos])
const projectForStage = useMemo(() => { const projectForStage = useMemo(() => {
if (routeProject?.id && selectedProject?.id && routeProject.id === selectedProject.id) { if (routeProject?.id && selectedProject?.id && routeProject.id === selectedProject.id) {
@@ -589,6 +613,11 @@ const SongDownload = ({ route }) => {
/> />
</View> </View>
</ScrollView> </ScrollView>
<FullscreenIntroVideo
url={benaiVideoUrl}
visible={!!benaiVideoUrl}
onClose={() => setBenaiVideoUrl(null)}
/>
</Page> </Page>
) )
} }