classroom beforeunload pagehide
This commit is contained in:
parent
55c9464c5e
commit
6eea5f8880
1 changed files with 10 additions and 50 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue