-
Notifications
You must be signed in to change notification settings - Fork 178
/
BrowseBufferoosViewModel.kt
55 lines (42 loc) · 1.83 KB
/
BrowseBufferoosViewModel.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package org.buffer.android.boilerplate.presentation.browse
import android.arch.lifecycle.LiveData
import android.arch.lifecycle.MutableLiveData
import android.arch.lifecycle.ViewModel
import io.reactivex.subscribers.DisposableSubscriber
import org.buffer.android.boilerplate.domain.interactor.browse.GetBufferoos
import org.buffer.android.boilerplate.domain.model.Bufferoo
import org.buffer.android.boilerplate.presentation.data.Resource
import org.buffer.android.boilerplate.presentation.data.ResourceState
import org.buffer.android.boilerplate.presentation.mapper.BufferooMapper
import org.buffer.android.boilerplate.presentation.model.BufferooView
import javax.inject.Inject
open class BrowseBufferoosViewModel @Inject internal constructor(
private val getBufferoos: GetBufferoos,
private val bufferooMapper: BufferooMapper) : ViewModel() {
private val bufferoosLiveData: MutableLiveData<Resource<List<BufferooView>>> =
MutableLiveData()
init {
fetchBufferoos()
}
override fun onCleared() {
getBufferoos.dispose()
super.onCleared()
}
fun getBufferoos(): LiveData<Resource<List<BufferooView>>> {
return bufferoosLiveData
}
fun fetchBufferoos() {
bufferoosLiveData.postValue(Resource(ResourceState.LOADING, null, null))
return getBufferoos.execute(BufferooSubscriber())
}
inner class BufferooSubscriber: DisposableSubscriber<List<Bufferoo>>() {
override fun onComplete() { }
override fun onNext(t: List<Bufferoo>) {
bufferoosLiveData.postValue(Resource(ResourceState.SUCCESS,
t.map { bufferooMapper.mapToView(it) }, null))
}
override fun onError(exception: Throwable) {
bufferoosLiveData.postValue(Resource(ResourceState.ERROR, null, exception.message))
}
}
}