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 */}