Notification Decoration Revised (#5312)

1. I removed the grey dots for when there is activity in rooms set to mentions or mute.
2. For all unread rooms, I made the message preview text bold for better legibility
3. For rooms with no unreads, I made the font weight regular, again for legibility

We have also mergeg the new room list activity rendering with the existing feature hide unread badge feature flag and provide 3 variations: current production behavior, no badge but bolding, and no bolding and no badge
This commit is contained in:
amshak
2026-04-21 12:12:07 +01:00
committed by GitHub
parent 5b7ee5c455
commit 2a6f94ff48
36 changed files with 141 additions and 84 deletions
@@ -108,6 +108,8 @@ struct HomeScreenViewState: BindableState {
var hideInviteAvatars = false
var roomListActivityVisibility: RoomListActivityVisibility = .current
var reportRoomEnabled = false
var shouldShowSpaceFilters = false
@@ -197,6 +199,8 @@ struct HomeScreenRoom: Identifiable, Equatable {
let callBadgeType: CallBadgeType
}
var hasUnreads = false
let name: String
let isDirect: Bool
@@ -247,13 +251,20 @@ struct HomeScreenRoom: Identifiable, Equatable {
}
extension HomeScreenRoom {
init(summary: RoomSummary, hideUnreadMessagesBadge: Bool, seenInvites: Set<String> = []) {
init(summary: RoomSummary,
roomListActivityVisibility: RoomListActivityVisibility = .current,
seenInvites: Set<String> = []) {
let roomID = summary.id
let hasUnreadMessages = hideUnreadMessagesBadge ? false : summary.hasUnreadMessages
let isUnseenInvite = summary.joinRequestType?.isInvite == true && !seenInvites.contains(roomID)
let isDotShown = hasUnreadMessages || summary.hasUnreadMentions || summary.hasUnreadNotifications || summary.isMarkedUnread || isUnseenInvite
let isDotShown = switch roomListActivityVisibility {
case .current:
summary.hasUnreadMessages || summary.hasUnreadMentions || summary.hasUnreadNotifications || summary.isMarkedUnread || isUnseenInvite
case .hide, .show:
(!summary.isMuted && (summary.hasUnreadNotifications || summary.hasUnreadMentions)) || summary.isMarkedUnread || isUnseenInvite
}
let isMentionShown = summary.hasUnreadMentions && !summary.isMuted
let isMuteShown = summary.isMuted
let isHighlighted = summary.isMarkedUnread || (!summary.isMuted && (summary.hasUnreadNotifications || summary.hasUnreadMentions)) || isUnseenInvite
@@ -275,6 +286,7 @@ extension HomeScreenRoom {
isMentionShown: isMentionShown,
isMuteShown: isMuteShown,
callBadgeType: callBadge),
hasUnreads: summary.hasUnreadMessages,
name: summary.name,
isDirect: summary.isDirect,
isHighlighted: isHighlighted,