Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@
android:name=".ui.tip.wc.WalletConnectActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:launchMode="singleTop"
android:theme="@style/AppTheme.Music" />
android:theme="@style/AppTheme.Transparent" />

<activity
android:name=".ui.home.inscription.InscriptionActivity"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.os.Bundle
import android.os.CancellationSignal
import android.view.View
import android.view.View.VISIBLE
import android.widget.EditText
import androidx.core.view.isVisible
import androidx.fragment.app.viewModels
import androidx.lifecycle.LiveData
Expand All @@ -15,6 +16,7 @@ import com.jakewharton.rxbinding3.widget.textChanges
import com.uber.autodispose.autoDispose
import dagger.hilt.android.AndroidEntryPoint
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import one.mixin.android.R
Expand All @@ -23,6 +25,7 @@ import one.mixin.android.extension.getParcelableCompat
import one.mixin.android.extension.hideKeyboard
import one.mixin.android.extension.inTransaction
import one.mixin.android.extension.showKeyboard
import one.mixin.android.extension.viewDestroyed
import one.mixin.android.extension.withArgs
import one.mixin.android.ui.common.BaseFragment
import one.mixin.android.ui.conversation.ConversationActivity
Expand Down Expand Up @@ -67,14 +70,27 @@ class SearchMessageFragment : BaseFragment(R.layout.fragment_search_message) {
private val binding by viewBinding(FragmentSearchMessageBinding::bind)

private var searchJob: Job? = null
private var textChangesDisposable: Disposable? = null
private var searchEditText: EditText? = null

private var cancellationSignal: CancellationSignal? = null
private val initialSearchRunnable =
Runnable {
if (viewDestroyed()) return@Runnable
searchJob = onTextChanged(query)
}
private val showKeyboardRunnable =
Runnable {
if (viewDestroyed()) return@Runnable
searchEditText?.showKeyboard()
}

override fun onViewCreated(
view: View,
savedInstanceState: Bundle?,
) {
super.onViewCreated(view, savedInstanceState)
searchEditText = binding.searchEt
binding.titleView.leftIb.setOnClickListener {
binding.searchRv.hideKeyboard()
requireActivity().onBackPressed()
Expand All @@ -97,10 +113,13 @@ class SearchMessageFragment : BaseFragment(R.layout.fragment_search_message) {
adapter.callback =
object : SearchMessageAdapter.SearchMessageCallback {
override fun onItemClick(item: SearchMessageDetailItem) {
val keyword = binding.searchEt.text.toString()
searchViewModel.findConversationById(searchMessageItem.conversationId)
.autoDispose(stopScope)
.subscribe {
binding.searchEt.hideKeyboard()
if (!viewDestroyed()) {
binding.searchEt.hideKeyboard()
}
val activity = requireActivity()
val conversationFragment = activity.supportFragmentManager.findFragmentByTag(ConversationFragment.TAG) as? ConversationFragment
if (activity is ConversationActivity && conversationFragment != null) {
Expand All @@ -111,14 +130,14 @@ class SearchMessageFragment : BaseFragment(R.layout.fragment_search_message) {
hide(this@SearchMessageFragment)
addToBackStack(null)
}
conversationFragment.updateConversationInfo(item.messageId, binding.searchEt.text.toString())
conversationFragment.updateConversationInfo(item.messageId, keyword)
}
} else {
ConversationActivity.show(
requireContext(),
conversationId = searchMessageItem.conversationId,
messageId = item.messageId,
keyword = binding.searchEt.text.toString(),
keyword = keyword,
)
if (isConversationSearch()) {
parentFragmentManager.popBackStack()
Expand All @@ -131,33 +150,39 @@ class SearchMessageFragment : BaseFragment(R.layout.fragment_search_message) {

binding.clearIb.setOnClickListener { binding.searchEt.setText("") }
binding.searchEt.setText(query)
binding.searchEt.textChanges().debounce(SEARCH_DEBOUNCE, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.autoDispose(destroyScope)
.subscribe(
textChangesDisposable =
binding.searchEt.textChanges().debounce(SEARCH_DEBOUNCE, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.autoDispose(destroyScope)
.subscribe(
{
if (viewDestroyed()) return@subscribe
binding.clearIb.isVisible = it.isNotEmpty()
searchJob?.cancel()
searchJob = onTextChanged(it.toString())
},
{},
)
binding.searchEt.postDelayed(
{
searchJob = onTextChanged(query)
},
50,
)
searchEditText?.postDelayed(initialSearchRunnable, 50)
if (isConversationSearch()) {
binding.searchEt.postDelayed(
{
binding.searchEt.showKeyboard()
},
500,
)
searchEditText?.postDelayed(showKeyboardRunnable, 500)
}
}

override fun onDestroyView() {
searchEditText?.removeCallbacks(initialSearchRunnable)
searchEditText?.removeCallbacks(showKeyboardRunnable)
searchEditText = null
textChangesDisposable?.dispose()
textChangesDisposable = null
searchJob?.cancel()
searchJob = null
removeObserverAndCancel()
observer = null
curLiveData = null
super.onDestroyView()
}

override fun onDestroy() {
super.onDestroy()
cancellationSignal?.cancel()
Expand All @@ -179,7 +204,8 @@ class SearchMessageFragment : BaseFragment(R.layout.fragment_search_message) {
private fun isConversationSearch() = searchMessageItem.messageCount == 0

private fun onTextChanged(s: String) =
lifecycleScope.launch {
viewLifecycleOwner.lifecycleScope.launch {
if (viewDestroyed()) return@launch
if (s == adapter.query) {
return@launch
}
Expand All @@ -202,13 +228,15 @@ class SearchMessageFragment : BaseFragment(R.layout.fragment_search_message) {
}

private fun bindAndSearch(s: String) {
if (viewDestroyed()) return
binding.progress.isVisible = true

removeObserverAndCancel()
cancellationSignal = CancellationSignal()
curLiveData = searchViewModel.observeFuzzySearchMessageDetail(s, searchMessageItem.conversationId, cancellationSignal!!)
observer =
Observer {
if (viewDestroyed()) return@Observer
if (s != binding.searchEt.text.toString()) return@Observer
binding.progress.isVisible = false

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package one.mixin.android.ui.tip.wc

import android.app.Activity
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.view.WindowManager
import dagger.hilt.android.AndroidEntryPoint
Expand All @@ -14,6 +16,7 @@ import one.mixin.android.tip.wc.WalletConnect
import one.mixin.android.tip.wc.WalletConnect.RequestType
import one.mixin.android.ui.common.BaseActivity
import one.mixin.android.ui.common.QrScanBottomSheetDialogFragment
import one.mixin.android.util.SystemUIManager
import timber.log.Timber
import javax.inject.Inject

Expand All @@ -27,7 +30,9 @@ class WalletConnectActivity : BaseActivity() {
override fun getNightThemeId(): Int = R.style.AppTheme_Night_Transparent

override fun onCreate(savedInstanceState: Bundle?) {
skipSystemUi = true
super.onCreate(savedInstanceState)
SystemUIManager.setSafePadding(window, Color.TRANSPARENT)
window.setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
Expand Down Expand Up @@ -145,6 +150,7 @@ class WalletConnectActivity : BaseActivity() {
putExtra(ARGS_WC_EVENT, event)
},
)
(context as? Activity)?.overridePendingTransition(R.anim.slide_in_bottom, R.anim.stay)
}

fun show(
Expand All @@ -156,6 +162,7 @@ class WalletConnectActivity : BaseActivity() {
putExtra(ARGS_WC_ERROR, error)
},
)
(context as? Activity)?.overridePendingTransition(R.anim.slide_in_bottom, R.anim.stay)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import one.mixin.android.RxBus
import one.mixin.android.api.request.web3.EstimateFeeRequest
import one.mixin.android.extension.booleanFromAttribute
import one.mixin.android.extension.defaultSharedPreferences
import one.mixin.android.extension.dp
import one.mixin.android.extension.getSafeAreaInsetsTop
import one.mixin.android.extension.isNightMode
import one.mixin.android.extension.putLong
Expand Down Expand Up @@ -200,6 +201,9 @@ class WalletConnectBottomSheetDialogFragment : MixinComposeBottomSheetDialogFrag
}

override fun getBottomSheetHeight(view: View): Int {
if (requestType == RequestType.Connect) {
return 200.dp
}
return requireContext().screenHeight() - view.getSafeAreaInsetsTop()
}

Expand Down
103 changes: 0 additions & 103 deletions app/src/main/java/one/mixin/android/ui/tip/wc/WalletConnectFragment.kt

This file was deleted.

Loading
Loading