feat: propose coins
This commit is contained in:
@@ -16,7 +16,7 @@ import { useUser } from '../../providers/UserDataProvider'
|
||||
import { gutters, Palette } from '../../styles'
|
||||
import { FONT_FAMILY } from '../../styles/Fonts'
|
||||
import { normalizeStructureType } from '../../utils/songStructure'
|
||||
import { openCoinPackModal } from '../../utils/coinPackModal'
|
||||
import { showInsufficientCreditsAlert } from '../../utils/insufficientCredits'
|
||||
import ChooseGenre from './ChooseGenre'
|
||||
import ChooseInstruments from './ChooseInstruments'
|
||||
import ChooseRhythm from './ChooseRhythm'
|
||||
@@ -179,9 +179,11 @@ const ComposeSong = () => {
|
||||
typeof error?.message === 'string'
|
||||
? error.message.replace(/^functions\.https\.HttpsError:\s*/iu, '')
|
||||
: null
|
||||
throw new Error(
|
||||
const orderError = new Error(
|
||||
message || 'Une erreur est survenue lors de la création de la commande de crédits.'
|
||||
)
|
||||
orderError.code = error?.code
|
||||
throw orderError
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,11 +194,7 @@ const ComposeSong = () => {
|
||||
const availableCoins = Number.isFinite(coinBalance) ? coinBalance : 0
|
||||
if (availableCoins < MUSIC_GENERATION_COIN_COST) {
|
||||
setIsConfirmVisible(false)
|
||||
AppAlert(
|
||||
'Crédits insuffisants',
|
||||
"Tu n'as pas assez de pièces pour générer une musique. Recharge ton compte pour continuer."
|
||||
)
|
||||
openCoinPackModal()
|
||||
showInsufficientCreditsAlert(MUSIC_GENERATION_COIN_COST)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -206,6 +204,10 @@ const ComposeSong = () => {
|
||||
navigate(Routes.GeneratingSong, { config: musicConfig })
|
||||
} catch (error) {
|
||||
setIsConfirmVisible(false)
|
||||
if (error?.code === 'functions/failed-precondition') {
|
||||
showInsufficientCreditsAlert(MUSIC_GENERATION_COIN_COST)
|
||||
return
|
||||
}
|
||||
const message =
|
||||
error?.message || 'Une erreur est survenue lors du lancement de la génération.'
|
||||
AppAlert('Impossible de lancer la génération', message)
|
||||
|
||||
@@ -16,7 +16,7 @@ import { useUser } from '../../providers/UserDataProvider'
|
||||
import { gutters, Palette } from '../../styles'
|
||||
import { FONT_FAMILY } from '../../styles/Fonts'
|
||||
import { normalizeStructureType } from '../../utils/songStructure'
|
||||
import { openCoinPackModal } from '../../utils/coinPackModal'
|
||||
import { showInsufficientCreditsAlert } from '../../utils/insufficientCredits'
|
||||
import ChooseGenre from './ChooseGenre'
|
||||
import ChooseInstruments from './ChooseInstruments'
|
||||
import ChooseRhythm from './ChooseRhythm'
|
||||
@@ -238,9 +238,11 @@ const ComposeSong = () => {
|
||||
typeof error?.message === 'string'
|
||||
? error.message.replace(/^functions\.https\.HttpsError:\s*/iu, '')
|
||||
: null
|
||||
throw new Error(
|
||||
const orderError = new Error(
|
||||
message || 'Une erreur est survenue lors de la création de la commande de crédits.'
|
||||
)
|
||||
orderError.code = error?.code
|
||||
throw orderError
|
||||
}
|
||||
}, [currentUID, selectedProjectId])
|
||||
|
||||
@@ -251,11 +253,7 @@ const ComposeSong = () => {
|
||||
const availableCoins = Number.isFinite(coinBalance) ? coinBalance : 0
|
||||
if (availableCoins < MUSIC_GENERATION_COIN_COST) {
|
||||
setIsConfirmVisible(false)
|
||||
AppAlert(
|
||||
'Crédits insuffisants',
|
||||
"Tu n'as pas assez de pièces pour générer une musique. Recharge ton compte pour continuer."
|
||||
)
|
||||
openCoinPackModal()
|
||||
showInsufficientCreditsAlert(MUSIC_GENERATION_COIN_COST)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -265,6 +263,10 @@ const ComposeSong = () => {
|
||||
navigate(Routes.GeneratingSong, { config: musicConfig })
|
||||
} catch (error) {
|
||||
setIsConfirmVisible(false)
|
||||
if (error?.code === 'functions/failed-precondition') {
|
||||
showInsufficientCreditsAlert(MUSIC_GENERATION_COIN_COST)
|
||||
return
|
||||
}
|
||||
const message =
|
||||
error?.message || 'Une erreur est survenue lors du lancement de la génération.'
|
||||
AppAlert('Impossible de lancer la génération', message)
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
import AppAlert from '../components/Alert'
|
||||
import { openCoinPackModal } from './coinPackModal'
|
||||
|
||||
export const showInsufficientCreditsAlert = (requiredCredits) => {
|
||||
AppAlert(
|
||||
'Crédits insuffisants',
|
||||
`Cette création nécessite ${requiredCredits} crédits. Achète des crédits pour continuer.`,
|
||||
[
|
||||
{ text: 'Plus tard', style: 'cancel' },
|
||||
{ text: 'Acheter des crédits', onPress: openCoinPackModal },
|
||||
]
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user