NotificationHistory: better display for unread notifications

This commit is contained in:
Ly-sec 2025-09-07 15:09:30 +02:00
parent 4578aad0bc
commit a2ea3c116d
3 changed files with 21 additions and 6 deletions

View file

@ -299,6 +299,8 @@ Singleton {
property JsonObject notifications: JsonObject {
property bool doNotDisturb: false
property list<string> monitors: []
// Last time the user opened the notification history (ms since epoch)
property double lastSeenTs: 0
}
// audio

View file

@ -74,16 +74,21 @@ NIconButton {
z: 2
active: userShowUnreadBadge && (!userHideWhenZero || computeUnreadCount() > 0)
sourceComponent: Rectangle {
width: 16 * scaling
id: badge
readonly property int count: computeUnreadCount()
readonly property string label: count <= 99 ? String(count) : "99+"
readonly property real pad: 8 * scaling
height: 16 * scaling
radius: width / 2
width: Math.max(height, textNode.implicitWidth + pad)
radius: height / 2
color: Color.mError
border.color: Color.mSurface
border.width: 1
visible: computeUnreadCount() > 0 || !userHideWhenZero
visible: count > 0 || !userHideWhenZero
NText {
id: textNode
anchors.centerIn: parent
text: Math.min(computeUnreadCount(), 9)
text: badge.label
font.pointSize: Style.fontSizeXXS * scaling
color: Color.mOnError
}

View file

@ -201,12 +201,17 @@ Singleton {
const items = historyAdapter.history || []
for (var i = 0; i < items.length; i++) {
const it = items[i]
// Coerce legacy second-based timestamps to milliseconds
var ts = it.timestamp
if (typeof ts === "number" && ts < 1e12) {
ts = ts * 1000
}
historyModel.append({
"summary": it.summary || "",
"body": it.body || "",
"appName": it.appName || "",
"urgency": it.urgency,
"timestamp": it.timestamp ? new Date(it.timestamp) : new Date()
"timestamp": ts ? new Date(ts) : new Date()
})
}
} catch (e) {
@ -225,7 +230,10 @@ Singleton {
"body": n.body,
"appName": n.appName,
"urgency": n.urgency,
"timestamp": (n.timestamp instanceof Date) ? n.timestamp.getTime() : n.timestamp
"timestamp"// Always persist in milliseconds
: (n.timestamp instanceof Date) ? n.timestamp.getTime(
) : (typeof n.timestamp === "number"
&& n.timestamp < 1e12 ? n.timestamp * 1000 : n.timestamp)
})
}
historyAdapter.history = arr