Fix comparison causing hot loop on API25.

This commit is contained in:
Alex Hart 2022-10-26 11:02:14 -03:00
parent 85d5ea0382
commit 36fddbb79a
4 changed files with 14 additions and 7 deletions

View file

@ -43,7 +43,7 @@ object CreateStoryNameFieldItem {
}
override fun bind(model: Model) {
if (model.body != editText.text) {
if (model.body.toString() != editText.text.toString()) {
editText.setText(model.body)
}

View file

@ -14,6 +14,7 @@ import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment
import org.thoughtcrime.securesms.components.settings.configure
import org.thoughtcrime.securesms.databinding.StoriesCreateWithRecipientsFragmentBinding
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.util.LifecycleDisposable
import org.thoughtcrime.securesms.util.Material3OnScrollHelper
import org.thoughtcrime.securesms.util.ViewUtil
import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory
@ -43,6 +44,7 @@ class CreateStoryWithViewersFragment : DSLSettingsFragment(
)
private val binding by ViewBinderDelegate(StoriesCreateWithRecipientsFragmentBinding::bind)
private val disposables = LifecycleDisposable()
private val recipientIds: Array<RecipientId>
get() = CreateStoryWithViewersFragmentArgs.fromBundle(requireArguments()).recipients
@ -56,8 +58,9 @@ class CreateStoryWithViewersFragment : DSLSettingsFragment(
viewModel.setLabel(it)
}
disposables.bindTo(viewLifecycleOwner)
adapter.submitList(getConfiguration().toMappingModelList())
viewModel.state.observe(viewLifecycleOwner) { state ->
disposables += viewModel.state.subscribe { state ->
val nameModel = CreateStoryNameFieldItem.Model(
body = state.label,

View file

@ -1,25 +1,29 @@
package org.thoughtcrime.securesms.stories.settings.create
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Flowable
import io.reactivex.rxjava3.disposables.CompositeDisposable
import io.reactivex.rxjava3.kotlin.plusAssign
import io.reactivex.rxjava3.kotlin.subscribeBy
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.util.livedata.Store
import org.thoughtcrime.securesms.util.rx.RxStore
class CreateStoryWithViewersViewModel(
private val repository: CreateStoryWithViewersRepository
) : ViewModel() {
private val store = Store(CreateStoryWithViewersState())
private val store = RxStore(CreateStoryWithViewersState())
private val disposables = CompositeDisposable()
val state: LiveData<CreateStoryWithViewersState> = store.stateLiveData
val state: Flowable<CreateStoryWithViewersState> = store.stateFlowable
.distinctUntilChanged()
.observeOn(AndroidSchedulers.mainThread())
override fun onCleared() {
disposables.clear()
store.dispose()
}
fun setLabel(label: CharSequence) {

View file

@ -19,4 +19,4 @@ fun EditText.setIncognitoKeyboardEnabled(isIncognitoKeyboardEnabled: Boolean) {
} else {
imeOptions and INCOGNITO_KEYBOARD.inv()
}
}
}