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)
.commitNowAllowingStateLoss()
viewModel.events.observe(viewLifecycleOwner) { event ->
lifecycleDisposable += viewModel.events.subscribe { event ->
@Exhaustive
when (event) {
MediaCaptureEvent.MediaCaptureRenderFailed -> {

View file

@ -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<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 {
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 {