Files
vidconf/frontend/src/hooks/useIsOrganizer.ts
Max Ronzhin 42bfb88a22 feat(room): роль организатора в метаданных LiveKit-токена
Предварительная работа для очереди рук и принудительного мьюта (B1/B2):
build_join кладёт is_organizer:true в метаданные токена организатора
(создатель мгновенной конференции и владелец при обычном входе). Метаданные
токена — только подсказка для UI (см. предупреждение в докстринге
build_join), любое серверное действие организатора обязано перепроверяться
по conference.owner_id в БД — так и сделано в mute_participant (B2).

На фронте — общий парсер метаданных участника (lib/participantMetadata.ts,
переиспользован в RoomParticipantTile вместо локальной копии) и хук
useIsOrganizer (читает подсказку для локального участника через
useLocalParticipant — вызывается только внутри LiveKitRoom).
2026-08-01 22:06:10 +03:00

14 lines
784 B
TypeScript

import { useLocalParticipant } from '@livekit/components-react'
import { parseParticipantMetadata } from '@/lib/participantMetadata'
/**
* Организатор ли ТЕКУЩИЙ (локальный) участник комнаты — читает подсказку
* `is_organizer` из метаданных собственного LiveKit-токена (см.
* `lib/participantMetadata.ts`). Только для UI (показать/скрыть кнопки
* организатора) — серверные действия перепроверяют права по БД сами.
*/
export function useIsOrganizer(): boolean {
const { localParticipant } = useLocalParticipant()
return Boolean(parseParticipantMetadata(localParticipant.metadata).is_organizer)
}