stripe and small fixes

This commit is contained in:
2026-02-12 11:26:14 +01:00
parent 490698cb92
commit 32331d8b2b
4 changed files with 61 additions and 55 deletions
+16 -38
View File
@@ -403,54 +403,32 @@ export const VOICE = [
{ {
title: 'BASE', title: 'BASE',
data: [ data: [
'Une voix féminine interprétera ta chanson.', 'Une voix féminine',
'Une voix masculine interprétera ta chanson.', 'Une voix masculine',
'Deux voix pour interpréter ta chanson.', 'Deux voix',
'Solo vocal puissant et dramatique.', 'Un couplet rap',
'Un chœur gospel pour (dimension spirituelle ou émotionnelle).', 'Voix parlée',
'Un cri brut et puissant (émotion intense).',
'Un couplet interprété en rap.',
'Voix qui raconte une histoire, souvent sans chanter.',
'Paroles déclamées plutôt que chantées, souvent dans un style poétique ou de slam.',
'Technique vocale entre parler et chanter, typique de la musique expressionniste.',
], ],
}, },
{ {
title: 'SENSIBILITÉ', title: 'SENSIBILITÉ',
data: [ data: [
'Voix séduisante et sensuelle.', 'Voix douce et intime',
'Voix profonde et résonnante.', 'Voix profonde et résonnante',
'Voix légère et aérienne.', 'Voix légère et aérienne',
'Voix relaxante et sophistiquée.', 'Voix sensuelle et chaleureuse',
'Voix synthétique.', 'Voix énergique et puissante',
'Voix découpées pour un style EDM ou future bass.',
'Effet de distorsion (rendu + agressif).',
'Slam (Chant parlé).',
'Rap moderne.',
], ],
}, },
{ {
title: 'TECHNIQUE', title: 'TECHNIQUE',
data: [ data: [
"Chant chargé d'émotion.", "Chant chargé d'émotion",
'Technique vocale rugueuse pour le métal ou le rock.', 'Chant en murmure',
'Voix robotisée ou mécanique, genres électro ou futuristes.', 'Voix robotisée',
'Voix étrange (atmosphère de science-fiction ou de mystère).', 'Multiples voix superposées',
'Voix grave et intimidante (effet dramatique).', 'Voix rauque et granuleuse',
'Voix pure et céleste, évoquant la tranquillité ou le divin.', 'Voix aiguë et brillante',
"Voix douce et aérienne, avec une touche d'intimité.",
'Voix chantée dans une tonalité plus aiguë que la normale.',
"Voix d'enfant (+ d'innocence).",
'Chant en murmure (+ intime).',
'Multiples voix superposées (effet harmonique riche).',
'Voix légère et innocente.',
'Voix soprano puissante (style opéra).',
'Chant puissant (styles pop et Broadway).',
'Mélange subtil de chuchotements et dharmoniques.',
'Voix rauque et granuleuse, utilisée dans le blues ou le rock.',
'Chœur avec une tonalité légère et céleste.',
'Inspiration et expiration sonores (effets dramatiques).',
'Changements de volume ou de tonalité dans une même phrase.',
], ],
}, },
] ]
+41 -14
View File
@@ -5,7 +5,7 @@ import { loadStripe } from '@stripe/stripe-js'
import * as WebBrowser from 'expo-web-browser' import * as WebBrowser from 'expo-web-browser'
import Overlay from '../components/Overlay' import Overlay from '../components/Overlay'
import Button from '../components/Button' import Button from '../components/Button'
import useLayoutType from '../hooks/useLayoutType' import { Palette } from '../styles'
import { mainBorderRadius } from '../styles/Style' import { mainBorderRadius } from '../styles/Style'
import { STRIPE_PUBLISHABLE_KEY_LIVE, STRIPE_PUBLISHABLE_KEY_TEST } from '../data/keys' import { STRIPE_PUBLISHABLE_KEY_LIVE, STRIPE_PUBLISHABLE_KEY_TEST } from '../data/keys'
import { getFunctionsClient } from '../config/firebase' import { getFunctionsClient } from '../config/firebase'
@@ -81,7 +81,6 @@ export const useStripe = () => {
} }
const StripeProvider = ({ children }) => { const StripeProvider = ({ children }) => {
const { isMobile } = useLayoutType()
const { currentUserData } = useUserData() || {} const { currentUserData } = useUserData() || {}
const canUseEmbeddedCheckout = isWeb && Boolean(stripePromise) const canUseEmbeddedCheckout = isWeb && Boolean(stripePromise)
@@ -373,18 +372,13 @@ const StripeProvider = ({ children }) => {
return ( return (
<StripeContext.Provider value={providerValue}> <StripeContext.Provider value={providerValue}>
{children} {children}
<Overlay isVisible={clientSecret !== null} setIsVisible={closeEmbeddedCheckout}> <Overlay
<View style={[StyleSheet.absoluteFillObject, styles.overlayContent]}> isVisible={clientSecret !== null}
<View setIsVisible={closeEmbeddedCheckout}
style={[ contentContainerStyle={styles.overlayContentFull}
styles.embeddedWrapper,
{
width: isMobile ? '99%' : '95%',
height: isMobile ? '92vh' : '96vh',
maxWidth: isMobile ? '100%' : '1400px',
},
]}
> >
<View style={[StyleSheet.absoluteFillObject, styles.overlayContent]}>
<View style={[styles.embeddedWrapper, styles.embeddedWrapperFull]}>
{clientSecret && stripePromise ? ( {clientSecret && stripePromise ? (
<EmbeddedCheckoutProvider stripe={stripePromise} options={{ clientSecret }}> <EmbeddedCheckoutProvider stripe={stripePromise} options={{ clientSecret }}>
<EmbeddedCheckout <EmbeddedCheckout
@@ -396,7 +390,14 @@ const StripeProvider = ({ children }) => {
</EmbeddedCheckoutProvider> </EmbeddedCheckoutProvider>
) : null} ) : null}
</View> </View>
<Button type="secondary" isAbsoluteBottom text="Fermer" onPress={closeEmbeddedCheckout} /> <Button
type="primary"
isAbsoluteBottom
text="Fermer"
onPress={closeEmbeddedCheckout}
containerStyle={styles.closeButton}
textStyle={styles.closeButtonText}
/>
</View> </View>
</Overlay> </Overlay>
</StripeContext.Provider> </StripeContext.Provider>
@@ -409,11 +410,37 @@ const styles = StyleSheet.create({
justifyContent: 'center', justifyContent: 'center',
alignItems: 'center', alignItems: 'center',
}, },
overlayContentFull: {
justifyContent: 'flex-start',
alignItems: 'stretch',
},
embeddedWrapper: { embeddedWrapper: {
alignSelf: 'center', alignSelf: 'center',
borderRadius: mainBorderRadius, borderRadius: mainBorderRadius,
overflow: 'hidden', overflow: 'hidden',
}, },
embeddedWrapperFull: {
width: '100%',
height: '100%',
maxWidth: '100%',
borderRadius: 0,
alignSelf: 'stretch',
},
closeButton: {
height: 56,
borderWidth: 2,
borderColor: Palette.white,
shadowColor: Palette.primary,
shadowOpacity: 0.6,
shadowRadius: 10,
shadowOffset: { width: 0, height: 6 },
elevation: 6,
},
closeButtonText: {
color: Palette.white,
fontSize: 16,
letterSpacing: 0.3,
},
}) })
export default StripeProvider export default StripeProvider
+1 -1
View File
@@ -489,7 +489,7 @@ const HitParade = () => {
fontFamily: FONT_FAMILY.HelveticaNeueBold, fontFamily: FONT_FAMILY.HelveticaNeueBold,
}} }}
> >
Chansons Chansons librairie
</Text> </Text>
{/* </BorderGradient> */} {/* </BorderGradient> */}
</BlurView> </BlurView>
+3 -2
View File
@@ -98,8 +98,9 @@ const PublishYoutube = () => {
} }
setSaving(true) setSaving(true)
try { try {
const publishCallable = firebase.functions().httpsCallable('youtube-publishPlaybackToYoutube') // publication sur youtube en standby
await publishCallable({ projectId }) // const publishCallable = firebase.functions().httpsCallable('youtube-publishPlaybackToYoutube')
// await publishCallable({ projectId })
setTooltip?.({ setTooltip?.({
type: 'success', type: 'success',
text: 'Publication lancée sur YouTube', text: 'Publication lancée sur YouTube',