Remove usage of SingleLiveEvent from MediaCaptureViewModel.

This commit is contained in:
Alex Hart 2022-12-09 13:30:45 -04:00 committed by Cody Henthorne
parent c56e63d62f
commit 4a5a65ff6c
2 changed files with 9 additions and 7 deletions

View file

@ -58,7 +58,7 @@ class MediaCaptureFragment : Fragment(R.layout.fragment_container), CameraFragme
.replace(R.id.fragment_container, captureChildFragment as Fragment) .replace(R.id.fragment_container, captureChildFragment as Fragment)
.commitNowAllowingStateLoss() .commitNowAllowingStateLoss()
viewModel.events.observe(viewLifecycleOwner) { event -> lifecycleDisposable += viewModel.events.subscribe { event ->
@Exhaustive @Exhaustive
when (event) { when (event) {
MediaCaptureEvent.MediaCaptureRenderFailed -> { MediaCaptureEvent.MediaCaptureRenderFailed -> {

View file

@ -1,11 +1,13 @@
package org.thoughtcrime.securesms.mediasend.v2.capture package org.thoughtcrime.securesms.mediasend.v2.capture
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.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.mediasend.Media
import org.thoughtcrime.securesms.util.SingleLiveEvent
import org.thoughtcrime.securesms.util.rx.RxStore import org.thoughtcrime.securesms.util.rx.RxStore
import java.io.FileDescriptor import java.io.FileDescriptor
import java.util.Optional import java.util.Optional
@ -14,9 +16,9 @@ class MediaCaptureViewModel(private val repository: MediaCaptureRepository) : Vi
private val store: RxStore<MediaCaptureState> = RxStore(MediaCaptureState()) private val store: RxStore<MediaCaptureState> = RxStore(MediaCaptureState())
private val internalEvents: SingleLiveEvent<MediaCaptureEvent> = SingleLiveEvent() private val internalEvents: Subject<MediaCaptureEvent> = PublishSubject.create()
val events: LiveData<MediaCaptureEvent> = internalEvents val events: Observable<MediaCaptureEvent> = internalEvents.observeOn(AndroidSchedulers.mainThread())
init { init {
repository.getMostRecentItem { media -> repository.getMostRecentItem { media ->
@ -43,11 +45,11 @@ class MediaCaptureViewModel(private val repository: MediaCaptureRepository) : Vi
} }
private fun onMediaRendered(media: Media) { private fun onMediaRendered(media: Media) {
internalEvents.postValue(MediaCaptureEvent.MediaCaptureRendered(media)) internalEvents.onNext(MediaCaptureEvent.MediaCaptureRendered(media))
} }
private fun onMediaRenderFailed() { private fun onMediaRenderFailed() {
internalEvents.postValue(MediaCaptureEvent.MediaCaptureRenderFailed) internalEvents.onNext(MediaCaptureEvent.MediaCaptureRenderFailed)
} }
class Factory(private val repository: MediaCaptureRepository) : ViewModelProvider.Factory { class Factory(private val repository: MediaCaptureRepository) : ViewModelProvider.Factory {