Treat manually unread chats as notifications in bottom tabs

Change-Id: I34cea91674843d8d60285295b449d2722cb061e9
This commit is contained in:
SpiritCroc 2021-02-09 17:40:53 +01:00
parent f99398c3cb
commit 2c22f1e926
4 changed files with 18 additions and 5 deletions

View File

@ -109,6 +109,20 @@ data class RoomSummary constructor(
}
}
fun scNotificationCountWithManualUnread(): Int {
return when {
notificationCount > 0 -> {
notificationCount
}
markedUnread -> {
1
}
else -> {
0
}
}
}
companion object {
const val NOT_IN_BREADCRUMBS = -1
// SC addition

View File

@ -128,7 +128,7 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho
val peopleNotifications = summaries
.filter { it.isDirect }
.map { it.notificationCount }
.map { it.scNotificationCountWithManualUnread() }
.sum()
val peopleHasHighlight = summaries
.filter { it.isDirect }
@ -136,7 +136,7 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho
val roomsNotifications = summaries
.filter { !it.isDirect }
.map { it.notificationCount }
.map { it.scNotificationCountWithManualUnread() }
.sum()
val roomsHasHighlight = summaries
.filter { !it.isDirect }

View File

@ -30,7 +30,7 @@ class RoomListDisplayModeFilter(private val displayMode: RoomListDisplayMode) :
return when (displayMode) {
RoomListDisplayMode.ALL -> true
RoomListDisplayMode.NOTIFICATIONS ->
roomSummary.notificationCount > 0 || roomSummary.membership == Membership.INVITE || roomSummary.userDrafts.isNotEmpty()
roomSummary.scNotificationCountWithManualUnread() > 0 || roomSummary.membership == Membership.INVITE || roomSummary.userDrafts.isNotEmpty()
RoomListDisplayMode.PEOPLE -> roomSummary.isDirect && roomSummary.membership.isActive()
RoomListDisplayMode.ROOMS -> !roomSummary.isDirect && roomSummary.membership.isActive()
RoomListDisplayMode.FILTERED -> roomSummary.membership == Membership.JOIN

View File

@ -29,7 +29,6 @@ import im.vector.app.features.home.room.filtered.filteredRoomFooterItem
import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState
import org.matrix.android.sdk.api.session.room.model.Membership
import org.matrix.android.sdk.api.session.room.model.RoomSummary
import timber.log.Timber
import javax.inject.Inject
class RoomSummaryController @Inject constructor(private val stringProvider: StringProvider,
@ -135,7 +134,7 @@ class RoomSummaryController @Inject constructor(private val stringProvider: Stri
0
} else {
// Count notifications + number of chats with no notifications marked as unread
summaries.map { it }.sumBy { x -> if (x.notificationCount > 0) x.notificationCount else if (x.markedUnread) 1 else 0 }
summaries.map { it }.sumBy { it.scNotificationCountWithManualUnread() }
}
val markedUnread = if (summaries.isEmpty()) {
false