From ff79b0c15a045a1b3219dc179f684bf29b119a1c Mon Sep 17 00:00:00 2001
From: Matthias Nott <mnott@mnsoft.org>
Date: Sun, 22 Mar 2026 20:09:25 +0100
Subject: [PATCH] fix: play/pause toggle, recording captures session at start
---
lib/screens/chat_screen.dart | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/lib/screens/chat_screen.dart b/lib/screens/chat_screen.dart
index 3137ff4..a1f82f8 100644
--- a/lib/screens/chat_screen.dart
+++ b/lib/screens/chat_screen.dart
@@ -480,14 +480,21 @@
_scrollToBottom();
}
+ String? _recordingSessionId; // Capture session at recording start
+
Future<void> _startRecording() async {
+ _recordingSessionId = ref.read(activeSessionIdProvider);
final path = await AudioService.startRecording();
if (path != null) {
setState(() => _isRecording = true);
+ } else {
+ _recordingSessionId = null;
}
}
Future<void> _stopRecording() async {
+ final targetSession = _recordingSessionId;
+ _recordingSessionId = null;
final path = await AudioService.stopRecording();
setState(() => _isRecording = false);
@@ -512,7 +519,7 @@
'audioBase64': b64,
'content': '',
'messageId': message.id,
- 'sessionId': ref.read(activeSessionIdProvider),
+ 'sessionId': targetSession,
});
_scrollToBottom();
@@ -551,12 +558,17 @@
if (message.audioUri == null) return;
// Toggle: if this message is already playing, stop it
- if (_playingMessageId == message.id && AudioService.isPlaying) {
+ if (_playingMessageId == message.id) {
AudioService.stopPlayback();
setState(() => _playingMessageId = null);
return;
}
+ // Stop any current playback first
+ if (_playingMessageId != null) {
+ AudioService.stopPlayback();
+ }
+
setState(() => _playingMessageId = message.id);
if (message.audioUri!.startsWith('/')) {
--
Gitblit v1.3.1