feat: implement audio/video call functionality in chat
- Added a new schema for managing audio/video calls, including fields for call type, room name, and participant management. - Enhanced ChatWindow component to support initiating audio and video calls with dynamic loading of the CallWindow component. - Updated package dependencies to include 'lib-jitsi-meet' for call handling. - Refactored existing code to accommodate new call features and improve user experience.
This commit is contained in:
@@ -827,6 +827,44 @@ export default defineSchema({
|
||||
.index("by_conversa_usuario", ["conversaId", "usuarioId"])
|
||||
.index("by_usuario", ["usuarioId"]),
|
||||
|
||||
// Sistema de Chamadas de Áudio/Vídeo
|
||||
chamadas: defineTable({
|
||||
conversaId: v.id("conversas"),
|
||||
tipo: v.union(v.literal("audio"), v.literal("video")),
|
||||
roomName: v.string(), // Nome único da sala Jitsi
|
||||
criadoPor: v.id("usuarios"), // Anfitrião/criador
|
||||
participantes: v.array(v.id("usuarios")),
|
||||
status: v.union(
|
||||
v.literal("aguardando"),
|
||||
v.literal("em_andamento"),
|
||||
v.literal("finalizada"),
|
||||
v.literal("cancelada")
|
||||
),
|
||||
iniciadaEm: v.optional(v.number()),
|
||||
finalizadaEm: v.optional(v.number()),
|
||||
duracaoSegundos: v.optional(v.number()),
|
||||
gravando: v.boolean(),
|
||||
gravacaoIniciadaPor: v.optional(v.id("usuarios")),
|
||||
gravacaoIniciadaEm: v.optional(v.number()),
|
||||
gravacaoFinalizadaEm: v.optional(v.number()),
|
||||
configuracoes: v.optional(v.object({
|
||||
audioHabilitado: v.boolean(),
|
||||
videoHabilitado: v.boolean(),
|
||||
participantesConfig: v.optional(v.array(v.object({
|
||||
usuarioId: v.id("usuarios"),
|
||||
audioHabilitado: v.boolean(),
|
||||
videoHabilitado: v.boolean(),
|
||||
forcadoPeloAnfitriao: v.optional(v.boolean()), // Se foi forçado pelo anfitrião
|
||||
})))
|
||||
})),
|
||||
criadoEm: v.number(),
|
||||
})
|
||||
.index("by_conversa", ["conversaId", "status"])
|
||||
.index("by_conversa_ativa", ["conversaId", "status"])
|
||||
.index("by_criado_por", ["criadoPor"])
|
||||
.index("by_status", ["status"])
|
||||
.index("by_room_name", ["roomName"]),
|
||||
|
||||
notificacoes: defineTable({
|
||||
usuarioId: v.id("usuarios"),
|
||||
tipo: v.union(
|
||||
|
||||
Reference in New Issue
Block a user