import React, { useState } from "react"; import { createRoot } from "react-dom/client"; import "./pregunta.css"; function App() { const params = new URLSearchParams(window.location.search); const isOk = params.get("ok") === "1"; const isKo = params.get("ko") === "1"; const [text, setText] = useState(""); const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(null); if (isOk) { return (
argument.es

¡Pregunta enviada!

Tu pregunta se usará en el próximo sorteo entre las IAs. ¡Gracias por participar!

Volver al juego
); } if (isKo) { return (
argument.es

Pago cancelado

El pago no se completó. Tu pregunta no ha sido guardada.

Intentar de nuevo
Volver al juego
); } async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setError(null); setSubmitting(true); try { const res = await fetch("/api/pregunta/iniciar", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ text: text.trim() }), }); if (!res.ok) { const msg = await res.text(); throw new Error(msg || `Error ${res.status}`); } const data = (await res.json()) as { tpvUrl: string; merchantParams: string; signature: string; signatureVersion: string; }; // Build and auto-submit the Redsys payment form const form = document.createElement("form"); form.method = "POST"; form.action = data.tpvUrl; for (const [name, value] of Object.entries({ Ds_SignatureVersion: data.signatureVersion, Ds_MerchantParameters: data.merchantParams, Ds_Signature: data.signature, })) { const input = document.createElement("input"); input.type = "hidden"; input.name = name; input.value = value; form.appendChild(input); } document.body.appendChild(form); form.submit(); } catch (err) { setError(err instanceof Error ? err.message : "Error al procesar la solicitud"); setSubmitting(false); } } return (
argument.es

Propón una pregunta

Paga 1€ y tu pregunta de completar-la-frase se usará en el próximo sorteo entre las IAs.