Revert "Setting for unread badge / room summary event visibility"

This reverts commit b1d96ebba9.

Change-Id: I567628cbf4bbdc059d3c73991bf3053f702730af

Conflicts:
	vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
	vector/src/main/res/values-de/strings_sc.xml
	vector/src/main/res/values/strings_sc.xml
	vector/src/main/res/xml/vector_settings_preferences.xml
This commit is contained in:
SpiritCroc 2020-09-17 11:51:44 +02:00
parent 9a61361e3e
commit 1ff602db3b
13 changed files with 10 additions and 179 deletions

View file

@ -40,14 +40,10 @@ data class RoomSummary constructor(
val joinedMembersCount: Int? = 0,
val invitedMembersCount: Int? = 0,
val latestPreviewableEvent: TimelineEvent? = null,
val latestPreviewableContentEvent: TimelineEvent? = null,
val latestPreviewableOriginalContentEvent: TimelineEvent? = null,
val otherMemberIds: List<String> = emptyList(),
val notificationCount: Int = 0,
val highlightCount: Int = 0,
val hasUnreadMessages: Boolean = false,
val hasUnreadContentMessages: Boolean = false,
val hasUnreadOriginalContentMessages: Boolean = false,
val tags: List<RoomTag> = emptyList(),
val membership: Membership = Membership.NONE,
val versioningState: VersioningState = VersioningState.NONE,
@ -74,42 +70,7 @@ data class RoomSummary constructor(
val canStartCall: Boolean
get() = joinedMembersCount == 2
fun scHasUnreadMessages(preferenceProvider: RoomSummaryPreferenceProvider?): Boolean {
if (preferenceProvider == null) {
// Fallback to default
return hasUnreadMessages
}
return when(preferenceProvider.getUnreadKind()) {
UNREAD_KIND_ORIGINAL_CONTENT -> hasUnreadOriginalContentMessages
UNREAD_KIND_CONTENT -> hasUnreadContentMessages
// UNREAD_KIND_DEFAULT
else -> hasUnreadMessages
}
}
fun scLatestPreviewableEvent(preferenceProvider: RoomSummaryPreferenceProvider?): TimelineEvent? {
if (preferenceProvider == null) {
// Fallback to default
return latestPreviewableEvent
}
return when(preferenceProvider.getUnreadKind()) {
UNREAD_KIND_ORIGINAL_CONTENT -> latestPreviewableOriginalContentEvent
UNREAD_KIND_CONTENT -> latestPreviewableContentEvent
// UNREAD_KIND_DEFAULT
else -> latestPreviewableEvent
}
}
companion object {
const val NOT_IN_BREADCRUMBS = -1
// SC addition
const val UNREAD_KIND_DEFAULT = 0
const val UNREAD_KIND_CONTENT = 1
const val UNREAD_KIND_ORIGINAL_CONTENT = 2
}
// SC addition
interface RoomSummaryPreferenceProvider {
fun getUnreadKind(): Int
}
}

View file

@ -34,12 +34,6 @@ internal class RoomSummaryMapper @Inject constructor(private val timelineEventMa
val latestEvent = roomSummaryEntity.latestPreviewableEvent?.let {
timelineEventMapper.map(it, buildReadReceipts = false)
}
val latestContentEvent = roomSummaryEntity.latestPreviewableContentEvent?.let {
timelineEventMapper.map(it, buildReadReceipts = false)
}
val latestOriginalContentEvent = roomSummaryEntity.latestPreviewableOriginalContentEvent?.let {
timelineEventMapper.map(it, buildReadReceipts = false)
}
// typings are updated through the sync where room summary entity gets updated no matter what, so it's ok get there
val typingUsers = typingUsersTracker.getTypingUsers(roomSummaryEntity.roomId)
@ -51,16 +45,12 @@ internal class RoomSummaryMapper @Inject constructor(private val timelineEventMa
avatarUrl = roomSummaryEntity.avatarUrl ?: "",
isDirect = roomSummaryEntity.isDirect,
latestPreviewableEvent = latestEvent,
latestPreviewableContentEvent = latestContentEvent,
latestPreviewableOriginalContentEvent = latestOriginalContentEvent,
joinedMembersCount = roomSummaryEntity.joinedMembersCount,
invitedMembersCount = roomSummaryEntity.invitedMembersCount,
otherMemberIds = roomSummaryEntity.otherMemberIds.toList(),
highlightCount = roomSummaryEntity.highlightCount,
notificationCount = roomSummaryEntity.notificationCount,
hasUnreadMessages = roomSummaryEntity.hasUnreadMessages,
hasUnreadContentMessages = roomSummaryEntity.hasUnreadContentMessages,
hasUnreadOriginalContentMessages = roomSummaryEntity.hasUnreadOriginalContentMessages,
tags = tags,
typingUsers = typingUsers,
membership = roomSummaryEntity.membership,

View file

@ -32,8 +32,6 @@ internal open class RoomSummaryEntity(
var name: String? = "",
var topic: String? = "",
var latestPreviewableEvent: TimelineEventEntity? = null,
var latestPreviewableContentEvent: TimelineEventEntity? = null,
var latestPreviewableOriginalContentEvent: TimelineEventEntity? = null,
var heroes: RealmList<String> = RealmList(),
var joinedMembersCount: Int? = 0,
var invitedMembersCount: Int? = 0,
@ -44,8 +42,6 @@ internal open class RoomSummaryEntity(
var highlightCount: Int = 0,
var readMarkerId: String? = null,
var hasUnreadMessages: Boolean = false,
var hasUnreadContentMessages: Boolean = false,
var hasUnreadOriginalContentMessages: Boolean = false,
var tags: RealmList<RoomTagEntity> = RealmList(),
var userDrafts: UserDraftsEntity? = null,
var breadcrumbsIndex: Int = RoomSummary.NOT_IN_BREADCRUMBS,

View file

@ -126,8 +126,6 @@ internal class DefaultSetReadMarkersTask @Inject constructor(
roomSummary.notificationCount = 0
roomSummary.highlightCount = 0
roomSummary.hasUnreadMessages = false
roomSummary.hasUnreadContentMessages = false
roomSummary.hasUnreadOriginalContentMessages = false
}
}
}

View file

@ -64,25 +64,6 @@ internal class RoomSummaryUpdater @Inject constructor(
companion object {
// TODO: maybe allow user of SDK to give that list
val PREVIEWABLE_TYPES = listOf(
// TODO filter message type (KEY_VERIFICATION_READY, etc.)
EventType.MESSAGE,
EventType.STATE_ROOM_NAME,
EventType.STATE_ROOM_TOPIC,
EventType.STATE_ROOM_AVATAR,
EventType.STATE_ROOM_MEMBER,
EventType.STATE_ROOM_HISTORY_VISIBILITY,
EventType.CALL_INVITE,
EventType.CALL_HANGUP,
EventType.CALL_ANSWER,
EventType.ENCRYPTED,
EventType.STATE_ROOM_ENCRYPTION,
EventType.STATE_ROOM_THIRD_PARTY_INVITE,
EventType.STICKER,
EventType.REACTION,
EventType.STATE_ROOM_CREATE
)
// Same as PREVIEWABLE_CONTENT_TYPES without member state changes // SC feature
val PREVIEWABLE_CONTENT_TYPES = listOf(
// TODO filter message type (KEY_VERIFICATION_READY, etc.)
EventType.MESSAGE,
/*
@ -104,31 +85,6 @@ internal class RoomSummaryUpdater @Inject constructor(
EventType.REACTION,
EventType.STATE_ROOM_CREATE
)
// Same as PREVIEWABLE_ORIGINAL_CONTENT_TYPES without reactions // SC feature
val PREVIEWABLE_ORIGINAL_CONTENT_TYPES = listOf(
// TODO filter message type (KEY_VERIFICATION_READY, etc.)
EventType.MESSAGE,
/*
EventType.STATE_ROOM_NAME,
EventType.STATE_ROOM_TOPIC,
EventType.STATE_ROOM_AVATAR,
EventType.STATE_ROOM_MEMBER,
EventType.STATE_ROOM_HISTORY_VISIBILITY,
*/
EventType.CALL_INVITE,
EventType.CALL_HANGUP,
EventType.CALL_ANSWER,
EventType.ENCRYPTED,
/*
EventType.STATE_ROOM_ENCRYPTION,
EventType.STATE_ROOM_THIRD_PARTY_INVITE,
*/
EventType.STICKER,
/*
EventType.REACTION,
*/
EventType.STATE_ROOM_CREATE
)
}
fun update(realm: Realm,
@ -160,10 +116,6 @@ internal class RoomSummaryUpdater @Inject constructor(
val latestPreviewableEvent = TimelineEventEntity.latestEvent(realm, roomId, includesSending = true,
filterTypes = PREVIEWABLE_TYPES, filterContentRelation = true)
val latestPreviewableContentEvent = TimelineEventEntity.latestEvent(realm, roomId, includesSending = true,
filterTypes = PREVIEWABLE_CONTENT_TYPES, filterContentRelation = true)
val latestPreviewableOriginalContentEvent = TimelineEventEntity.latestEvent(realm, roomId, includesSending = true,
filterTypes = PREVIEWABLE_ORIGINAL_CONTENT_TYPES, filterContentRelation = true)
val lastNameEvent = CurrentStateEventEntity.getOrNull(realm, roomId, type = EventType.STATE_ROOM_NAME, stateKey = "")?.root
val lastTopicEvent = CurrentStateEventEntity.getOrNull(realm, roomId, type = EventType.STATE_ROOM_TOPIC, stateKey = "")?.root
@ -178,22 +130,12 @@ internal class RoomSummaryUpdater @Inject constructor(
roomSummaryEntity.hasUnreadMessages = roomSummaryEntity.notificationCount > 0
// avoid this call if we are sure there are unread events
|| !isEventRead(realm.configuration, userId, roomId, latestPreviewableEvent?.eventId)
roomSummaryEntity.hasUnreadContentMessages = roomSummaryEntity.notificationCount > 0
// avoid this call if we are sure there are unread events
|| (latestPreviewableContentEvent != null
&& !isEventRead(realm.configuration, userId, roomId, latestPreviewableContentEvent.eventId))
roomSummaryEntity.hasUnreadOriginalContentMessages = roomSummaryEntity.notificationCount > 0
// avoid this call if we are sure there are unread events
|| (latestPreviewableOriginalContentEvent != null
&& !isEventRead(realm.configuration, userId, roomId, latestPreviewableOriginalContentEvent.eventId))
roomSummaryEntity.displayName = roomDisplayNameResolver.resolve(realm, roomId).toString()
roomSummaryEntity.avatarUrl = roomAvatarResolver.resolve(realm, roomId)
roomSummaryEntity.name = ContentMapper.map(lastNameEvent?.content).toModel<RoomNameContent>()?.name
roomSummaryEntity.topic = ContentMapper.map(lastTopicEvent?.content).toModel<RoomTopicContent>()?.topic
roomSummaryEntity.latestPreviewableEvent = latestPreviewableEvent
roomSummaryEntity.latestPreviewableContentEvent = latestPreviewableContentEvent
roomSummaryEntity.latestPreviewableOriginalContentEvent = latestPreviewableOriginalContentEvent
roomSummaryEntity.canonicalAlias = ContentMapper.map(lastCanonicalAliasEvent?.content).toModel<RoomCanonicalAliasContent>()
?.canonicalAlias

View file

@ -1,15 +0,0 @@
package im.vector.app.features.home.room
import android.content.Context
import im.vector.app.features.settings.VectorPreferences
import org.matrix.android.sdk.api.session.room.model.RoomSummary
import javax.inject.Inject
class ScSdkPreferences @Inject constructor(private val vectorPreferences: VectorPreferences?): RoomSummary.RoomSummaryPreferenceProvider {
constructor(context: Context?) : this(vectorPreferences = context?.let { VectorPreferences(it) })
override fun getUnreadKind(): Int {
return vectorPreferences?.roomUnreadKind() ?: RoomSummary.UNREAD_KIND_DEFAULT
}
}

View file

@ -21,13 +21,11 @@ import com.airbnb.epoxy.EpoxyController
import im.vector.app.core.epoxy.zeroItem
import im.vector.app.core.utils.DebouncedClickListener
import im.vector.app.features.home.AvatarRenderer
import im.vector.app.features.home.room.ScSdkPreferences
import org.matrix.android.sdk.api.util.toMatrixItem
import javax.inject.Inject
class BreadcrumbsController @Inject constructor(
private val avatarRenderer: AvatarRenderer,
private val scSdkPreferences: ScSdkPreferences
private val avatarRenderer: AvatarRenderer
) : EpoxyController() {
var listener: Listener? = null
@ -64,7 +62,7 @@ class BreadcrumbsController @Inject constructor(
matrixItem(it.toMatrixItem())
unreadNotificationCount(it.notificationCount)
showHighlighted(it.highlightCount > 0)
hasUnreadMessage(it.scHasUnreadMessages(scSdkPreferences))
hasUnreadMessage(it.hasUnreadMessages)
hasDraft(it.userDrafts.isNotEmpty())
itemClickListener(
DebouncedClickListener(View.OnClickListener { _ ->

View file

@ -120,7 +120,6 @@ import im.vector.app.features.crypto.keysbackup.restore.KeysBackupRestoreActivit
import im.vector.app.features.crypto.util.toImageRes
import im.vector.app.features.crypto.verification.VerificationBottomSheet
import im.vector.app.features.home.AvatarRenderer
import im.vector.app.features.home.room.ScSdkPreferences
import im.vector.app.features.home.room.detail.composer.TextComposerView
import im.vector.app.features.home.room.detail.readreceipts.DisplayReadReceiptsBottomSheet
import im.vector.app.features.home.room.detail.timeline.TimelineEventController
@ -1023,7 +1022,7 @@ class RoomDetailFragment @Inject constructor(
val inviter = state.asyncInviter()
if (summary?.membership == Membership.JOIN) {
jumpToBottomView.count = summary.notificationCount
jumpToBottomView.drawBadge = summary.scHasUnreadMessages(ScSdkPreferences(context))
jumpToBottomView.drawBadge = summary.hasUnreadMessages
scrollOnHighlightedEventCallback.timeline = roomDetailViewModel.timeline
timelineEventController.update(state)
inviteView.visibility = View.GONE

View file

@ -25,7 +25,6 @@ import com.airbnb.mvrx.MvRxState
import com.airbnb.mvrx.Uninitialized
import im.vector.app.R
import im.vector.app.features.home.RoomListDisplayMode
import im.vector.app.features.home.room.ScSdkPreferences
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
@ -42,8 +41,7 @@ data class RoomListViewState(
val isGroupRoomsExpanded: Boolean = true,
val isCombinedRoomsExpanded: Boolean = true,
val isLowPriorityRoomsExpanded: Boolean = true,
val isServerNoticeRoomsExpanded: Boolean = true,
val scSdkPreferences: ScSdkPreferences? = null
val isServerNoticeRoomsExpanded: Boolean = true
) : MvRxState {
companion object {
@ -59,15 +57,12 @@ data class RoomListViewState(
return ROOM_LIST_ROOM_EXPANDED_LOW_PRIORITY_PREFIX + displayMode.toString()
}
// SC addition
fun initWithContext(context: Context, displayMode: RoomListDisplayMode): RoomListViewState {
val sp = getSharedPreferences(context)
val pref = getRoomListExpandedLowPriorityPref(displayMode)
val scSdkPreferences = ScSdkPreferences(context)
return copy(isLowPriorityRoomsExpanded = sp.getBoolean(pref, isLowPriorityRoomsExpanded), scSdkPreferences = scSdkPreferences)
return copy(isLowPriorityRoomsExpanded = sp.getBoolean(pref, isLowPriorityRoomsExpanded))
}
// SC addition
fun persistWithContext(context: Context, displayMode: RoomListDisplayMode) {
val sp = getSharedPreferences(context)
val pref = getRoomListExpandedLowPriorityPref(displayMode)
@ -102,7 +97,7 @@ data class RoomListViewState(
get() = asyncFilteredRooms.invoke()
?.flatMap { it.value }
?.filter { it.membership == Membership.JOIN }
?.any { it.scHasUnreadMessages(scSdkPreferences) }
?.any { it.hasUnreadMessages }
?: false
}

View file

@ -25,7 +25,6 @@ import im.vector.app.core.resources.DateProvider
import im.vector.app.core.resources.StringProvider
import im.vector.app.core.utils.DebouncedClickListener
import im.vector.app.features.home.AvatarRenderer
import im.vector.app.features.home.room.ScSdkPreferences
import im.vector.app.features.home.room.detail.timeline.format.DisplayableEventFormatter
import im.vector.app.features.home.room.typing.TypingHelper
import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState
@ -38,8 +37,7 @@ class RoomSummaryItemFactory @Inject constructor(private val displayableEventFor
private val dateFormatter: VectorDateFormatter,
private val stringProvider: StringProvider,
private val typingHelper: TypingHelper,
private val avatarRenderer: AvatarRenderer,
private val scSdkPreferences: ScSdkPreferences) {
private val avatarRenderer: AvatarRenderer) {
fun create(roomSummary: RoomSummary,
roomChangeMembershipStates: Map<String, ChangeMembershipState>,
@ -87,7 +85,7 @@ class RoomSummaryItemFactory @Inject constructor(private val displayableEventFor
val showSelected = selectedRoomIds.contains(roomSummary.roomId)
var latestFormattedEvent: CharSequence = ""
var latestEventTime: CharSequence = ""
val latestEvent = roomSummary.scLatestPreviewableEvent(scSdkPreferences)
val latestEvent = roomSummary.latestPreviewableEvent
if (latestEvent != null) {
val date = latestEvent.root.localDateTime()
val currentDate = DateProvider.currentLocalDateTime()
@ -116,7 +114,7 @@ class RoomSummaryItemFactory @Inject constructor(private val displayableEventFor
.showSelected(showSelected)
.hasFailedSending(roomSummary.hasFailedSending)
.unreadNotificationCount(unreadCount)
.hasUnreadMessage(roomSummary.scHasUnreadMessages(scSdkPreferences))
.hasUnreadMessage(roomSummary.hasUnreadMessages)
.hasDraft(roomSummary.userDrafts.isNotEmpty())
.itemLongClickListener { _ ->
onLongClick?.invoke(roomSummary) ?: false

View file

@ -29,7 +29,6 @@ import im.vector.app.R
import im.vector.app.features.homeserver.ServerUrlsRepository
import im.vector.app.features.themes.ThemeUtils
import org.matrix.android.sdk.api.extensions.tryThis
import org.matrix.android.sdk.api.session.room.model.RoomSummary
import timber.log.Timber
import javax.inject.Inject
@ -97,6 +96,7 @@ class VectorPreferences @Inject constructor(private val context: Context) {
private const val SETTINGS_SHOW_AVATAR_DISPLAY_NAME_CHANGES_MESSAGES_KEY = "SETTINGS_SHOW_AVATAR_DISPLAY_NAME_CHANGES_MESSAGES_KEY"
private const val SETTINGS_VIBRATE_ON_MENTION_KEY = "SETTINGS_VIBRATE_ON_MENTION_KEY"
private const val SETTINGS_SEND_MESSAGE_WITH_ENTER = "SETTINGS_SEND_MESSAGE_WITH_ENTER"
const val SETTINGS_SINGLE_OVERVIEW = "SETTINGS_SINGLE_OVERVIEW"
// Help
private const val SETTINGS_SHOULD_SHOW_HELP_ON_ROOM_LIST_KEY = "SETTINGS_SHOULD_SHOW_HELP_ON_ROOM_LIST_KEY"
@ -176,7 +176,6 @@ class VectorPreferences @Inject constructor(private val context: Context) {
// SC additions
private const val SETTINGS_SINGLE_OVERVIEW = "SETTINGS_SINGLE_OVERVIEW"
private const val SETTINGS_ROOM_UNREAD_KIND = "SETTINGS_ROOM_UNREAD_KIND"
private const val SETTINGS_UNIMPORTANT_COUNTER_BADGE = "SETTINGS_UNIMPORTANT_COUNTER_BADGE"
private const val DID_ASK_TO_ENABLE_SESSION_PUSH = "DID_ASK_TO_ENABLE_SESSION_PUSH"
@ -830,21 +829,10 @@ class VectorPreferences @Inject constructor(private val context: Context) {
return defaultPrefs.getBoolean(SETTINGS_SECURITY_USE_FLAG_SECURE, false)
}
// SC addition
fun singleOverview(): Boolean {
return defaultPrefs.getBoolean(SETTINGS_SINGLE_OVERVIEW, true)
}
// SC addition
fun roomUnreadKind(): Int {
val kind = defaultPrefs.getString(SETTINGS_ROOM_UNREAD_KIND, RoomSummary.UNREAD_KIND_CONTENT.toString())
return try {
Integer.parseInt(kind!!)
} catch (e: Exception) {
RoomSummary.UNREAD_KIND_CONTENT
}
}
// SC addition
fun shouldShowUnimportantCounterBadge(): Boolean {
return defaultPrefs.getBoolean(SETTINGS_UNIMPORTANT_COUNTER_BADGE, true)

View file

@ -12,15 +12,4 @@
<item>both</item>
</string-array>
<string-array name="room_unread_kind_entries" translatable="false">
<item>@string/settings_room_unread_kind_default</item>
<item>@string/settings_room_unread_kind_content</item>
<item>@string/settings_room_unread_kind_original_content</item>
</string-array>
<string-array name="room_unread_kind_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
</resources>

View file

@ -57,14 +57,6 @@
android:summary="@string/settings_single_overview_summary"
android:title="@string/settings_single_overview" />
<im.vector.app.core.preference.VectorListPreference
android:defaultValue="1"
android:entries="@array/room_unread_kind_entries"
android:entryValues="@array/room_unread_kind_values"
android:key="SETTINGS_ROOM_UNREAD_KIND"
android:summary="%s"
android:title="@string/settings_room_unread_kind" />
<im.vector.app.core.preference.VectorSwitchPreference
android:defaultValue="true"
android:key="SETTINGS_UNIMPORTANT_COUNTER_BADGE"