Treat manually unread chats as notifications in bottom tabs
Change-Id: I34cea91674843d8d60285295b449d2722cb061e9
This commit is contained in:
parent
f99398c3cb
commit
2c22f1e926
@ -109,6 +109,20 @@ data class RoomSummary constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun scNotificationCountWithManualUnread(): Int {
|
||||||
|
return when {
|
||||||
|
notificationCount > 0 -> {
|
||||||
|
notificationCount
|
||||||
|
}
|
||||||
|
markedUnread -> {
|
||||||
|
1
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val NOT_IN_BREADCRUMBS = -1
|
const val NOT_IN_BREADCRUMBS = -1
|
||||||
// SC addition
|
// SC addition
|
||||||
|
@ -128,7 +128,7 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho
|
|||||||
|
|
||||||
val peopleNotifications = summaries
|
val peopleNotifications = summaries
|
||||||
.filter { it.isDirect }
|
.filter { it.isDirect }
|
||||||
.map { it.notificationCount }
|
.map { it.scNotificationCountWithManualUnread() }
|
||||||
.sum()
|
.sum()
|
||||||
val peopleHasHighlight = summaries
|
val peopleHasHighlight = summaries
|
||||||
.filter { it.isDirect }
|
.filter { it.isDirect }
|
||||||
@ -136,7 +136,7 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho
|
|||||||
|
|
||||||
val roomsNotifications = summaries
|
val roomsNotifications = summaries
|
||||||
.filter { !it.isDirect }
|
.filter { !it.isDirect }
|
||||||
.map { it.notificationCount }
|
.map { it.scNotificationCountWithManualUnread() }
|
||||||
.sum()
|
.sum()
|
||||||
val roomsHasHighlight = summaries
|
val roomsHasHighlight = summaries
|
||||||
.filter { !it.isDirect }
|
.filter { !it.isDirect }
|
||||||
|
@ -30,7 +30,7 @@ class RoomListDisplayModeFilter(private val displayMode: RoomListDisplayMode) :
|
|||||||
return when (displayMode) {
|
return when (displayMode) {
|
||||||
RoomListDisplayMode.ALL -> true
|
RoomListDisplayMode.ALL -> true
|
||||||
RoomListDisplayMode.NOTIFICATIONS ->
|
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.PEOPLE -> roomSummary.isDirect && roomSummary.membership.isActive()
|
||||||
RoomListDisplayMode.ROOMS -> !roomSummary.isDirect && roomSummary.membership.isActive()
|
RoomListDisplayMode.ROOMS -> !roomSummary.isDirect && roomSummary.membership.isActive()
|
||||||
RoomListDisplayMode.FILTERED -> roomSummary.membership == Membership.JOIN
|
RoomListDisplayMode.FILTERED -> roomSummary.membership == Membership.JOIN
|
||||||
|
@ -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.members.ChangeMembershipState
|
||||||
import org.matrix.android.sdk.api.session.room.model.Membership
|
import org.matrix.android.sdk.api.session.room.model.Membership
|
||||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||||
import timber.log.Timber
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class RoomSummaryController @Inject constructor(private val stringProvider: StringProvider,
|
class RoomSummaryController @Inject constructor(private val stringProvider: StringProvider,
|
||||||
@ -135,7 +134,7 @@ class RoomSummaryController @Inject constructor(private val stringProvider: Stri
|
|||||||
0
|
0
|
||||||
} else {
|
} else {
|
||||||
// Count notifications + number of chats with no notifications marked as unread
|
// 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()) {
|
val markedUnread = if (summaries.isEmpty()) {
|
||||||
false
|
false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user