fix(sessions): lista vuota sul device — modello C++ con ruoli (v0.1.2)

Causa: su Qt 5.6 (kit Sailfish 5.1) una QVariantList di QVariantMap
usata come model non fa risolvere i campi nei delegate QML
(model.title/message_count/updated_at = undefined -> righe vuote), pur
con payload corretto dal server (verificato con cattura reale del 12/09).

- Nuovo src/sessionsmodel.{h,cpp}: QAbstractListModel con ruoli
  session_id/title/message_count/updated_at; api.sessions ora e' il
  modello, api.sessionsCount per lo stato "nessuna sessione"
- /api/sessions con sidebar_source=webui&exclude_hidden=1 (come la
  sidebar del browser: solo sessioni WebUI, niente CLI/cron/nascoste)
- SessionsPage: describe(message_count, updated_at) con parametri espliciti
- PROTOCOL.md: payload sessions verificato + nota del pitfall Qt 5.6
This commit is contained in:
2026-09-12 08:47:28 +02:00
parent 98139be96a
commit 479edb0f99
11 changed files with 157 additions and 30 deletions
+6 -6
View File
@@ -58,7 +58,7 @@ Page {
width: parent.width
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.secondaryColor
text: page.describe(model)
text: page.describe(model.message_count, model.updated_at)
}
}
@@ -66,7 +66,7 @@ Page {
}
ViewPlaceholder {
enabled: api.sessions.length === 0 && !api.busy
enabled: api.sessionsCount === 0 && !api.busy
text: qsTr("No sessions")
hintText: qsTr("Pull down to create a new session")
}
@@ -119,9 +119,9 @@ Page {
chat.newSession()
}
function describe(m) {
var n = m.message_count ? m.message_count : 0
var d = new Date((m.updated_at ? m.updated_at : 0) * 1000)
return n + qsTr(" messages") + " · " + Qt.formatDateTime(d, "dd/MM HH:mm")
function describe(n, u) {
var c = n ? n : 0
var d = new Date((u ? u : 0) * 1000)
return c + qsTr(" messages") + " · " + Qt.formatDateTime(d, "dd/MM HH:mm")
}
}