feat: enhance call functionality and improve type safety
- Updated CallControls to replace the Record icon with Radio for better representation during recording states. - Refactored CallWindow to introduce Jitsi connection and conference interfaces, improving type safety and clarity in handling Jitsi events. - Streamlined event handling for connection and conference states, ensuring robust management of audio/video calls. - Enhanced ChatWindow to directly import CallWindow, simplifying the component structure and improving call handling logic. - Improved utility functions for window management to ensure compatibility with server-side rendering.
This commit is contained in:
@@ -9,9 +9,9 @@
|
||||
import UserAvatar from './UserAvatar.svelte';
|
||||
import ScheduleMessageModal from './ScheduleMessageModal.svelte';
|
||||
import SalaReuniaoManager from './SalaReuniaoManager.svelte';
|
||||
import CallWindow from '../call/CallWindow.svelte';
|
||||
import { getAvatarUrl } from '$lib/utils/avatarGenerator';
|
||||
import { browser } from '$app/environment';
|
||||
import { onMount } from 'svelte';
|
||||
import {
|
||||
Bell,
|
||||
X,
|
||||
@@ -40,19 +40,17 @@
|
||||
let showAdminMenu = $state(false);
|
||||
let showNotificacaoModal = $state(false);
|
||||
let iniciandoChamada = $state(false);
|
||||
let chamadaAtiva = $state<Id<'chamadas'> | null>(null);
|
||||
|
||||
// Importação dinâmica do CallWindow apenas no cliente
|
||||
let CallWindowComponent: any = $state(null);
|
||||
|
||||
const chamadaAtivaQuery = useQuery(api.chamadas.obterChamadaAtiva, {
|
||||
conversaId: conversaId as Id<'conversas'>
|
||||
});
|
||||
const chamadaAtual = $derived(chamadaAtivaQuery?.data);
|
||||
|
||||
const conversas = useQuery(api.chat.listarConversas, {});
|
||||
const isAdmin = useQuery(api.chat.verificarSeEhAdmin, {
|
||||
conversaId: conversaId as Id<'conversas'>
|
||||
});
|
||||
const chamadaAtivaQuery = useQuery(api.chamadas.obterChamadaAtiva, {
|
||||
conversaId: conversaId as Id<'conversas'>
|
||||
});
|
||||
|
||||
const conversa = $derived(() => {
|
||||
console.log('🔍 [ChatWindow] Buscando conversa ID:', conversaId);
|
||||
@@ -168,17 +166,6 @@
|
||||
chamadaAtiva = null;
|
||||
}
|
||||
|
||||
// Carregar CallWindow dinamicamente apenas no cliente
|
||||
onMount(async () => {
|
||||
if (browser && !CallWindowComponent) {
|
||||
try {
|
||||
const module = await import('../call/CallWindow.svelte');
|
||||
CallWindowComponent = module.default;
|
||||
} catch (error) {
|
||||
console.error('Erro ao carregar CallWindow:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Verificar se usuário é anfitrião da chamada atual
|
||||
const meuPerfil = useQuery(api.auth.getCurrentUser, {});
|
||||
@@ -501,10 +488,9 @@
|
||||
{/if}
|
||||
|
||||
<!-- Janela de Chamada -->
|
||||
{#if browser && chamadaAtiva && chamadaAtual && CallWindowComponent}
|
||||
{@const Component = CallWindowComponent}
|
||||
{#if browser && chamadaAtiva && chamadaAtual}
|
||||
<div class="pointer-events-none fixed inset-0 z-[9999]">
|
||||
<Component
|
||||
<CallWindow
|
||||
chamadaId={chamadaAtiva}
|
||||
conversaId={conversaId as Id<'conversas'>}
|
||||
tipo={chamadaAtual.tipo}
|
||||
|
||||
Reference in New Issue
Block a user