Update chat_window.php

This commit is contained in:
Lizandro Guarnizo
2026-01-22 11:49:45 -05:00
parent b3de3a86a9
commit 4c133a9248
+42 -19
View File
@@ -1485,36 +1485,59 @@ if (empty($user_id)) {
try {
showTyping();
// Si es WebM y no se convirtió en servidor, intentar convertir en el navegador a OGG
if (selectedFile && selectedFile.type === 'audio/webm') {
try {
selectedFile = await convertWebmToOgg(selectedFile);
showAlert('Conversión a OGG completada localmente', 'success');
} catch (convErr) {
console.warn('Conversión local falló:', convErr);
showAlert('No se pudo convertir el audio localmente. Se intentará subir el archivo original.', 'warning');
}
}
// Subir archivo
// Subir archivo inicialmente
const formData = new FormData();
formData.append('file', selectedFile);
formData.append('uploaded_by', userId);
const uploadResponse = await fetch('api/upload_media.php', {
method: 'POST',
body: formData
});
const uploadData = await uploadResponse.json();
let uploadData = await uploadResponse.json();
if (!uploadData.success) {
throw new Error(uploadData.error || 'Error subiendo archivo');
}
// Avisar si la conversión falló en el servidor (ej. shell_exec deshabilitado o sin ffmpeg)
if (uploadData.conversion_error) {
console.warn('upload conversion issue:', uploadData.conversion_error);
// Si el servidor no pudo convertir (p. ej. shell_exec disabled), intentar conversión en navegador y re-subir
let clientConversionTried = false;
if (uploadData.conversion_error && selectedFile && selectedFile.type === 'audio/webm') {
console.debug('Server conversion failed:', uploadData.conversion_error);
showAlert('Servidor no pudo convertir el audio; intentando conversión local en el navegador...', 'info');
try {
clientConversionTried = true;
const converted = await convertWebmToOgg(selectedFile);
// Re-subir archivo convertido
const formData2 = new FormData();
formData2.append('file', converted);
formData2.append('uploaded_by', userId);
const uploadResponse2 = await fetch('api/upload_media.php', {
method: 'POST',
body: formData2
});
const uploadData2 = await uploadResponse2.json();
if (!uploadData2.success) {
throw new Error(uploadData2.error || 'Error subiendo archivo convertido');
}
uploadData = uploadData2; // usar el resultado de la re-subida
selectedFile = converted; // actualizar selectedFile a la versión convertida
showAlert('Conversión local completada y archivo subido correctamente', 'success');
console.debug('Client-side conversion and reupload succeeded');
} catch (convErr) {
console.error('Client-side conversion failed:', convErr);
showAlert('No se pudo convertir el audio en el navegador: ' + (convErr.message || convErr), 'danger');
// seguimos con el archivo original subido; avisamos al usuario
}
}
// Si aún hay conversion_error y no se intentó conversión en cliente, avisar
if (uploadData.conversion_error && !clientConversionTried) {
showAlert('Advertencia: La conversión de audio no se realizó en el servidor. El audio puede no reproducirse en algunos clientes. (' + uploadData.conversion_error + ')', 'warning');
}