From 167c8431eb93631f39583ff557223b0d6a0535bc Mon Sep 17 00:00:00 2001 From: Sidney Date: Tue, 21 Apr 2026 22:29:17 -0300 Subject: [PATCH] fix: corrige tela preta da camera traseira e aplica correcao global de imagens --- manager/components/AttendanceQuery.tsx | 32 ++++++++++++++++------ manager/components/Classes.tsx | 16 ++++++++++- manager/components/ReportCard.tsx | 16 ++++++++++- manager/components/Settings.tsx | 18 +++++++++++- manager/components/Students.tsx | 22 +++++++++++++-- manager/server.selfhosted.js | 38 ++++++++++++++++---------- manager/test-db.js | 2 ++ 7 files changed, 117 insertions(+), 27 deletions(-) create mode 100644 manager/test-db.js 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') ? ( -