fix(voice-call): Improve async handling and state management

Refactor voice call service to handle asynchronous operations more
precisely. Update method signatures to be async, use unawaited for
non-blocking calls, and ensure proper state reset between sessions.
Improve error handling and resource management for voice input and
text-to-speech services.
This commit is contained in:
cogwheel
2026-02-05 17:53:09 +05:30
parent c75898546a
commit dc2495dca0
5 changed files with 44 additions and 15 deletions

View File

@@ -376,6 +376,28 @@ class TtsManager {
}
}
/// Resets the manager state for a new session.
///
/// Call this between voice calls to ensure clean state. This clears
/// playback buffers and resets session tracking without destroying
/// the singleton instance.
Future<void> reset() async {
await stop();
// Reset playback state
_resetPlaybackState();
_activeSession = null;
_sessionCounter = 0;
// Reset server audio buffer
_serverAudioBuffer.clear();
_serverWaitingForNext = false;
// Reset cached voice defaults so they're refetched if needed
_serverDefaultVoice = null;
_serverDefaultVoiceFuture = null;
}
/// Disposes the manager and releases resources.
Future<void> dispose() async {
await stop();