Mercury-IM/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListViewModel.java

63 lines
1.9 KiB
Java
Raw Normal View History

2019-05-27 21:34:11 +02:00
package org.mercury_im.messenger.ui.chatlist;
2019-09-01 04:56:23 +02:00
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
2019-05-27 21:34:11 +02:00
import androidx.lifecycle.ViewModel;
2019-09-01 04:56:23 +02:00
import org.mercury_im.messenger.MercuryImApplication;
import org.mercury_im.messenger.persistence.model.ChatModel;
2019-09-02 01:06:17 +02:00
import org.mercury_im.messenger.persistence.model.MessageModel;
2019-09-01 04:56:23 +02:00
import org.mercury_im.messenger.persistence.repository.ChatRepository;
2019-09-02 01:06:17 +02:00
import org.mercury_im.messenger.persistence.repository.MessageRepository;
2019-09-10 18:24:47 +02:00
import org.mercury_im.messenger.persistence.pojo.Chat;
2019-09-01 04:56:23 +02:00
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;
2019-05-27 21:34:11 +02:00
public class ChatListViewModel extends ViewModel {
2019-09-01 04:56:23 +02:00
@Inject
ChatRepository chatRepository;
2019-09-02 01:06:17 +02:00
@Inject
MessageRepository messageRepository;
2019-09-01 04:56:23 +02:00
private CompositeDisposable disposable = new CompositeDisposable();
2019-09-10 18:24:47 +02:00
private final MutableLiveData<List<Chat>> chats = new MutableLiveData<>();
2019-09-01 04:56:23 +02:00
public ChatListViewModel() {
MercuryImApplication.getApplication().getAppComponent().inject(this);
2019-09-10 18:24:47 +02:00
disposable.add(chatRepository.getDisplayableChats()
2019-09-01 04:56:23 +02:00
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
2019-09-10 18:24:47 +02:00
.subscribe((Consumer<List<Chat>>) chats::setValue));
2019-09-02 01:06:17 +02:00
disposable.add(messageRepository.getAllMessages()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe((Consumer<List<MessageModel>>) messageModels -> {
for (MessageModel message : messageModels) {
}
}));
2019-09-01 04:56:23 +02:00
}
2019-09-10 18:24:47 +02:00
public LiveData<List<Chat>> getChats() {
2019-09-01 04:56:23 +02:00
return chats;
}
@Override
protected void onCleared() {
super.onCleared();
disposable.dispose();
}
2019-05-27 21:34:11 +02:00
}