From 0c374052783a2186acdc975c89d322cdfbe27a23 Mon Sep 17 00:00:00 2001 From: SpiritCroc Date: Mon, 28 Dec 2020 16:17:42 +0100 Subject: [PATCH] Room summary preview / unread kind depending on DMs vs groups Closes https://github.com/SchildiChat/SchildiChat-android/issues/32 Change-Id: I4f4e3078e940dc80046d5d08628a1bdbed4fd55e --- .../sdk/api/session/room/model/RoomSummary.kt | 6 +-- .../app/features/home/HomeDrawerFragment.kt | 3 ++ .../features/home/room/ScSdkPreferences.kt | 4 +- .../features/settings/VectorPreferences.kt | 39 +++++++++++++++++-- vector/src/main/res/values-de/strings_sc.xml | 3 +- vector/src/main/res/values/strings_sc.xml | 3 +- .../res/xml/vector_settings_preferences.xml | 12 +++++- 7 files changed, 58 insertions(+), 12 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/RoomSummary.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/RoomSummary.kt index aabcc379fe..6b900e6371 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/RoomSummary.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/RoomSummary.kt @@ -88,7 +88,7 @@ data class RoomSummary constructor( // Fallback to default return hasUnreadMessages } - return when(preferenceProvider.getUnreadKind()) { + return when(preferenceProvider.getUnreadKind(isDirect)) { UNREAD_KIND_ORIGINAL_CONTENT -> hasUnreadOriginalContentMessages UNREAD_KIND_CONTENT -> hasUnreadContentMessages // UNREAD_KIND_DEFAULT @@ -101,7 +101,7 @@ data class RoomSummary constructor( // Fallback to default return latestPreviewableEvent } - return when(preferenceProvider.getUnreadKind()) { + return when(preferenceProvider.getUnreadKind(isDirect)) { UNREAD_KIND_ORIGINAL_CONTENT -> latestPreviewableOriginalContentEvent UNREAD_KIND_CONTENT -> latestPreviewableContentEvent // UNREAD_KIND_DEFAULT @@ -119,6 +119,6 @@ data class RoomSummary constructor( // SC addition interface RoomSummaryPreferenceProvider { - fun getUnreadKind(): Int + fun getUnreadKind(isDirect: Boolean): Int } } diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt b/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt index fa8cb223df..7f09620039 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt @@ -117,6 +117,9 @@ class HomeDrawerFragment @Inject constructor( override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + // SC: settings migration + vectorPreferences.scPreferenceUpdate() + // SC-Easy mode prompt PromptSimplifiedModeActivity.showIfRequired(requireContext(), vectorPreferences) } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/ScSdkPreferences.kt b/vector/src/main/java/im/vector/app/features/home/room/ScSdkPreferences.kt index 63998fc7f7..939d502ea3 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/ScSdkPreferences.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/ScSdkPreferences.kt @@ -9,7 +9,7 @@ class ScSdkPreferences @Inject constructor(private val vectorPreferences: Vector constructor(context: Context?) : this(vectorPreferences = context?.let { VectorPreferences(it) }) - override fun getUnreadKind(): Int { - return vectorPreferences?.roomUnreadKind() ?: RoomSummary.UNREAD_KIND_DEFAULT + override fun getUnreadKind(isDirect: Boolean): Int { + return vectorPreferences?.roomUnreadKind(isDirect) ?: RoomSummary.UNREAD_KIND_DEFAULT } } diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt index 4c08284dcc..ecb709e4df 100755 --- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt @@ -27,6 +27,7 @@ import im.vector.app.core.di.DefaultSharedPreferences import im.vector.app.features.disclaimer.SHARED_PREF_KEY import im.vector.app.features.homeserver.ServerUrlsRepository import im.vector.app.features.themes.ThemeUtils +import io.realm.annotations.Ignore import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.session.room.model.RoomSummary import timber.log.Timber @@ -182,7 +183,10 @@ class VectorPreferences @Inject constructor(private val context: Context) { // SC additions private const val SETTINGS_SINGLE_OVERVIEW = "SETTINGS_SINGLE_OVERVIEW" + @Deprecated("Please append _DM or _GROUP") private const val SETTINGS_ROOM_UNREAD_KIND = "SETTINGS_ROOM_UNREAD_KIND" + private const val SETTINGS_ROOM_UNREAD_KIND_DM = "SETTINGS_ROOM_UNREAD_KIND_DM" + private const val SETTINGS_ROOM_UNREAD_KIND_GROUP = "SETTINGS_ROOM_UNREAD_KIND_GROUP" private const val SETTINGS_UNIMPORTANT_COUNTER_BADGE = "SETTINGS_UNIMPORTANT_COUNTER_BADGE" private const val SETTINGS_SIMPLIFIED_MODE = "SETTINGS_SIMPLIFIED_MODE" private const val SETTINGS_LABS_ALLOW_MARK_UNREAD = "SETTINGS_LABS_ALLOW_MARK_UNREAD" @@ -878,14 +882,28 @@ class VectorPreferences @Inject constructor(private val context: Context) { } // SC addition - fun roomUnreadKind(): Int { - val kind = defaultPrefs.getString(SETTINGS_ROOM_UNREAD_KIND, RoomSummary.UNREAD_KIND_CONTENT.toString()) + private fun roomUnreadKind(key: String): Int { + val default = RoomSummary.UNREAD_KIND_CONTENT + val kind = defaultPrefs.getString(key, default.toString()) return try { Integer.parseInt(kind!!) } catch (e: Exception) { - RoomSummary.UNREAD_KIND_CONTENT + default } } + fun roomUnreadKind(isDirect: Boolean): Int { + return if (isDirect) { + roomUnreadKindDm() + } else { + roomUnreadKindGroup() + } + } + fun roomUnreadKindDm(): Int { + return roomUnreadKind(SETTINGS_ROOM_UNREAD_KIND_DM) + } + fun roomUnreadKindGroup(): Int { + return roomUnreadKind(SETTINGS_ROOM_UNREAD_KIND_GROUP) + } // SC addition fun shouldShowUnimportantCounterBadge(): Boolean { @@ -911,6 +929,21 @@ class VectorPreferences @Inject constructor(private val context: Context) { return defaultPrefs.getBoolean(SETTINGS_LABS_ALLOW_MARK_UNREAD, false) } + // SC addition + @Suppress("DEPRECATION") + fun scPreferenceUpdate() { + if (defaultPrefs.contains(SETTINGS_ROOM_UNREAD_KIND)) { + // Migrate to split setting for DMs and groups + val unreadKindSetting = roomUnreadKind(SETTINGS_ROOM_UNREAD_KIND).toString() + defaultPrefs + .edit() + .putString(SETTINGS_ROOM_UNREAD_KIND_DM, unreadKindSetting) + .putString(SETTINGS_ROOM_UNREAD_KIND_GROUP, unreadKindSetting) + .remove(SETTINGS_ROOM_UNREAD_KIND) + .apply() + } + } + /** * The user enable protecting app access with pin code. * Currently we use the pin code store to know if the pin is enabled, so this is not used diff --git a/vector/src/main/res/values-de/strings_sc.xml b/vector/src/main/res/values-de/strings_sc.xml index f4f8ac1335..ce6dd0f5f7 100644 --- a/vector/src/main/res/values-de/strings_sc.xml +++ b/vector/src/main/res/values-de/strings_sc.xml @@ -8,7 +8,8 @@ Vereinte Chat-Übersicht Zeige sowohl Direktnachrichten als auch Gruppenchats in einer gemeinsamen Übersicht - Chat-Vorschau + Direktchat-Vorschau + Gruppenchat-Vorschau Alle Ereignisse Verstecke Teilnehmerveränderungen Verstecke Teilnehmerveränderungen und Reaktionen diff --git a/vector/src/main/res/values/strings_sc.xml b/vector/src/main/res/values/strings_sc.xml index 63273f64e5..c3879bfabc 100644 --- a/vector/src/main/res/values/strings_sc.xml +++ b/vector/src/main/res/values/strings_sc.xml @@ -8,7 +8,8 @@ Combined chat overview View both direct messages and rooms on one page - Chat preview content + Direct chat preview content + Group chat preview content Show all events Hide member changes Hide member changes and reactions diff --git a/vector/src/main/res/xml/vector_settings_preferences.xml b/vector/src/main/res/xml/vector_settings_preferences.xml index 4877aa2c68..2d146c28d4 100644 --- a/vector/src/main/res/xml/vector_settings_preferences.xml +++ b/vector/src/main/res/xml/vector_settings_preferences.xml @@ -77,9 +77,17 @@ android:defaultValue="1" android:entries="@array/room_unread_kind_entries" android:entryValues="@array/room_unread_kind_values" - android:key="SETTINGS_ROOM_UNREAD_KIND" + android:key="SETTINGS_ROOM_UNREAD_KIND_DM" android:summary="%s" - android:title="@string/settings_room_unread_kind" /> + android:title="@string/settings_room_unread_kind_dm" /> + +