package org.mercury_im.messenger.ui.chatlist; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import org.mercury_im.messenger.MercuryImApplication; import org.mercury_im.messenger.persistence.model.ChatModel; import org.mercury_im.messenger.persistence.model.MessageModel; import org.mercury_im.messenger.persistence.repository.ChatRepository; import org.mercury_im.messenger.persistence.repository.MessageRepository; import org.mercury_im.messenger.persistence.pojo.Chat; import java.util.List; import javax.inject.Inject; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; public class ChatListViewModel extends ViewModel { @Inject ChatRepository chatRepository; @Inject MessageRepository messageRepository; private CompositeDisposable disposable = new CompositeDisposable(); private final MutableLiveData> chats = new MutableLiveData<>(); public ChatListViewModel() { MercuryImApplication.getApplication().getAppComponent().inject(this); disposable.add(chatRepository.getDisplayableChats() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe((Consumer>) chats::setValue)); disposable.add(messageRepository.getAllMessages() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe((Consumer>) messageModels -> { for (MessageModel message : messageModels) { } })); } public LiveData> getChats() { return chats; } @Override protected void onCleared() { super.onCleared(); disposable.dispose(); } }