fixed autoscroll, second case, update received messages, resend text for information if voice message sendet
This commit is contained in:
parent
8fb95b884f
commit
8c1dac86d5
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
|
|
@ -1,4 +1,4 @@
|
|||
#Sun Mar 29 11:54:43 CEST 2026
|
||||
#Sun Mar 29 12:08:20 CEST 2026
|
||||
base.2=/home/duffy/Dokumente/programmierung/ARIA-AGENT/android/android/app/build/intermediates/dex/release/mergeDexRelease/classes2.dex
|
||||
path.2=classes2.dex
|
||||
base.1=/home/duffy/Dokumente/programmierung/ARIA-AGENT/android/android/app/build/intermediates/global_synthetics_dex/release/classes.dex
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -96,6 +96,24 @@ const ChatScreen: React.FC = () => {
|
|||
// RVS-Nachrichten abonnieren
|
||||
useEffect(() => {
|
||||
const unsubMessage = rvs.onMessage((message: RVSMessage) => {
|
||||
// STT-Ergebnis: Spracheingabe-Placeholder mit transkribiertem Text ersetzen
|
||||
if (message.type === 'stt_result') {
|
||||
const sttText = (message.payload.text as string) || '';
|
||||
if (sttText) {
|
||||
setMessages(prev => prev.map(m =>
|
||||
m.sender === 'user' && m.text.includes('Spracheingabe wird verarbeitet')
|
||||
? { ...m, text: sttText }
|
||||
: m
|
||||
));
|
||||
} else {
|
||||
// Keine Sprache erkannt — Placeholder entfernen
|
||||
setMessages(prev => prev.filter(m =>
|
||||
!(m.sender === 'user' && m.text.includes('Spracheingabe wird verarbeitet'))
|
||||
));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (message.type === 'chat') {
|
||||
// Nur Nachrichten von ARIA anzeigen — eigene Nachrichten werden lokal hinzugefuegt
|
||||
const sender = (message.payload.sender as string) || '';
|
||||
|
|
@ -207,9 +225,14 @@ const ChatScreen: React.FC = () => {
|
|||
// Auto-Scroll bei neuen Nachrichten
|
||||
useEffect(() => {
|
||||
if (messages.length > 0) {
|
||||
// Laengerer Delay damit FlatList fertig gerendert hat
|
||||
setTimeout(() => {
|
||||
flatListRef.current?.scrollToEnd({ animated: false });
|
||||
}, 300);
|
||||
// Nochmal animiert fuer den Fall dass sich die Hoehe geaendert hat
|
||||
setTimeout(() => {
|
||||
flatListRef.current?.scrollToEnd({ animated: true });
|
||||
}, 100);
|
||||
}, 600);
|
||||
}
|
||||
}, [messages]);
|
||||
|
||||
|
|
|
|||
|
|
@ -1047,9 +1047,27 @@ class ARIABridge:
|
|||
|
||||
if text.strip():
|
||||
logger.info("[rvs] STT Ergebnis: '%s'", text[:80])
|
||||
# STT-Ergebnis zurueck an die App senden (zur Anzeige, nicht nochmal verarbeiten)
|
||||
await self._send_to_rvs({
|
||||
"type": "stt_result",
|
||||
"payload": {
|
||||
"text": text,
|
||||
"sender": "user",
|
||||
},
|
||||
"timestamp": int(asyncio.get_event_loop().time() * 1000),
|
||||
})
|
||||
await self.send_to_core(text, source="app-voice")
|
||||
else:
|
||||
logger.info("[rvs] Keine Sprache erkannt — ignoriert")
|
||||
await self._send_to_rvs({
|
||||
"type": "stt_result",
|
||||
"payload": {
|
||||
"text": "",
|
||||
"error": "Keine Sprache erkannt",
|
||||
"sender": "user",
|
||||
},
|
||||
"timestamp": int(asyncio.get_event_loop().time() * 1000),
|
||||
})
|
||||
|
||||
except Exception:
|
||||
logger.exception("[rvs] Audio-Verarbeitung fehlgeschlagen")
|
||||
|
|
|
|||
|
|
@ -501,7 +501,9 @@
|
|||
}
|
||||
if (msg.type === 'rvs_chat') {
|
||||
const p = msg.msg.payload || {};
|
||||
addChat('received', p.text || '?', `via RVS (${p.sender || '?'})`);
|
||||
const sender = p.sender || '?';
|
||||
const chatType = (sender === 'aria') ? 'received' : 'sent';
|
||||
addChat(chatType, p.text || '?', `via RVS (${sender})`);
|
||||
return;
|
||||
}
|
||||
if (msg.type === 'proxy_result') {
|
||||
|
|
|
|||
|
|
@ -338,6 +338,14 @@ function handleGatewayMessage(msg) {
|
|||
log("info", "gateway", `ANTWORT: "${text.slice(0, 200)}"`);
|
||||
if (pipelineActive) pipelineEnd(true, `"${text.slice(0, 120)}"`);
|
||||
broadcast({ type: "chat_final", text, payload });
|
||||
// Antwort auch an RVS weiterleiten → App bekommt ARIAs Antworten
|
||||
if (rvsWs && rvsWs.readyState === WebSocket.OPEN && text) {
|
||||
rvsWs.send(JSON.stringify({
|
||||
type: "chat",
|
||||
payload: { text, sender: "aria" },
|
||||
timestamp: Date.now(),
|
||||
}));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue