From 785af983dad59df72b879dc96937c0b545fe594f Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 26 May 2025 21:17:42 -0400 Subject: [PATCH] Fixed the ability to add monsters while a fight is going. --- src/App.js | 51 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/src/App.js b/src/App.js index 6b55776..e1ccd6b 100644 --- a/src/App.js +++ b/src/App.js @@ -1,8 +1,8 @@ -import React, { useState, useEffect, useRef } from 'react'; +import React, { useState, useEffect, useRef, useMemo } from 'react'; import { initializeApp } from 'firebase/app'; import { getAuth, signInAnonymously, onAuthStateChanged, signInWithCustomToken } from 'firebase/auth'; -import { getFirestore, doc, setDoc, addDoc, getDoc, getDocs, collection, onSnapshot, updateDoc, deleteDoc, query, writeBatch } from 'firebase/firestore'; -import { PlusCircle, Users, Swords, Shield, Trash2, Eye, Edit3, Save, XCircle, ChevronsUpDown, UserCheck, UserX, HeartCrack, HeartPulse, Zap, /* ImageIcon removed */ EyeOff, ExternalLink, AlertTriangle } from 'lucide-react'; // ImageIcon removed +import { getFirestore, doc, setDoc, getDoc, getDocs, collection, onSnapshot, updateDoc, deleteDoc, query, writeBatch } from 'firebase/firestore'; +import { PlusCircle, Users, Swords, Trash2, Eye, Edit3, Save, XCircle, ChevronsUpDown, UserCheck, UserX, HeartCrack, HeartPulse, Zap, EyeOff, ExternalLink, AlertTriangle } from 'lucide-react'; // ImageIcon removed // --- Firebase Configuration --- const firebaseConfig = { @@ -92,6 +92,8 @@ function useFirestoreCollection(collectionPath, queryConstraints = []) { const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); + const queryString = useMemo(() => JSON.stringify(queryConstraints), [queryConstraints]); + useEffect(() => { if (!db || !collectionPath) { setData([]); @@ -103,8 +105,7 @@ function useFirestoreCollection(collectionPath, queryConstraints = []) { setIsLoading(true); setError(null); - const constraints = Array.isArray(queryConstraints) ? queryConstraints : []; - const q = query(collection(db, collectionPath), ...constraints); + const q = query(collection(db, collectionPath), ...queryConstraints); const unsubscribe = onSnapshot(q, (snapshot) => { const items = snapshot.docs.map(doc => ({ id: doc.id, ...doc.data() })); @@ -118,7 +119,8 @@ function useFirestoreCollection(collectionPath, queryConstraints = []) { }); return () => unsubscribe(); - }, [collectionPath, JSON.stringify(queryConstraints)]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [collectionPath, queryString]); return { data, isLoading, error }; } @@ -218,6 +220,7 @@ function App() { TTRPG Initiative Tracker
+ {/* UID display removed */}
); @@ -372,9 +375,9 @@ function AdminView({ userId }) { className={cardClasses} style={cardStyle} > - {/* Overlay for text readability if background image exists */}

{campaign.name}

+ {/* ImageIcon removed from here */}