Skip to content

Commit 5b9e8b7

Browse files
[SES-4516] - Improvement on unread state and community updates (#1517)
1 parent 122b901 commit 5b9e8b7

File tree

8 files changed

+19
-22
lines changed

8 files changed

+19
-22
lines changed

app/src/main/java/org/thoughtcrime/securesms/database/CommunityDatabase.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class CommunityDatabase @Inject constructor(
6868
check(cursor.moveToNext()) { "Unable to patch room info" }
6969
json.decodeFromString<OpenGroupApi.RoomInfo>(cursor.getString(0))
7070
}.also {
71-
if (cache[address] != it) {
71+
if (cache[address]?.getOrNull() != it) {
7272
cache.put(address, Optional.of(it))
7373
mutableChangeNotification.tryEmit(address)
7474
}

app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import org.thoughtcrime.securesms.mms.Slide;
5858
import org.thoughtcrime.securesms.mms.SlideDeck;
5959
import org.thoughtcrime.securesms.notifications.MarkReadReceiver;
60+
import org.thoughtcrime.securesms.util.SharedConfigUtilsKt;
6061

6162
import java.io.Closeable;
6263
import java.time.ZonedDateTime;
@@ -878,6 +879,11 @@ public ThreadRecord getCurrent() {
878879
groupThreadStatus = GroupThreadStatus.None;
879880
}
880881

882+
final boolean isUnread = address instanceof Address.Conversable &&
883+
configFactory.get().withUserConfigs(configs ->
884+
SharedConfigUtilsKt.getConversationUnread(
885+
configs.getConvoInfoVolatile(), (Address.Conversable) address));
886+
881887
MessageContent messageContent;
882888
try {
883889
messageContent = (messageContentJson == null || messageContentJson.isEmpty()) ? null : json.decodeFromString(
@@ -891,7 +897,7 @@ public ThreadRecord getCurrent() {
891897

892898
return new ThreadRecord(body, lastMessage, recipient, date, count,
893899
unreadCount, unreadMentionCount, threadId, deliveryReceiptCount, status, type,
894-
lastSeen, readReceiptCount, invitingAdmin, groupThreadStatus, messageContent);
900+
lastSeen, readReceiptCount, invitingAdmin, groupThreadStatus, messageContent, isUnread);
895901
}
896902

897903
@Override

app/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public class ThreadRecord extends DisplayRecord {
6060
private final int unreadMentionCount;
6161
private final long lastSeen;
6262
private final String invitingAdminId;
63+
private final boolean isUnread;
6364

6465
@NonNull
6566
private final GroupThreadStatus groupThreadStatus;
@@ -70,7 +71,8 @@ public ThreadRecord(@NonNull String body,
7071
long snippetType,
7172
long lastSeen, int readReceiptCount, String invitingAdminId,
7273
@NonNull GroupThreadStatus groupThreadStatus,
73-
@Nullable MessageContent messageContent)
74+
@Nullable MessageContent messageContent,
75+
boolean isUnread)
7476
{
7577
super(body, recipient, date, date, threadId, status, deliveryReceiptCount, snippetType, readReceiptCount, messageContent);
7678
this.lastMessage = lastMessage;
@@ -80,6 +82,7 @@ public ThreadRecord(@NonNull String body,
8082
this.lastSeen = lastSeen;
8183
this.invitingAdminId = invitingAdminId;
8284
this.groupThreadStatus = groupThreadStatus;
85+
this.isUnread = isUnread;
8386
}
8487

8588
private String getName() {
@@ -232,4 +235,8 @@ public boolean isGroupUpdateMessage() {
232235
public String getInvitingAdminId() {
233236
return invitingAdminId;
234237
}
238+
239+
public boolean isUnread() {
240+
return isUnread;
241+
}
235242
}

app/src/main/java/org/thoughtcrime/securesms/home/ConversationOptionsBottomSheet.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@ import org.session.libsession.utilities.GroupRecord
1717
import org.session.libsession.utilities.TextSecurePreferences
1818
import org.session.libsignal.utilities.AccountId
1919
import org.thoughtcrime.securesms.database.GroupDatabase
20-
import org.thoughtcrime.securesms.database.RecipientDatabase
2120
import org.thoughtcrime.securesms.database.model.NotifyType
2221
import org.thoughtcrime.securesms.database.model.ThreadRecord
2322
import org.thoughtcrime.securesms.dependencies.ConfigFactory
24-
import org.thoughtcrime.securesms.util.getConversationUnread
2523
import javax.inject.Inject
2624

2725
@AndroidEntryPoint
@@ -195,7 +193,7 @@ class ConversationOptionsBottomSheet(private val parentContext: Context) : Botto
195193
val hasUnreadMessages = thread.unreadCount > 0
196194

197195
// case 2
198-
val isMarkedAsUnread = configFactory.withUserConfigs { it.convoInfoVolatile.getConversationUnread(thread)}
196+
val isMarkedAsUnread = thread.isUnread
199197

200198
val showMarkAsReadButton = hasUnreadMessages || isMarkedAsUnread
201199

app/src/main/java/org/thoughtcrime/securesms/home/ConversationView.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,13 @@ import android.content.res.Resources
66
import android.util.AttributeSet
77
import android.view.View
88
import android.widget.LinearLayout
9-
import androidx.compose.ui.platform.ViewCompositionStrategy
109
import androidx.core.content.ContextCompat
1110
import androidx.core.view.isVisible
1211
import androidx.recyclerview.widget.RecyclerView
1312
import dagger.hilt.android.AndroidEntryPoint
1413
import network.loki.messenger.R
1514
import network.loki.messenger.databinding.ViewConversationBinding
1615
import org.session.libsession.utilities.ThemeUtil
17-
import org.session.libsession.utilities.isGroupOrCommunity
1816
import org.session.libsession.utilities.recipients.Recipient
1917
import org.session.libsession.utilities.recipients.displayName
2018
import org.thoughtcrime.securesms.conversation.v2.utilities.MentionUtilities.highlightMentions
@@ -23,23 +21,17 @@ import org.thoughtcrime.securesms.database.model.NotifyType
2321
import org.thoughtcrime.securesms.database.model.ThreadRecord
2422
import org.thoughtcrime.securesms.dependencies.ConfigFactory
2523
import org.thoughtcrime.securesms.pro.ProStatusManager
26-
import org.thoughtcrime.securesms.ui.ProBadgeText
2724
import org.thoughtcrime.securesms.ui.components.Avatar
2825
import org.thoughtcrime.securesms.ui.setThemedContent
29-
import org.thoughtcrime.securesms.ui.theme.LocalColors
3026
import org.thoughtcrime.securesms.ui.theme.LocalDimensions
31-
import org.thoughtcrime.securesms.ui.theme.LocalType
32-
import org.thoughtcrime.securesms.ui.theme.bold
3327
import org.thoughtcrime.securesms.util.AvatarUtils
3428
import org.thoughtcrime.securesms.util.DateUtils
3529
import org.thoughtcrime.securesms.util.UnreadStylingHelper
36-
import org.thoughtcrime.securesms.util.getConversationUnread
3730
import javax.inject.Inject
3831

3932
@AndroidEntryPoint
4033
class ConversationView : LinearLayout {
4134

42-
@Inject lateinit var configFactory: ConfigFactory
4335
@Inject lateinit var dateUtils: DateUtils
4436
@Inject lateinit var proStatusManager: ProStatusManager
4537
@Inject lateinit var avatarUtils: AvatarUtils
@@ -65,7 +57,7 @@ class ConversationView : LinearLayout {
6557
this.thread = thread
6658
binding.iconPinned.isVisible = thread.isPinned
6759

68-
val isConversationUnread = (configFactory.withUserConfigs { it.convoInfoVolatile.getConversationUnread(thread) })
60+
val isConversationUnread = thread.isUnread
6961
val unreadCount = thread.unreadCount
7062
val hasUnreadCount = unreadCount > 0
7163
val isMarkedUnread = !hasUnreadCount && isConversationUnread

app/src/main/java/org/thoughtcrime/securesms/home/HomeDiffUtil.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class HomeDiffUtil(
6969
oldItem.isSent == newItem.isSent &&
7070
oldItem.isPending == newItem.isPending &&
7171
oldItem.lastSeen == newItem.lastSeen &&
72-
!configFactory.withUserConfigs { it.convoInfoVolatile.getConversationUnread(newItem) } &&
72+
oldItem.isUnread == newItem.isUnread &&
7373
old.isTyping == new.isTyping
7474
)
7575
}

app/src/main/java/org/thoughtcrime/securesms/repository/ConversationRepository.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import kotlinx.coroutines.flow.stateIn
2020
import kotlinx.coroutines.withContext
2121
import network.loki.messenger.libsession_util.util.ExpiryMode
2222
import network.loki.messenger.libsession_util.util.GroupInfo
23-
import nl.komponents.kovenant.all
2423
import org.session.libsession.database.MessageDataProvider
2524
import org.session.libsession.database.userAuth
2625
import org.session.libsession.messaging.groups.GroupManagerV2

app/src/main/java/org/thoughtcrime/securesms/util/SharedConfigUtils.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,7 @@ package org.thoughtcrime.securesms.util
22

33
import network.loki.messenger.libsession_util.ReadableConversationVolatileConfig
44
import org.session.libsession.utilities.Address
5-
import org.thoughtcrime.securesms.database.model.ThreadRecord
65

7-
fun ReadableConversationVolatileConfig.getConversationUnread(thread: ThreadRecord): Boolean {
8-
val address = thread.recipient.address as? Address.Conversable ?: return false
9-
return getConversationUnread(address)
10-
}
116

127
fun ReadableConversationVolatileConfig.getConversationUnread(recipientAddress: Address.Conversable): Boolean {
138
return when (recipientAddress) {

0 commit comments

Comments
 (0)