feat: connect desktop sessions and streaming
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user