Remove SingleLiveEvent from ConversationSettingsViewModel.

main
Alex Hart 2022-12-09 13:52:18 -04:00 zatwierdzone przez Cody Henthorne
rodzic 4a5a65ff6c
commit de558bc87c
2 zmienionych plików z 17 dodań i 11 usunięć

Wyświetl plik

@ -82,6 +82,7 @@ import org.thoughtcrime.securesms.stories.viewer.StoryViewerActivity
import org.thoughtcrime.securesms.util.CommunicationActions import org.thoughtcrime.securesms.util.CommunicationActions
import org.thoughtcrime.securesms.util.ContextUtil import org.thoughtcrime.securesms.util.ContextUtil
import org.thoughtcrime.securesms.util.ExpirationUtil import org.thoughtcrime.securesms.util.ExpirationUtil
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.MappingAdapter import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter
@ -141,6 +142,7 @@ class ConversationSettingsFragment : DSLSettingsFragment(
private lateinit var addToGroupStoryDelegate: AddToGroupStoryDelegate private lateinit var addToGroupStoryDelegate: AddToGroupStoryDelegate
private val navController get() = Navigation.findNavController(requireView()) private val navController get() = Navigation.findNavController(requireView())
private val lifecycleDisposable = LifecycleDisposable()
override fun onAttach(context: Context) { override fun onAttach(context: Context) {
super.onAttach(context) super.onAttach(context)
@ -256,7 +258,8 @@ class ConversationSettingsFragment : DSLSettingsFragment(
} }
} }
viewModel.events.observe(viewLifecycleOwner) { event -> lifecycleDisposable.bindTo(viewLifecycleOwner)
lifecycleDisposable += viewModel.events.subscribe { event ->
@Exhaustive @Exhaustive
when (event) { when (event) {
is ConversationSettingsEvent.AddToAGroup -> handleAddToAGroup(event) is ConversationSettingsEvent.AddToAGroup -> handleAddToAGroup(event)

Wyświetl plik

@ -6,8 +6,12 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Transformations import androidx.lifecycle.Transformations
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.Observable
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.subjects.PublishSubject
import io.reactivex.rxjava3.subjects.Subject
import org.signal.core.util.CursorUtil import org.signal.core.util.CursorUtil
import org.signal.core.util.ThreadUtil import org.signal.core.util.ThreadUtil
import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.concurrent.SignalExecutors
@ -24,7 +28,6 @@ import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.recipients.RecipientUtil import org.thoughtcrime.securesms.recipients.RecipientUtil
import org.thoughtcrime.securesms.util.FeatureFlags import org.thoughtcrime.securesms.util.FeatureFlags
import org.thoughtcrime.securesms.util.SingleLiveEvent
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil import org.thoughtcrime.securesms.util.livedata.LiveDataUtil
import org.thoughtcrime.securesms.util.livedata.Store import org.thoughtcrime.securesms.util.livedata.Store
import java.util.Optional import java.util.Optional
@ -44,12 +47,12 @@ sealed class ConversationSettingsViewModel(
specificSettingsState = specificSettingsState specificSettingsState = specificSettingsState
) )
) )
protected val internalEvents = SingleLiveEvent<ConversationSettingsEvent>() protected val internalEvents: Subject<ConversationSettingsEvent> = PublishSubject.create()
private val sharedMediaUpdateTrigger = MutableLiveData(Unit) private val sharedMediaUpdateTrigger = MutableLiveData(Unit)
val state: LiveData<ConversationSettingsState> = store.stateLiveData val state: LiveData<ConversationSettingsState> = store.stateLiveData
val events: LiveData<ConversationSettingsEvent> = internalEvents val events: Observable<ConversationSettingsEvent> = internalEvents.observeOn(AndroidSchedulers.mainThread())
protected val disposable = CompositeDisposable() protected val disposable = CompositeDisposable()
@ -210,7 +213,7 @@ sealed class ConversationSettingsViewModel(
override fun onAddToGroup() { override fun onAddToGroup() {
repository.getGroupMembership(recipientId) { repository.getGroupMembership(recipientId) {
internalEvents.postValue(ConversationSettingsEvent.AddToAGroup(recipientId, it)) internalEvents.onNext(ConversationSettingsEvent.AddToAGroup(recipientId, it))
} }
} }
@ -404,7 +407,7 @@ sealed class ConversationSettingsViewModel(
repository.getGroupCapacity(groupId) { capacityResult -> repository.getGroupCapacity(groupId) { capacityResult ->
if (capacityResult.getRemainingCapacity() > 0) { if (capacityResult.getRemainingCapacity() > 0) {
internalEvents.postValue( internalEvents.onNext(
ConversationSettingsEvent.AddMembersToGroup( ConversationSettingsEvent.AddMembersToGroup(
groupId, groupId,
capacityResult.getSelectionWarning(), capacityResult.getSelectionWarning(),
@ -414,7 +417,7 @@ sealed class ConversationSettingsViewModel(
) )
) )
} else { } else {
internalEvents.postValue(ConversationSettingsEvent.ShowGroupHardLimitDialog) internalEvents.onNext(ConversationSettingsEvent.ShowGroupHardLimitDialog)
} }
} }
} }
@ -426,14 +429,14 @@ sealed class ConversationSettingsViewModel(
when (it) { when (it) {
is GroupAddMembersResult.Success -> { is GroupAddMembersResult.Success -> {
if (it.newMembersInvited.isNotEmpty()) { if (it.newMembersInvited.isNotEmpty()) {
internalEvents.postValue(ConversationSettingsEvent.ShowGroupInvitesSentDialog(it.newMembersInvited)) internalEvents.onNext(ConversationSettingsEvent.ShowGroupInvitesSentDialog(it.newMembersInvited))
} }
if (it.numberOfMembersAdded > 0) { if (it.numberOfMembersAdded > 0) {
internalEvents.postValue(ConversationSettingsEvent.ShowMembersAdded(it.numberOfMembersAdded)) internalEvents.onNext(ConversationSettingsEvent.ShowMembersAdded(it.numberOfMembersAdded))
} }
} }
is GroupAddMembersResult.Failure -> internalEvents.postValue(ConversationSettingsEvent.ShowAddMembersToGroupError(it.reason)) is GroupAddMembersResult.Failure -> internalEvents.onNext(ConversationSettingsEvent.ShowAddMembersToGroupError(it.reason))
} }
} }
} }
@ -468,7 +471,7 @@ sealed class ConversationSettingsViewModel(
override fun initiateGroupUpgrade() { override fun initiateGroupUpgrade() {
repository.getExternalPossiblyMigratedGroupRecipientId(groupId) { repository.getExternalPossiblyMigratedGroupRecipientId(groupId) {
internalEvents.postValue(ConversationSettingsEvent.InitiateGroupMigration(it)) internalEvents.onNext(ConversationSettingsEvent.InitiateGroupMigration(it))
} }
} }
} }