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

65 lines
1.9 KiB
Java

package org.mercury_im.messenger.ui.account;
import android.app.Application;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import org.mercury_im.messenger.MercuryImApplication;
import org.mercury_im.messenger.Messenger;
import org.mercury_im.messenger.data.repository.AccountRepository;
import org.mercury_im.messenger.entity.Account;
import org.mercury_im.messenger.xmpp.MercuryConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import io.reactivex.disposables.CompositeDisposable;
import lombok.Getter;
public class AccountsViewModel extends AndroidViewModel {
@Inject
AccountRepository repository;
@Inject
Messenger messenger;
private final MutableLiveData<List<MercuryConnection>> connections = new MutableLiveData<>();
private final CompositeDisposable compositeDisposable = new CompositeDisposable();
@Inject
public AccountsViewModel(Application application) {
super(application);
MercuryImApplication.getApplication().getAppComponent().inject(this);
compositeDisposable.add(messenger.getConnectionManager()
.observeConnections()
.map(Map::values)
.subscribe(conns -> connections.postValue(new ArrayList<>(conns))));
}
@Override
protected void onCleared() {
super.onCleared();
compositeDisposable.clear();
}
public CompositeDisposable getDisposable() {
return compositeDisposable;
}
public LiveData<List<MercuryConnection>> getConnections() {
return connections;
}
public void setAccountEnabled(Account accountModel, boolean enabled) {
accountModel.setEnabled(enabled);
repository.upsertAccount(accountModel)
.subscribe();
}
}