kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix comparison causing hot loop on API25.
rodzic
85d5ea0382
commit
36fddbb79a
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -19,4 +19,4 @@ fun EditText.setIncognitoKeyboardEnabled(isIncognitoKeyboardEnabled: Boolean) {
|
||||||
} else {
|
} else {
|
||||||
imeOptions and INCOGNITO_KEYBOARD.inv()
|
imeOptions and INCOGNITO_KEYBOARD.inv()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue