diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureFragment.kt index 276542097a..432ab1cc2a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureFragment.kt @@ -58,7 +58,7 @@ class MediaCaptureFragment : Fragment(R.layout.fragment_container), CameraFragme .replace(R.id.fragment_container, captureChildFragment as Fragment) .commitNowAllowingStateLoss() - viewModel.events.observe(viewLifecycleOwner) { event -> + lifecycleDisposable += viewModel.events.subscribe { event -> @Exhaustive when (event) { MediaCaptureEvent.MediaCaptureRenderFailed -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureViewModel.kt index 564cf727a6..8c29068356 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureViewModel.kt @@ -1,11 +1,13 @@ package org.thoughtcrime.securesms.mediasend.v2.capture -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.core.Observable +import io.reactivex.rxjava3.subjects.PublishSubject +import io.reactivex.rxjava3.subjects.Subject import org.thoughtcrime.securesms.mediasend.Media -import org.thoughtcrime.securesms.util.SingleLiveEvent import org.thoughtcrime.securesms.util.rx.RxStore import java.io.FileDescriptor import java.util.Optional @@ -14,9 +16,9 @@ class MediaCaptureViewModel(private val repository: MediaCaptureRepository) : Vi private val store: RxStore = RxStore(MediaCaptureState()) - private val internalEvents: SingleLiveEvent = SingleLiveEvent() + private val internalEvents: Subject = PublishSubject.create() - val events: LiveData = internalEvents + val events: Observable = internalEvents.observeOn(AndroidSchedulers.mainThread()) init { repository.getMostRecentItem { media -> @@ -43,11 +45,11 @@ class MediaCaptureViewModel(private val repository: MediaCaptureRepository) : Vi } private fun onMediaRendered(media: Media) { - internalEvents.postValue(MediaCaptureEvent.MediaCaptureRendered(media)) + internalEvents.onNext(MediaCaptureEvent.MediaCaptureRendered(media)) } private fun onMediaRenderFailed() { - internalEvents.postValue(MediaCaptureEvent.MediaCaptureRenderFailed) + internalEvents.onNext(MediaCaptureEvent.MediaCaptureRenderFailed) } class Factory(private val repository: MediaCaptureRepository) : ViewModelProvider.Factory {