Mercury-IM/app/src/main/java/org/mercury_im/messenger/ui/login/AccountsViewModel.java

72 lines
2.3 KiB
Java
Raw Normal View History

2019-06-03 01:16:49 +02:00
package org.mercury_im.messenger.ui.login;
import android.app.Application;
import android.widget.Toast;
import androidx.lifecycle.AndroidViewModel;
2019-06-03 01:16:49 +02:00
import androidx.lifecycle.LiveData;
2019-08-04 04:22:08 +02:00
import androidx.lifecycle.MutableLiveData;
2019-06-03 01:16:49 +02:00
import androidx.lifecycle.ViewModel;
import io.reactivex.Scheduler;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import org.jivesoftware.smack.XMPPConnection;
2019-06-03 01:16:49 +02:00
import org.mercury_im.messenger.MercuryImApplication;
2019-08-25 17:54:03 +02:00
import org.mercury_im.messenger.core.centers.ConnectionCenter;
import org.mercury_im.messenger.core.connection.MercuryConnection;
2019-08-04 04:22:08 +02:00
import org.mercury_im.messenger.persistence.model.AccountModel;
2019-06-03 01:16:49 +02:00
import org.mercury_im.messenger.persistence.repository.AccountRepository;
import java.util.List;
import javax.inject.Inject;
public class AccountsViewModel extends AndroidViewModel {
2019-06-03 01:16:49 +02:00
@Inject
AccountRepository repository;
2019-08-04 04:22:08 +02:00
@Inject
ConnectionCenter connectionCenter;
private final MutableLiveData<List<AccountModel>> accounts = new MutableLiveData<>();
private final CompositeDisposable compositeDisposable = new CompositeDisposable();
2019-06-03 01:16:49 +02:00
@Inject
public AccountsViewModel(Application application) {
super(application);
2019-06-03 01:16:49 +02:00
MercuryImApplication.getApplication().getAppComponent().inject(this);
2019-08-04 04:22:08 +02:00
compositeDisposable.add(repository.getAllAccounts()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe((Consumer<List<AccountModel>>) accounts::setValue));
}
@Override
protected void onCleared() {
super.onCleared();
compositeDisposable.clear();
2019-06-03 01:16:49 +02:00
}
2019-08-04 04:22:08 +02:00
public LiveData<List<AccountModel>> getAccounts() {
2019-06-03 01:16:49 +02:00
return accounts;
}
public void toggleAccountEnabled(AccountModel accountModel) {
MercuryConnection connection = connectionCenter.getConnection(accountModel);
if (connection == null) {
Toast.makeText(this.getApplication(), "MercuryConnection is null!", Toast.LENGTH_LONG).show();
return;
}
accountModel.setEnabled(!accountModel.getEnabled());
repository.updateAccount(accountModel)
.subscribeOn(Schedulers.io())
.subscribe();
}
2019-06-03 01:16:49 +02:00
}