Fase 3 (isla reutilizable): servicios de personaje de pago; aplica a rename
Componente genérico CharacterPurchaseForm (selector de personaje + botón con precio)
+ entry character_purchase, configurable por data-* en la plantilla. Al enviar, la
vista devuelve {session_id, stripe_public_key} y se redirige al Checkout de Stripe
(helper stripe.ts que carga Stripe.js). Reutilizable por rename/customize/race/
faction/level/gold/transfer... cambiando solo los data-* y la lista de personajes
(json_script). Primer uso: rename_character.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import { StrictMode } from 'react'
|
||||
import { createRoot } from 'react-dom/client'
|
||||
import { CharacterPurchaseForm } from '../components/CharacterPurchaseForm'
|
||||
|
||||
// Entry genérico para todos los servicios de personaje de pago. La plantilla
|
||||
// configura el formulario con data-* y una lista de personajes en json_script.
|
||||
const el = document.getElementById('character-purchase-app')
|
||||
if (el) {
|
||||
const dataEl = document.getElementById('character-purchase-data')
|
||||
const characters: string[] = dataEl ? JSON.parse(dataEl.textContent || '[]') : []
|
||||
createRoot(el).render(
|
||||
<StrictMode>
|
||||
<CharacterPurchaseForm
|
||||
url={el.dataset.url || ''}
|
||||
csrfToken={el.dataset.csrf || ''}
|
||||
characters={characters}
|
||||
price={el.dataset.price || ''}
|
||||
label={el.dataset.label || 'Comprar'}
|
||||
field={el.dataset.field || 'character'}
|
||||
buttonClass={el.dataset.buttonClass || 'rename-button'}
|
||||
/>
|
||||
</StrictMode>,
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user