regresame esto con console logs resumidos

    function subidaArchivosChat() {
        const ids = ['enviarAdjunto', 'bloqueChat', 'previewChatAudio', 'previewChatArchivo', 'previewChatImagen'];
        const elements = ids.reduce((acc, id) => {
            const el = document.getElementById(id);
            if (!el) console.warn(`Elemento con id="${id}" no encontrado en el DOM.`);
            acc[id] = el;
            return acc;
        }, {});
    
        const missingElements = Object.entries(elements)
            .filter(([_, el]) => !el)
            .map(([id]) => id);
        if (missingElements.length) {
            return;
        }
    
        const { enviarAdjunto, bloqueChat, previewChatArchivo, previewChatAudio, previewChatImagen } = elements;

        enviarAdjunto.addEventListener('click', () => abrirSelectorArchivos('*/*'));
    
        const inicialChatSubida = event => {
            event.preventDefault();
            const file = event.dataTransfer?.files[0] || event.target.files[0];
    
            if (!file) return;
            if (file.size > 50 * 1024 * 1024) return alert('El archivo no puede superar los 50 MB.');
    
            // Determinar el tipo de archivo y ejecutar la subida correspondiente
            if (file.type.startsWith('audio/')) {
                subidaChatAudio(file);
            } else if (file.type.startsWith('image/')) {
                subidaChatImagen(file);
            } else {
                subidaChatArchivo(file);
            }
        };
    
        const subidaChatAudio = async file => {
            subidaChatProgreso = true;
            try {
                alert('Cargando archivo...');
                previewChatAudio.style.display = 'block';
                const progressBarId = waveAudio(file); 
                const { fileUrl, fileId } = await subidaChatBackend(file, progressBarId);
                archivoChatId = fileId;
                archivoChatUrl = fileUrl;
                subidaChatProgreso = false;
            } catch (error) {
                alert('Hubo un problema al cargar el audio. Inténtalo de nuevo.');
                subidaChatProgreso = false;
            }
        };
    
        const subidaChatImagen = async file => {
            subidaChatProgreso = true;
            updateChatPreviewImagen(file); 
            try {
                alert('Cargando archivo...');
                previewChatImagen.style.display = 'block';
                const progressBarId = `progress-${Date.now()}`; 
                const { fileUrl, fileId } = await subidaChatBackend(file, progressBarId);
                archivoChatId = fileId;
                archivoChatUrl = fileUrl;
                subidaChatProgreso = false;
            } catch (error) {
                alert('Hubo un problema al cargar la imagen. Inténtalo de nuevo.');
                subidaChatProgreso = false;
            }
        };
    
        const subidaChatArchivo = async file => {
            subidaChatProgreso = true;
            previewChatArchivo.style.display = 'block';
            previewChatArchivo.innerHTML = `
                <div class="file-name">${file.name}</div>
                <div id="barraProgresoFile" class="progress" style="width: 0%; height: 100%; background-color: #4CAF50; transition: width 0.3s;"></div>`;
            try {
                alert('Cargando archivo...');
                const progressBarId = `progress-${Date.now()}`; 
                const { fileUrl, fileId } = await subidaChatBackend(file, progressBarId);
                archivoChatId = fileId;
                archivoChatUrl = fileUrl;
                subidaChatProgreso = false;
            } catch (error) {
                alert('Hubo un problema al cargar el archivo. Inténtalo de nuevo.');
                subidaChatProgreso = false;
            }
        };
    
        const waveAudio = file => {
            const reader = new FileReader();
            const audioContainerId = `waveform-container-${Date.now()}`;
            const progressBarId = `progress-${Date.now()}`;
            reader.onload = e => {
                previewChatAudio.innerHTML = `
                    <div id="${audioContainerId}" class="waveform-container without-image" data-audio-url="${e.target.result}">
                        <audio controls style="width: 100%;"><source src="${e.target.result}" type="${file.type}"></audio>
                        <div class="file-name">${file.name}</div>
                    </div>
                    <div class="progress-bar" style="width: 100%; height: 2px; background-color: #ddd; margin-top: 10px;">
                        <div id="${progressBarId}" class="progress" style="width: 0%; height: 100%; background-color: #4CAF50; transition: width 0.3s;"></div>
                    </div>`;
            };
            reader.readAsDataURL(file);
            return progressBarId;
        };
    
        const updateChatPreviewImagen = file => {
            const reader = new FileReader();
            reader.onload = e => {
                previewChatImagen.innerHTML = `<img src="${e.target.result}" alt="Preview" style="width: 100%; height: 100%; object-fit: cover;">`;
                previewChatImagen.style.display = 'block';
            };
            reader.readAsDataURL(file);
        };
    
        bloqueChat.addEventListener('click', event => {
            const clickedElement = event.target.closest('.previewChatAudio, .previewChatImagen');
            if (clickedElement) {
                abrirSelectorArchivos(clickedElement.classList.contains('previewChatAudio') ? 'audio/*' : 'image/*');
            }
        });
    
        const abrirSelectorArchivos = tipoArchivo => {
            const input = document.createElement('input');
            input.type = 'file';
            input.accept = tipoArchivo;
            input.onchange = inicialChatSubida;
            input.click();
        };
    
        ['dragover', 'dragleave', 'drop'].forEach(eventName => {
            bloqueChat.addEventListener(eventName, e => {
                e.preventDefault();
                bloqueChat.style.backgroundColor = eventName === 'dragover' ? '#e9e9e9' : '';
                if (eventName === 'drop') inicialChatSubida(e);
            });
        });
    }