Skip to content

Commit

Permalink
Fix comparison causing hot loop on API25.
Browse files Browse the repository at this point in the history
  • Loading branch information
alex-signal committed Oct 26, 2022
1 parent 8ea1e1a commit a314b71
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 6 deletions.
Expand Up @@ -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)
}

Expand Down
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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,
Expand Down
@@ -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) {
Expand Down

0 comments on commit a314b71

Please sign in to comment.