sozsoft-platform/ui/src/utils/hooks/useClassroomLogic.ts
Sedat ÖZTÜRK bdc7f744aa Video Rooms
2026-05-08 08:34:29 +03:00

54 lines
1.5 KiB
TypeScript

import { Role, RoleState, VideoroomDto } from '@/proxy/videoroom/models'
import { useStoreActions, useStoreState } from '@/store/store'
import { useState } from 'react'
export function useVideoroomLogic() {
const { user } = useStoreState((state) => state.auth)
const { setUser } = useStoreActions((actions) => actions.auth.user)
const [roleState, setRoleState] = useState<RoleState>('role-selection')
const [currentClass, setCurrentClass] = useState<VideoroomDto | null>(null)
const [allClasses, setAllClasses] = useState<VideoroomDto[]>([])
const handleRoleSelect = (role: Role) => {
setUser({
...user,
role,
})
setRoleState('dashboard')
}
const handleCreateClass = (classData: Partial<VideoroomDto>) => {
const newClass = {
...classData,
id: crypto.randomUUID(),
teacherId: '',
teacherName: '',
isActive: false,
isScheduled: true,
participantCount: 0,
} as VideoroomDto
setAllClasses((prev) => [...prev, newClass])
}
const handleEditClass = (classId: string, classData: Partial<VideoroomDto>) => {
setAllClasses((prev) => prev.map((c) => (c.id === classId ? { ...c, ...classData } : c)))
}
const handleDeleteClass = (classId: string) => {
setAllClasses((prev) => prev.filter((c) => c.id !== classId))
}
return {
roleState,
setRoleState,
currentClass,
setCurrentClass,
allClasses,
setAllClasses,
handleRoleSelect,
handleCreateClass,
handleEditClass,
handleDeleteClass,
}
}