sozsoft-platform/ui/src/utils/hooks/useClassroomLogic.ts

55 lines
1.5 KiB
TypeScript
Raw Normal View History

2026-05-08 05:34:29 +00:00
import { Role, RoleState, VideoroomDto } from '@/proxy/videoroom/models'
2026-02-24 20:44:16 +00:00
import { useStoreActions, useStoreState } from '@/store/store'
import { useState } from 'react'
2026-05-08 05:34:29 +00:00
export function useVideoroomLogic() {
2026-02-24 20:44:16 +00:00
const { user } = useStoreState((state) => state.auth)
const { setUser } = useStoreActions((actions) => actions.auth.user)
const [roleState, setRoleState] = useState<RoleState>('role-selection')
2026-05-08 05:34:29 +00:00
const [currentClass, setCurrentClass] = useState<VideoroomDto | null>(null)
const [allClasses, setAllClasses] = useState<VideoroomDto[]>([])
2026-02-24 20:44:16 +00:00
const handleRoleSelect = (role: Role) => {
setUser({
...user,
role,
})
setRoleState('dashboard')
}
2026-05-08 05:34:29 +00:00
const handleCreateClass = (classData: Partial<VideoroomDto>) => {
2026-02-24 20:44:16 +00:00
const newClass = {
...classData,
id: crypto.randomUUID(),
teacherId: '',
teacherName: '',
isActive: false,
isScheduled: true,
participantCount: 0,
2026-05-08 05:34:29 +00:00
} as VideoroomDto
2026-02-24 20:44:16 +00:00
setAllClasses((prev) => [...prev, newClass])
}
2026-05-08 05:34:29 +00:00
const handleEditClass = (classId: string, classData: Partial<VideoroomDto>) => {
2026-02-24 20:44:16 +00:00
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,
}
}