From 628477f2fd8d7a691114e5c6ebb13e2e48852f08 Mon Sep 17 00:00:00 2001 From: Ryan Zhao Date: Tue, 29 Jun 2021 14:00:47 +1000 Subject: [PATCH] link event listener --- .../conversation/v2/ConversationActivityV2.kt | 34 ++++++++++++++++++- .../v2/menus/ConversationMenuHelper.kt | 3 +- .../conversation/v2/search/SearchBottomBar.kt | 2 -- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt index 89953bcc04..27b7f6a92a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt @@ -13,6 +13,8 @@ import android.util.TypedValue import android.view.* import android.widget.RelativeLayout import androidx.core.view.isVisible +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProviders import androidx.loader.app.LoaderManager import androidx.loader.content.Loader @@ -47,6 +49,8 @@ import org.thoughtcrime.securesms.conversation.v2.input_bar.mentions.MentionCand import org.thoughtcrime.securesms.conversation.v2.menus.ConversationActionModeCallback import org.thoughtcrime.securesms.conversation.v2.menus.ConversationMenuHelper import org.thoughtcrime.securesms.conversation.v2.messages.VisibleMessageView +import org.thoughtcrime.securesms.conversation.v2.search.SearchBottomBar +import org.thoughtcrime.securesms.conversation.v2.search.SearchViewModel import org.thoughtcrime.securesms.database.DatabaseFactory import org.thoughtcrime.securesms.database.DraftDatabase import org.thoughtcrime.securesms.database.DraftDatabase.Drafts @@ -70,8 +74,9 @@ import kotlin.math.* // price we pay is a bit of back and forth between the input bar and the conversation activity. class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDelegate, - InputBarRecordingViewDelegate, AttachmentManager.AttachmentListener { + InputBarRecordingViewDelegate, AttachmentManager.AttachmentListener, SearchBottomBar.EventListener { private val screenWidth = Resources.getSystem().displayMetrics.widthPixels + private var searchViewModel: SearchViewModel? = null private var linkPreviewViewModel: LinkPreviewViewModel? = null private var threadID: Long = -1 private var actionMode: ActionMode? = null @@ -151,6 +156,8 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe getLatestOpenGroupInfoIfNeeded() setUpBlockedBanner() setUpLinkPreviewObserver() + searchBottomBar.setEventListener(this) + setUpSearchResultObserver() scrollToFirstUnreadMessageIfNeeded() markAllAsRead() } @@ -751,9 +758,34 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe // endregion // region Search + private fun setUpSearchResultObserver() { + val searchViewModel = ViewModelProvider(this).get(SearchViewModel::class.java) + this.searchViewModel = searchViewModel + searchViewModel.searchResults.observe(this, Observer { result: SearchViewModel.SearchResult? -> + if (result == null) return@Observer + if (result.getResults().isNotEmpty()) { + conversationRecyclerView.scrollToPosition(result.position) + val messageResult = result.getResults()[result.position] +// fragment.jumpToMessage(messageResult.messageRecipient.address, messageResult.receivedTimestampMs, Runnable { searchViewModel.onMissingResult() }) + } + this.searchBottomBar.setData(result.position, result.getResults().size) + }) + } + + fun getSearchViewModel(): SearchViewModel? { + return this.searchViewModel + } + fun onSearchQueryUpdated(query: String?) { adapter.onSearchQueryUpdated(query) } + override fun onSearchMoveUpPressed() { + this.searchViewModel?.onMoveUp() + } + + override fun onSearchMoveDownPressed() { + this.searchViewModel?.onMoveDown() + } // endregion } \ No newline at end of file diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationMenuHelper.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationMenuHelper.kt index 4c3a72a9ed..226206d9d3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationMenuHelper.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationMenuHelper.kt @@ -18,7 +18,6 @@ import kotlinx.android.synthetic.main.session_logo_action_bar_content.* import network.loki.messenger.R import org.session.libsession.utilities.ExpirationUtil import org.session.libsession.utilities.recipients.Recipient -import org.thoughtcrime.securesms.components.ConversationSearchBottomBar import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2 import org.thoughtcrime.securesms.conversation.v2.search.SearchViewModel import org.thoughtcrime.securesms.loki.utilities.getColorWithID @@ -73,7 +72,7 @@ object ConversationMenuHelper { // Search val searchViewItem = menu.findItem(R.id.menu_search) val searchView = searchViewItem.actionView as SearchView - val searchViewModel:SearchViewModel = ViewModelProvider(context as ConversationActivityV2).get(SearchViewModel::class.java) + val searchViewModel = (context as ConversationActivityV2).getSearchViewModel()!! val queryListener = object : OnQueryTextListener { override fun onQueryTextSubmit(query: String): Boolean { searchViewModel.onQueryUpdated(query, threadId) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/search/SearchBottomBar.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/search/SearchBottomBar.kt index 93d24ff019..9565e6e107 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/search/SearchBottomBar.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/search/SearchBottomBar.kt @@ -5,8 +5,6 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import android.widget.LinearLayout -import android.widget.RelativeLayout -import androidx.constraintlayout.widget.ConstraintLayout import kotlinx.android.synthetic.main.view_search_bottom_bar.view.* import network.loki.messenger.R