diff --git a/manager/components/AttendanceQuery.tsx b/manager/components/AttendanceQuery.tsx index 3bae070..111887a 100644 --- a/manager/components/AttendanceQuery.tsx +++ b/manager/components/AttendanceQuery.tsx @@ -49,6 +49,20 @@ const AttendanceQuery: React.FC = ({ data, updateData, dee const [viewingAttachment, setViewingAttachment] = useState(null); const [attendanceForAttachment, setAttendanceForAttachment] = useState(null); + // Helper para normalizar URLs de fotos (vacina contra cache antigo) + const normalizePhotoUrl = (url?: string) => { + if (!url || typeof url !== 'string') return ''; + if (url.startsWith('data:image') || url.startsWith('blob:')) return url; + if (url.startsWith('/storage/')) return url; + + try { + const match = url.match(/^https?:\/\/[^\/]+\/(.+)$/); + if (match) return `/storage/${match[1]}`; + } catch(e) {} + + return url; + }; + const toggleAttendanceStatus = (record: any) => { let updatedAttendance = [...(data.attendance || [])]; @@ -404,9 +418,9 @@ const AttendanceQuery: React.FC = ({ data, updateData, dee className="flex items-center justify-between p-4 bg-slate-50 hover:bg-indigo-50 rounded-xl border border-slate-100 hover:border-indigo-200 cursor-pointer transition-all group" >
-
+
{student.photo ? ( - {student.name} + {student.name} ) : ( student.name.charAt(0).toUpperCase() )} @@ -441,11 +455,13 @@ const AttendanceQuery: React.FC = ({ data, updateData, dee
-
+
{selectedStudent.photo ? ( - {selectedStudent.name} + {selectedStudent.name} ) : ( - +
+ {selectedStudent.name.charAt(0).toUpperCase()} +
)}
@@ -834,10 +850,10 @@ const AttendanceQuery: React.FC = ({ data, updateData, dee
- {viewingAttachment.startsWith('data:application/pdf') || viewingAttachment.includes('.pdf') ? ( -