Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java67
1 files changed, 29 insertions, 38 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java
index a8107726..5e230a74 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountsActivity.java
@@ -2,24 +2,22 @@ package it.niedermann.owncloud.notes.manageaccounts;
import android.os.Bundle;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.lifecycle.LiveData;
+import androidx.lifecycle.ViewModelProvider;
-import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
-import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException;
import com.nextcloud.android.sso.helper.SingleAccountHelper;
-import com.nextcloud.android.sso.model.SingleSignOnAccount;
import it.niedermann.owncloud.notes.LockedActivity;
import it.niedermann.owncloud.notes.databinding.ActivityManageAccountsBinding;
import it.niedermann.owncloud.notes.persistence.NotesDatabase;
import it.niedermann.owncloud.notes.persistence.entity.Account;
-
-import static androidx.lifecycle.Transformations.distinctUntilChanged;
+import it.niedermann.owncloud.notes.shared.model.IResponseCallback;
public class ManageAccountsActivity extends LockedActivity {
private ActivityManageAccountsBinding binding;
+ private ManageAccountsViewModel viewModel;
private ManageAccountAdapter adapter;
private NotesDatabase db = null;
@@ -28,45 +26,38 @@ public class ManageAccountsActivity extends LockedActivity {
super.onCreate(savedInstanceState);
binding = ActivityManageAccountsBinding.inflate(getLayoutInflater());
+ viewModel = new ViewModelProvider(this).get(ManageAccountsViewModel.class);
setContentView(binding.getRoot());
setSupportActionBar(binding.toolbar);
db = NotesDatabase.getInstance(this);
- distinctUntilChanged(db.getAccountDao().getAccounts$()).observe(this, (localAccounts) -> {
- adapter = new ManageAccountAdapter((localAccount) -> SingleAccountHelper.setCurrentAccount(getApplicationContext(), localAccount.getAccountName()), (localAccount) -> {
- LiveData<Void> deleteLiveData = db.deleteAccount(localAccount);
- deleteLiveData.observe(this, (v) -> {
- for (Account temp : localAccounts) {
- if (temp.getId() == localAccount.getId()) {
- localAccounts.remove(temp);
- break;
- }
- }
- if (localAccounts.size() > 0) {
- SingleAccountHelper.setCurrentAccount(getApplicationContext(), localAccounts.get(0).getAccountName());
- adapter.setCurrentLocalAccount(localAccounts.get(0));
- } else {
- SingleAccountHelper.setCurrentAccount(getApplicationContext(), null);
- finish();
- }
- deleteLiveData.removeObservers(this);
- });
- });
- adapter.setLocalAccounts(localAccounts);
- try {
- final SingleSignOnAccount ssoAccount = SingleAccountHelper.getCurrentSingleSignOnAccount(this);
- if (ssoAccount != null) {
- new Thread(() -> {
- final Account account = db.getAccountDao().getAccountByName(ssoAccount.name);
- runOnUiThread(() -> adapter.setCurrentLocalAccount(account));
- }).start();
- }
- } catch (NextcloudFilesAppAccountNotFoundException | NoCurrentAccountSelectedException e) {
- e.printStackTrace();
+ adapter = new ManageAccountAdapter(
+ (accountToSelect) -> viewModel.selectAccount(accountToSelect, this),
+ (accountToDelete) -> viewModel.deleteAccount(accountToDelete, this)
+ );
+
+ binding.accounts.setAdapter(adapter);
+
+ viewModel.getAccounts$().observe(this, (accounts) -> {
+ if (accounts == null || accounts.size() < 1) {
+ finish();
+ return;
}
- binding.accounts.setAdapter(adapter);
+ this.adapter.setLocalAccounts(accounts);
+ viewModel.getCurrentAccount(this, new IResponseCallback<Account>() {
+ @Override
+ public void onSuccess(Account result) {
+ runOnUiThread(() -> adapter.setCurrentLocalAccount(result));
+ }
+
+ @Override
+ public void onError(@NonNull Throwable t) {
+ runOnUiThread(() -> adapter.setCurrentLocalAccount(null));
+ t.printStackTrace();
+ }
+ });
});
}