Sintomo sul device: l'app restava sullo splash in caricamento per sempre. Causa: QNetworkAccessManager non applica timeout — una richiesta che non riceve risposta (rete del telefono, server occupato) lasciava la UI in attesa infinita, senza errori visibili. - ApiClient::armTimeout(): watchdog per reply (abort -> normale percorso d'errore del chiamante). Applicato a: checkAuth (12 s), login (20 s), refreshSessions e openSession (60 s), newSession/chat-start/switchProfile (20-30 s), fetchProfiles (20 s), transcribe (300 s), tts (120 s). Nessun watchdog sullo stream SSE (longevo per design). - checkAuth: imposta lastError anche in errore (messaggio tradotto "Server not reachable (timeout)") e logga indirizzo ed esito - refreshSessions: log della durata (misurato sul probe: il primo fetch dopo un cambio profilo puo' prendere 11-16 s lato server, anche su DB minuscolo — l'app ora lo gestisce senza sembrare bloccata) - SplashPage: rete di sicurezza (se authChecked non arriva entro 15 s si va comunque al login) + log di instradamento - i18n: nuova stringa tradotta it/fr/de
51 lines
1.3 KiB
QML
51 lines
1.3 KiB
QML
import QtQuick 2.0
|
|
import Sailfish.Silica 1.0
|
|
|
|
// Avvio: verifica lo stato dell'autenticazione (cookie persistito) e
|
|
// indirizza verso la lista sessioni o il login.
|
|
Page {
|
|
id: page
|
|
|
|
Column {
|
|
anchors.centerIn: parent
|
|
spacing: Theme.paddingLarge
|
|
width: parent.width - 2 * Theme.horizontalPageMargin
|
|
|
|
Label {
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
text: "Hermes"
|
|
font.pixelSize: Theme.fontSizeHuge
|
|
color: Theme.highlightColor
|
|
}
|
|
|
|
BusyIndicator {
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
size: BusyIndicatorSize.Large
|
|
running: true
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: api
|
|
onAuthChecked: page.route(loggedIn)
|
|
}
|
|
|
|
// Rete di sicurezza: se il controllo d'avvio non risponde entro 15 s
|
|
// (bug o rete muta), si va comunque al login invece di restare qui.
|
|
Timer {
|
|
interval: 15000
|
|
running: true
|
|
onTriggered: page.route(false)
|
|
}
|
|
|
|
Component.onCompleted: api.checkAuth()
|
|
|
|
function route(loggedIn) {
|
|
console.log("[hermes] route: loggedIn=" + loggedIn)
|
|
if (loggedIn)
|
|
pageStack.replace(Qt.resolvedUrl("SessionsPage.qml"))
|
|
else
|
|
pageStack.replace(Qt.resolvedUrl("LoginPage.qml"))
|
|
}
|
|
}
|