From 835a7badd28cf2d0d43c85ec564aa37f4e97b23b Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Sat, 24 Jan 2026 01:38:34 -0500 Subject: [PATCH] Update conversations.php --- conversations.php | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/conversations.php b/conversations.php index 38684b9..6286889 100644 --- a/conversations.php +++ b/conversations.php @@ -873,6 +873,9 @@ + @@ -1344,8 +1347,9 @@ try { self.initRecordingHandlers(); } catch(e) { console.warn('initRecordingHandlers failed', e); } } + // While recording: clicking mic cancels the recording (as requested) if (self._mediaRecorder && self._mediaRecorder.state === 'recording') { - try { self.stopRecording(); } catch (e) { console.warn('stopRecording failed', e); } + try { self.cancelRecording(); } catch (e) { console.warn('cancelRecording failed', e); } } else { try { self.startRecording(); } catch (e) { console.warn('startRecording failed', e); alert('No se pudo iniciar la grabación.'); } } @@ -2430,12 +2434,30 @@ // set as selected file and show preview this.selectedFile = file; this.showMediaPreview(file); + // restore mic UI to default (not recording) + try { + const micEl2 = document.getElementById('mic-btn'); + if (micEl2) { + micEl2.innerHTML = micEl2.dataset._wa_prev || ''; + micEl2.title = 'Grabar audio'; + micEl2.classList.remove('recording-cancel'); + } + } catch(e) { /* ignore */ } + // Clear recorder reference to indicate stopped + this._mediaRecorder = null; }; this._mediaRecorder.start(); this._recordingStart = Date.now(); const ind = document.getElementById('recording-indicator'); if (ind) ind.style.display = 'block'; - const micEl = document.getElementById('mic-btn'); if (micEl) micEl.classList.add('recording'); + const micEl = document.getElementById('mic-btn'); if (micEl) { + // Show cancel on same button + micEl.dataset._wa_prev = micEl.innerHTML; + micEl.innerHTML = ''; + micEl.title = 'Cancelar'; + micEl.classList.add('recording'); + micEl.classList.add('recording-cancel'); + } // Ensure UI shows mic and hides send while recording if (this._updateSendMicVisibility) this._updateSendMicVisibility(); const update = () => { @@ -2474,7 +2496,14 @@ this._recordingInterval = null; this._recordingStart = null; const ind = document.getElementById('recording-indicator'); if (ind) ind.style.display = 'none'; - const micEl = document.getElementById('mic-btn'); if (micEl) micEl.classList.remove('recording'); + const micEl = document.getElementById('mic-btn'); if (micEl) { + micEl.classList.remove('recording'); + micEl.classList.remove('recording-cancel'); + micEl.innerHTML = micEl.dataset._wa_prev || ''; + micEl.title = 'Grabar audio'; + } + // hide delete button if present + const delBtn = document.getElementById('delete-file-btn'); if (delBtn) delBtn.style.display = 'none'; if (this._updateSendMicVisibility) this._updateSendMicVisibility(); }; @@ -2960,6 +2989,13 @@ // Mostrar preview preview.style.display = 'block'; + // Show delete button next to send + const delBtn = document.getElementById('delete-file-btn'); + if (delBtn) { + delBtn.style.display = 'inline-flex'; + delBtn.onclick = () => { this.cancelMediaUpload(); }; + } + // Use the main send handler: `sendMessage` will delegate to media send when a file is selected const sendBtn = document.getElementById('send-btn'); // ensure send button is enabled @@ -3065,7 +3101,8 @@ // Restaurar botón enviar const sendBtn = document.getElementById('send-btn'); - sendBtn.onclick = null; + if (sendBtn) { sendBtn.onclick = null; sendBtn.disabled = false; sendBtn.innerHTML = ''; } + const delBtn = document.getElementById('delete-file-btn'); if (delBtn) delBtn.style.display = 'none'; } renderMediaMessage(message) {