classroom beforeunload pagehide

This commit is contained in:
Sedat Öztürk 2025-08-30 14:34:12 +03:00
parent 55c9464c5e
commit 6eea5f8880

View file

@ -133,8 +133,6 @@ const RoomDetail: React.FC = () => {
autoMuteNewParticipants: true, autoMuteNewParticipants: true,
}) })
const hasTeacher = (list: ClassroomParticipantDto[]) => list.some((p) => p.isTeacher)
const signalRServiceRef = useRef<SignalRService>() const signalRServiceRef = useRef<SignalRService>()
const webRTCServiceRef = useRef<WebRTCService>() const webRTCServiceRef = useRef<WebRTCService>()
@ -668,17 +666,6 @@ const RoomDetail: React.FC = () => {
return `${mins}m` return `${mins}m`
} }
const getTimeSince = (timestamp: string) => {
const now = new Date()
const time = new Date(timestamp)
const diffMinutes = Math.floor((now.getTime() - time.getTime()) / 60000)
if (diffMinutes < 1) return 'Az önce'
if (diffMinutes < 60) return `${diffMinutes} dakika önce`
const hours = Math.floor(diffMinutes / 60)
return `${hours} saat önce`
}
const getFileIcon = (type: string) => { const getFileIcon = (type: string) => {
if (type.includes('pdf')) return <FaFilePdf className="text-red-500" /> if (type.includes('pdf')) return <FaFilePdf className="text-red-500" />
if ( if (
@ -700,43 +687,6 @@ const RoomDetail: React.FC = () => {
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i] return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]
} }
const handleDrop = (e: React.DragEvent) => {
e.preventDefault()
setDragOver(false)
if (user.role !== 'teacher' || !handleUploadDocument) return
const files = Array.from(e.dataTransfer.files)
files.forEach((file) => handleUploadDocument(file))
}
const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {
if (user.role !== 'teacher' || !handleUploadDocument) return
const files = Array.from(e.target.files || [])
files.forEach((file) => handleUploadDocument(file))
// Reset input
if (fileInputRef.current) {
fileInputRef.current.value = ''
}
}
const getLayoutIcon = (type: string) => {
switch (type) {
case 'grid':
return <FaTh size={24} />
case 'speaker':
return <FaExpand size={24} />
case 'presentation':
return <FaDesktop size={24} />
case 'sidebar':
return <FaUsers size={24} />
default:
return <FaTh size={24} />
}
}
const renderSidePanel = () => { const renderSidePanel = () => {
if (!activeSidePanel) return null if (!activeSidePanel) return null
@ -812,6 +762,16 @@ const RoomDetail: React.FC = () => {
} }
} }
useEffect(() => {
window.addEventListener('beforeunload', handleLeaveCall)
window.addEventListener('pagehide', handleLeaveCall)
return () => {
window.removeEventListener('beforeunload', handleLeaveCall)
window.removeEventListener('pagehide', handleLeaveCall)
}
}, [classSession.id])
return ( return (
<> <>
<Helmet <Helmet