Spaces:
Building
Building
Update flare-ui/src/app/services/conversation-manager.service.ts
Browse files
flare-ui/src/app/services/conversation-manager.service.ts
CHANGED
@@ -505,19 +505,23 @@ export class ConversationManagerService implements OnDestroy {
|
|
505 |
|
506 |
// Update last message with audio URL
|
507 |
const messages = this.messagesSubject.value;
|
508 |
-
if (messages.length > 0
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
518 |
}
|
519 |
-
} else {
|
520 |
-
console.warn('⚠️ No assistant message found to attach audio');
|
521 |
}
|
522 |
|
523 |
// Clear queue
|
@@ -535,6 +539,15 @@ export class ConversationManagerService implements OnDestroy {
|
|
535 |
console.error('❌ Error handling TTS audio:', error);
|
536 |
this.audioQueue = []; // Clear queue on error
|
537 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
538 |
}
|
539 |
|
540 |
private isValidBase64(str: string): boolean {
|
|
|
505 |
|
506 |
// Update last message with audio URL
|
507 |
const messages = this.messagesSubject.value;
|
508 |
+
if (messages.length > 0) {
|
509 |
+
const lastAssistantMessageIndex = this.findLastAssistantMessageIndex(messages);
|
510 |
+
if (lastAssistantMessageIndex >= 0) {
|
511 |
+
messages[lastAssistantMessageIndex].audioUrl = audioUrl;
|
512 |
+
this.messagesSubject.next([...messages]);
|
513 |
+
console.log('✅ Audio URL attached to assistant message at index:', lastAssistantMessageIndex);
|
514 |
+
|
515 |
+
// Auto-play if it's welcome message or if in playing_audio state
|
516 |
+
if (messages.length === 1 || this.currentStateSubject.value === 'playing_audio') {
|
517 |
+
setTimeout(() => {
|
518 |
+
console.log('🎵 Auto-playing audio...');
|
519 |
+
this.playAudio(audioUrl);
|
520 |
+
}, 500);
|
521 |
+
}
|
522 |
+
} else {
|
523 |
+
console.warn('⚠️ No assistant message found to attach audio');
|
524 |
}
|
|
|
|
|
525 |
}
|
526 |
|
527 |
// Clear queue
|
|
|
539 |
console.error('❌ Error handling TTS audio:', error);
|
540 |
this.audioQueue = []; // Clear queue on error
|
541 |
}
|
542 |
+
}
|
543 |
+
|
544 |
+
private findLastAssistantMessageIndex(messages: ConversationMessage[]): number {
|
545 |
+
for (let i = messages.length - 1; i >= 0; i--) {
|
546 |
+
if (messages[i].role === 'assistant') {
|
547 |
+
return i;
|
548 |
+
}
|
549 |
+
}
|
550 |
+
return -1;
|
551 |
}
|
552 |
|
553 |
private isValidBase64(str: string): boolean {
|