Mercury-IM/app/src/main/java/org/mercury_im/messenger/ui/roster/contacts/ContactListViewModel.java

55 lines
1.8 KiB
Java
Raw Normal View History

2019-09-23 23:20:43 +02:00
package org.mercury_im.messenger.ui.roster.contacts;
2019-05-04 00:27:02 +02:00
2019-08-19 02:36:31 +02:00
import android.util.Log;
2019-05-18 10:06:16 +02:00
import androidx.lifecycle.LiveData;
2019-08-03 19:05:50 +02:00
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
2019-05-04 00:27:02 +02:00
2019-05-13 03:19:17 +02:00
import org.mercury_im.messenger.MercuryImApplication;
import org.mercury_im.messenger.xmpp.model.ContactModel;
import org.mercury_im.messenger.data.repository.XmppPeerRepository;
2019-05-04 00:27:02 +02:00
import java.util.List;
import javax.inject.Inject;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
2019-08-03 19:05:50 +02:00
2019-09-23 23:20:43 +02:00
public class ContactListViewModel extends ViewModel {
2019-05-04 00:27:02 +02:00
@Inject
XmppPeerRepository xmppContactRepository;
2019-05-04 00:27:02 +02:00
private final MutableLiveData<List<ContactModel>> rosterEntryList = new MutableLiveData<>();
2019-08-03 19:05:50 +02:00
private final CompositeDisposable compositeDisposable = new CompositeDisposable();
2019-05-04 00:27:02 +02:00
2019-09-23 23:20:43 +02:00
public ContactListViewModel() {
2019-08-03 19:05:50 +02:00
super();
2019-05-13 03:19:17 +02:00
MercuryImApplication.getApplication().getAppComponent().inject(this);
2019-09-23 23:20:43 +02:00
Log.d("ContactListViewModel", "Start observing database");
2019-08-03 19:05:50 +02:00
// Subscribe to changes to the contacts table and update the LiveData object for the UI.
2019-11-23 21:16:03 +01:00
compositeDisposable.add(xmppContactRepository.getAllContacts()
2019-08-03 19:05:50 +02:00
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(o -> {
List<ContactModel> list = o.toList();
Log.d("ContactListViewModel", "Room changed contacts: " + list.size());
rosterEntryList.setValue(list);
2019-08-19 02:36:31 +02:00
}));
2019-08-03 19:05:50 +02:00
}
@Override
protected void onCleared() {
super.onCleared();
compositeDisposable.clear();
2019-05-04 00:27:02 +02:00
}
public LiveData<List<ContactModel>> getRosterEntryList() {
2019-05-04 00:27:02 +02:00
return rosterEntryList;
}
}