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