Այժմ ես փորձարկում եմ Fragment-ի համար դիտման մոդել պատրաստելու ուղղությամբ: Իմ մոտեցումն է մեկ հատվածի համար օգտագործել ճիշտ մեկ դիտման մոդել: Ես ունեմ մի քանի օգտագործման դեպքեր տարբեր սցենարների համար, օրինակ. գրքեր բերելու, գրքի մասին տեղեկություններ ստանալու համար։ Այս բոլոր օգտագործման դեպքերը տեղի են ունենում մեկ հատվածում: Հիմա ես պատրաստեցի ViewModel՝ միմյանցից անկախ 3 UseCase-ով և 3 համապատասխան LiveDatas-ով։
Հետաքրքիր է, արդյոք դա լավ պրակտիկա է: Կա՞ն առաջարկներ:
class GetBooksViewModel
@Inject constructor(private val getBooksUseCase: GetBooksUseCase,
private val getBooksListsUseCase: GetBooksListsUseCase,
private val getInfoByBookUseCase: GetInfoByBookUseCase) :
BaseViewModel() {
var books: MutableLiveData<java.util.LinkedHashMap<String, Book?>> = MutableLiveData()
var bookLists: MutableLiveData<List<BookList>> = MutableLiveData()
var infos: MutableLiveData<List<BookInfo>> = MutableLiveData()
//methods for fetching data will be below
fun getBooks() =
getChannelsUseCase() {
it.either(::handleFailure, ::handleGetBooksUseCase)
}
private fun handleGetBooksUseCase(response:
java.util.LinkedHashMap<String, Channel?>) {
this.books.value = response
}
Fragment-ի ներսում
getBooksViewModel = viewModel(viewModelFactory) {
observe(books, ::getBooks)
observe(booksLists, ::getBooksLists)
observe(bookInfos, ::doSomethingWithInfos)
failure(failure, ::handleFailure)
}