From 2bb94089f73c1e55468d2927268b52e05e17c982 Mon Sep 17 00:00:00 2001 From: Sagar <85388413+Sagar0-0@users.noreply.github.com> Date: Tue, 22 Apr 2025 21:21:54 +0530 Subject: [PATCH] Move to quoted message on quote preview click. --- .../securesms/components/InputPanel.java | 4 ++++ .../conversation/v2/ConversationFragment.kt | 24 ++++++++++++------- .../conversation/v2/ConversationRepository.kt | 5 ++-- .../conversation/v2/ConversationViewModel.kt | 5 ++-- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java index c896e72962..1bf171dce6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java @@ -220,6 +220,9 @@ public class InputPanel extends ConstraintLayout @NonNull QuoteModel.Type quoteType) { this.quoteView.setQuote(requestManager, id, author, body, false, attachments, null, quoteType); + if (listener != null) { + this.quoteView.setOnClickListener(v -> listener.onQuoteClicked(id, author.getId())); + } int originalHeight = this.quoteView.getVisibility() == VISIBLE ? this.quoteView.getMeasuredHeight() : 0; @@ -817,6 +820,7 @@ public class InputPanel extends ConstraintLayout void onStickerSuggestionSelected(@NonNull StickerRecord sticker); void onQuoteChanged(long id, @NonNull RecipientId author); void onQuoteCleared(); + void onQuoteClicked(long quoteId, RecipientId authorId); void onEnterEditMode(); void onExitEditMode(); void onQuickCameraToggleClicked(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 2ab0e85432..2db0a1c9bb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -2755,6 +2755,17 @@ class ConversationFragment : } } + fun handleMoveToQuotePosition(quoteId: Long, authorId: RecipientId) { + disposables += viewModel.getQuotedMessagePosition(quoteId, authorId) + .subscribeBy { + if (it >= 0) { + moveToPosition(it) + } else { + toast(R.string.ConversationFragment_quoted_message_no_longer_available) + } + } + } + //endregion Scroll Handling // region Conversation Callbacks @@ -2788,14 +2799,7 @@ class ConversationFragment : return } - disposables += viewModel.getQuotedMessagePosition(quote) - .subscribeBy { - if (it >= 0) { - moveToPosition(it) - } else { - toast(R.string.ConversationFragment_quoted_message_no_longer_available) - } - } + handleMoveToQuotePosition(quote.id, quote.author) } override fun onLinkPreviewClicked(linkPreview: LinkPreview) { @@ -4219,6 +4223,10 @@ class ConversationFragment : draftViewModel.clearQuoteDraft() } + override fun onQuoteClicked(quoteId: Long, authorId: RecipientId) { + handleMoveToQuotePosition(quoteId = quoteId, authorId = authorId) + } + override fun onEnterEditMode() { updateToggleButtonState() previousPage = keyboardPagerViewModel.page().value diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt index 74e7484626..37a757c6ea 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt @@ -58,7 +58,6 @@ import org.thoughtcrime.securesms.database.model.Mention import org.thoughtcrime.securesms.database.model.MessageId import org.thoughtcrime.securesms.database.model.MessageRecord import org.thoughtcrime.securesms.database.model.MmsMessageRecord -import org.thoughtcrime.securesms.database.model.Quote import org.thoughtcrime.securesms.database.model.ReactionRecord import org.thoughtcrime.securesms.database.model.StickerRecord import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList @@ -249,9 +248,9 @@ class ConversationRepository( oldConversationRepository.markGiftBadgeRevealed(messageId) } - fun getQuotedMessagePosition(threadId: Long, quote: Quote): Single { + fun getQuotedMessagePosition(threadId: Long, quoteId: Long, authorId: RecipientId): Single { return Single.fromCallable { - SignalDatabase.messages.getQuotedMessagePosition(threadId, quote.id, quote.author) + SignalDatabase.messages.getQuotedMessagePosition(threadId, quoteId, authorId) }.subscribeOn(Schedulers.io()) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt index bd63cb370e..970cafd551 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt @@ -67,7 +67,6 @@ import org.thoughtcrime.securesms.database.model.Mention import org.thoughtcrime.securesms.database.model.MessageId import org.thoughtcrime.securesms.database.model.MessageRecord import org.thoughtcrime.securesms.database.model.MmsMessageRecord -import org.thoughtcrime.securesms.database.model.Quote import org.thoughtcrime.securesms.database.model.ReactionRecord import org.thoughtcrime.securesms.database.model.StickerRecord import org.thoughtcrime.securesms.database.model.StoryViewState @@ -404,8 +403,8 @@ class ConversationViewModel( } } - fun getQuotedMessagePosition(quote: Quote): Single { - return repository.getQuotedMessagePosition(threadId, quote) + fun getQuotedMessagePosition(quoteId: Long, authorId: RecipientId): Single { + return repository.getQuotedMessagePosition(threadId, quoteId, authorId) } fun moveToDate(receivedTimestamp: Long): Single {