Update last seen logic to used last read message instead of now timestamp.

This commit is contained in:
Cody Henthorne
2025-02-11 16:13:55 -05:00
committed by Greyson Parrelli
parent d7221a384b
commit b82d16abcb
15 changed files with 83 additions and 69 deletions

View File

@@ -58,7 +58,7 @@ public class ConversationRepository {
boolean showUniversalExpireTimerUpdate = false;
if (lastSeen > 0) {
lastSeenPosition = SignalDatabase.messages().getMessagePositionOnOrAfterTimestamp(threadId, lastSeen);
lastSeenPosition = SignalDatabase.messages().getMessagePositionByDateReceivedTimestamp(threadId, lastSeen, false);
}
if (lastSeenPosition <= 0) {
@@ -66,7 +66,7 @@ public class ConversationRepository {
}
if (lastSeen == 0 && lastScrolled > 0) {
lastScrolledPosition = SignalDatabase.messages().getMessagePositionOnOrAfterTimestamp(threadId, lastScrolled);
lastScrolledPosition = SignalDatabase.messages().getMessagePositionByDateReceivedTimestamp(threadId, lastScrolled, true);
}
if (!isMessageRequestAccepted) {

View File

@@ -62,7 +62,7 @@ public class MarkReadHelper {
debouncer.publish(() -> {
EXECUTOR.execute(() -> {
ThreadTable threadTable = SignalDatabase.threads();
List<MessageTable.MarkedMessageInfo> infos = threadTable.setReadSince(conversationId, false, timestamp);
List<MessageTable.MarkedMessageInfo> infos = threadTable.setReadSince(conversationId, timestamp);
Log.d(TAG, "Marking " + infos.size() + " messages as read.");

View File

@@ -702,8 +702,6 @@ class ConversationFragment :
inputPanel.onPause()
viewModel.markLastSeen()
EventBus.getDefault().unregister(this)
}

View File

@@ -542,12 +542,6 @@ class ConversationRepository(
AppDependencies.expiringMessageManager.scheduleDeletion(expirationInfos)
}
fun markLastSeen(threadId: Long) {
SignalExecutors.BOUNDED_IO.execute {
SignalDatabase.threads.setLastSeen(threadId)
}
}
fun getEarliestMessageSentDate(threadId: Long): Single<Long> {
return Single
.fromCallable { SignalDatabase.messages.getEarliestMessageSentDate(threadId) }

View File

@@ -577,10 +577,6 @@ class ConversationViewModel(
.observeOn(AndroidSchedulers.mainThread())
}
fun markLastSeen() {
repository.markLastSeen(threadId)
}
fun onChatSearchOpened() {
// Trigger the lazy load, so we can race initialization of the validator
_jumpToDateValidator