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:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user