Update chat_window.php
This commit is contained in:
+42
-19
@@ -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');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user