feat: connect desktop sessions and streaming

This commit is contained in:
2026-07-30 20:18:11 +02:00
parent 1658e0485e
commit cf35148576
7 changed files with 150 additions and 21 deletions
+26 -2
View File
@@ -25,6 +25,7 @@ from PySide6.QtWidgets import (
QWidget,
)
from javis.core.provider_router import ApprovalChoice
from javis.providers.base import ChatMessage
from javis.security.privacy import PrivacyDecision
from javis.ui.chat_controller import DesktopController
@@ -63,7 +64,7 @@ class MainWindow(QMainWindow):
self._build_ui()
self._connect_signals()
self._apply_style()
self._new_session()
self._open_initial_session()
self._animation = QTimer(self)
self._animation.timeout.connect(self._animate_state)
self._animation.start(450)
@@ -191,6 +192,20 @@ class MainWindow(QMainWindow):
self.message_edit.setFocus()
self._refresh_status()
def _open_initial_session(self) -> None:
try:
sessions = self.controller.list_sessions()
if sessions:
loaded = self.controller.load_session(sessions[0].id)
self._messages = list(loaded.messages)
self._render_chat()
self._refresh_sessions()
self._refresh_status()
return
except Exception as exc:
self._show_error(str(exc))
self._new_session()
def _refresh_sessions(self) -> None:
try:
sessions = self.controller.list_sessions(self.search_edit.text())
@@ -332,8 +347,17 @@ class MainWindow(QMainWindow):
box.setInformativeText(f"Lokale Einstufung: {decision.reason}")
allow = box.addButton("Einmal erlauben", QMessageBox.AcceptRole)
local = box.addButton("Lokal beantworten", QMessageBox.RejectRole)
cancel = box.addButton("Abbrechen", QMessageBox.DestructiveRole)
box.exec()
self.approval_bridge.resolve(box.clickedButton() is allow)
clicked = box.clickedButton()
choice = ApprovalChoice.CANCEL
if clicked is allow:
choice = ApprovalChoice.ALLOW
elif clicked is local:
choice = ApprovalChoice.LOCAL
elif clicked is cancel:
choice = ApprovalChoice.CANCEL
self.approval_bridge.resolve(choice)
if box.clickedButton() is local:
self.statusBar().showMessage("Die Anfrage wird lokal beantwortet.", 3000)