2019-06-03 01:16:49 +02:00
|
|
|
package org.mercury_im.messenger.ui.login;
|
|
|
|
|
2019-09-30 02:54:05 +02:00
|
|
|
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;
|
|
|
|
|
2019-09-30 02:54:05 +02:00
|
|
|
import io.reactivex.Scheduler;
|
2019-09-13 09:17:59 +02:00
|
|
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
|
|
import io.reactivex.disposables.CompositeDisposable;
|
|
|
|
import io.reactivex.functions.Consumer;
|
|
|
|
import io.reactivex.schedulers.Schedulers;
|
|
|
|
|
2019-09-30 02:54:05 +02:00
|
|
|
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;
|
2019-09-30 02:54:05 +02:00
|
|
|
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;
|
|
|
|
|
2019-09-30 02:54:05 +02:00
|
|
|
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
|
2019-09-30 02:54:05 +02:00
|
|
|
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;
|
|
|
|
}
|
2019-09-30 02:54:05 +02:00
|
|
|
|
|
|
|
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
|
|
|
}
|