65 lines
2.0 KiB
Java
65 lines
2.0 KiB
Java
package org.mercury_im.messenger.android.ui.roster.contacts;
|
|
|
|
import android.util.Log;
|
|
|
|
import androidx.lifecycle.LiveData;
|
|
import androidx.lifecycle.MutableLiveData;
|
|
import androidx.lifecycle.ViewModel;
|
|
|
|
import org.mercury_im.messenger.android.MercuryImApplication;
|
|
import org.mercury_im.messenger.core.Messenger;
|
|
import org.mercury_im.messenger.data.repository.RxAccountRepository;
|
|
import org.mercury_im.messenger.data.repository.RxPeerRepository;
|
|
import org.mercury_im.messenger.entity.Account;
|
|
import org.mercury_im.messenger.entity.contact.Peer;
|
|
|
|
import java.util.List;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
import io.reactivex.disposables.CompositeDisposable;
|
|
import lombok.Getter;
|
|
|
|
|
|
public class ContactListViewModel extends ViewModel {
|
|
|
|
@Inject
|
|
RxPeerRepository xmppContactRepository;
|
|
|
|
@Inject
|
|
RxAccountRepository accountRepository;
|
|
|
|
@Inject
|
|
@Getter
|
|
Messenger messenger;
|
|
|
|
private final MutableLiveData<List<Peer>> rosterEntryList = new MutableLiveData<>();
|
|
private final MutableLiveData<List<Account>> accounts = new MutableLiveData<>();
|
|
private final CompositeDisposable compositeDisposable = new CompositeDisposable();
|
|
|
|
public ContactListViewModel() {
|
|
super();
|
|
MercuryImApplication.getApplication().getAppComponent().inject(this);
|
|
Log.d("ContactListViewModel", "Start observing database");
|
|
// Subscribe to changes to the contacts table and update the LiveData object for the UI.
|
|
compositeDisposable.add(xmppContactRepository.observeAllPeers()
|
|
.subscribe(rosterEntryList::setValue));
|
|
compositeDisposable.add(accountRepository.observeAllAccounts()
|
|
.subscribe(accounts::setValue));
|
|
}
|
|
|
|
@Override
|
|
protected void onCleared() {
|
|
super.onCleared();
|
|
compositeDisposable.clear();
|
|
}
|
|
|
|
public LiveData<List<Peer>> getRosterEntryList() {
|
|
return rosterEntryList;
|
|
}
|
|
|
|
public LiveData<List<Account>> getAccounts() {
|
|
return accounts;
|
|
}
|
|
}
|