package org.mercury_im.messenger.ui.login; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; import org.mercury_im.messenger.MercuryImApplication; import org.mercury_im.messenger.core.centers.ConnectionCenter; import org.mercury_im.messenger.persistence.model.AccountModel; import org.mercury_im.messenger.persistence.repository.AccountRepository; import java.util.List; import javax.inject.Inject; public class AccountsViewModel extends ViewModel { @Inject AccountRepository repository; @Inject ConnectionCenter connectionCenter; private final MutableLiveData> accounts = new MutableLiveData<>(); private final CompositeDisposable compositeDisposable = new CompositeDisposable(); @Inject public AccountsViewModel() { super(); MercuryImApplication.getApplication().getAppComponent().inject(this); compositeDisposable.add(repository.getAllAccounts() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe((Consumer>) accounts::setValue)); } @Override protected void onCleared() { super.onCleared(); compositeDisposable.clear(); } public LiveData> getAccounts() { return accounts; } }