salomonsky commited on
Commit
3fc951b
·
verified ·
1 Parent(s): 5edf1aa

Update cointube.jsx

Browse files
Files changed (1) hide show
  1. cointube.jsx +8 -4
cointube.jsx CHANGED
@@ -23,7 +23,8 @@ import {
23
  } from 'firebase/firestore';
24
 
25
  // --- Variables Globales ---
26
- let app, auth, db; // Se inicializan más tarde
 
27
 
28
  // --- Constantes del Sistema ---
29
  const ADMIN_EMAIL = "photonicsupernova@gmail.com";
@@ -54,6 +55,7 @@ export default function App() {
54
  const localCoinBufferRef = useRef(0);
55
 
56
  // --- 1. OBTENER CONFIGURACIÓN DEL SERVIDOR ---
 
57
  useEffect(() => {
58
  const initFirebase = async () => {
59
  try {
@@ -319,7 +321,8 @@ export default function App() {
319
  </aside>
320
  </main>
321
 
322
- {/* TAB: PROMOCIONAR (Pasamos db como prop para asegurar que llegue) */}
 
323
  <main className={`${currentTab === 'promocionar' ? 'flex' : 'hidden'} flex-1 items-center justify-center`}>
324
  <PromoCheck
325
  user={user}
@@ -376,6 +379,7 @@ function PromoUnlocked({ userId, isAdmin, videoCost, db }) {
376
  return;
377
  }
378
 
 
379
  if (!db) {
380
  setMessage({ text: "Error: Base de datos no conectada", type: 'error' });
381
  return;
@@ -385,12 +389,13 @@ function PromoUnlocked({ userId, isAdmin, videoCost, db }) {
385
  const title = isAdmin ? `Recomendado (Admin)` : `Video de Usuario`;
386
 
387
  try {
388
- // Usamos el db que nos pasaron por PROPS
389
  if (!isAdmin) {
390
  const userRef = doc(db, 'users', userId);
391
  await updateDoc(userRef, { coins: increment(-videoCost) });
392
  }
393
 
 
394
  const videosRef = collection(db, 'videos');
395
  await addDoc(videosRef, {
396
  title: title,
@@ -404,7 +409,6 @@ function PromoUnlocked({ userId, isAdmin, videoCost, db }) {
404
  setUrl('');
405
  } catch (error) {
406
  console.error("Error al subir:", error);
407
- // Muestra el error real en pantalla si es de permisos
408
  if (error.code === 'permission-denied') {
409
  setMessage({ text: "Permiso denegado: Revisa las reglas de Firestore", type: 'error' });
410
  } else {
 
23
  } from 'firebase/firestore';
24
 
25
  // --- Variables Globales ---
26
+ // Se definen fuera para que mantengan su valor, pero se inicializan dentro
27
+ let app, auth, db;
28
 
29
  // --- Constantes del Sistema ---
30
  const ADMIN_EMAIL = "photonicsupernova@gmail.com";
 
55
  const localCoinBufferRef = useRef(0);
56
 
57
  // --- 1. OBTENER CONFIGURACIÓN DEL SERVIDOR ---
58
+ // Esto reemplaza a las credenciales hardcodeadas
59
  useEffect(() => {
60
  const initFirebase = async () => {
61
  try {
 
321
  </aside>
322
  </main>
323
 
324
+ {/* TAB: PROMOCIONAR */}
325
+ {/* Aquí pasamos 'db' como prop, que es lo que fallaba antes */}
326
  <main className={`${currentTab === 'promocionar' ? 'flex' : 'hidden'} flex-1 items-center justify-center`}>
327
  <PromoCheck
328
  user={user}
 
379
  return;
380
  }
381
 
382
+ // Validación extra para asegurar que db existe
383
  if (!db) {
384
  setMessage({ text: "Error: Base de datos no conectada", type: 'error' });
385
  return;
 
389
  const title = isAdmin ? `Recomendado (Admin)` : `Video de Usuario`;
390
 
391
  try {
392
+ // 1. Descontar monedas (si no es admin)
393
  if (!isAdmin) {
394
  const userRef = doc(db, 'users', userId);
395
  await updateDoc(userRef, { coins: increment(-videoCost) });
396
  }
397
 
398
+ // 2. Guardar video en Firestore
399
  const videosRef = collection(db, 'videos');
400
  await addDoc(videosRef, {
401
  title: title,
 
409
  setUrl('');
410
  } catch (error) {
411
  console.error("Error al subir:", error);
 
412
  if (error.code === 'permission-denied') {
413
  setMessage({ text: "Permiso denegado: Revisa las reglas de Firestore", type: 'error' });
414
  } else {