Fix comparison causing hot loop on API25.

main
Alex Hart 2022-10-26 11:02:14 -03:00
rodzic 85d5ea0382
commit 36fddbb79a
4 zmienionych plików z 14 dodań i 7 usunięć

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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