Loading app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java +19 −12 Original line number Diff line number Diff line Loading @@ -7,7 +7,6 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.LiveData; import androidx.lifecycle.ViewModelProvider; import com.nextcloud.android.sso.AccountImporter; Loading @@ -27,6 +26,7 @@ import it.niedermann.owncloud.notes.persistence.CapabilitiesClient; import it.niedermann.owncloud.notes.persistence.SSOClient; import it.niedermann.owncloud.notes.persistence.entity.Account; import it.niedermann.owncloud.notes.shared.model.Capabilities; import it.niedermann.owncloud.notes.shared.model.IResponseCallback; public class ImportAccountActivity extends AppCompatActivity { Loading Loading @@ -85,18 +85,25 @@ public class ImportAccountActivity extends AppCompatActivity { try { Log.i(TAG, "Loading capabilities for " + ssoAccount.name); final Capabilities capabilities = CapabilitiesClient.getCapabilities(getApplicationContext(), ssoAccount, null); LiveData<Account> createLiveData = importAccountViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities); runOnUiThread(() -> createLiveData.observe(this, (account) -> { if (account != null) { importAccountViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities, new IResponseCallback<Account>() { @Override public void onSuccess(Account account) { runOnUiThread(() -> { Log.i(TAG, capabilities.toString()); BrandingUtil.saveBrandColors(this, capabilities.getColor(), capabilities.getTextColor()); BrandingUtil.saveBrandColors(ImportAccountActivity.this, capabilities.getColor(), capabilities.getTextColor()); setResult(RESULT_OK); finish(); } else { }); } @Override public void onError(@NonNull Throwable t) { runOnUiThread(() -> { binding.addButton.setEnabled(true); ExceptionDialogFragment.newInstance(new IllegalStateException("Created account is null.")).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()); ExceptionDialogFragment.newInstance(t).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()); }); } })); }); } catch (Throwable e) { e.printStackTrace(); SSOClient.invalidateAPICache(ssoAccount); Loading app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountViewModel.java +3 −2 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ import androidx.lifecycle.LiveData; import it.niedermann.owncloud.notes.persistence.NotesRepository; import it.niedermann.owncloud.notes.persistence.entity.Account; import it.niedermann.owncloud.notes.shared.model.Capabilities; import it.niedermann.owncloud.notes.shared.model.IResponseCallback; public class ImportAccountViewModel extends AndroidViewModel { Loading @@ -22,7 +23,7 @@ public class ImportAccountViewModel extends AndroidViewModel { this.repo = NotesRepository.getInstance(application); } public LiveData<Account> addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities) { return repo.addAccount(url, username, accountName, capabilities); public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @NonNull IResponseCallback<Account> callback) { repo.addAccount(url, username, accountName, capabilities, callback); } } app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java +15 −9 Original line number Diff line number Diff line Loading @@ -633,15 +633,21 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A try { Log.i(TAG, "Refreshing capabilities for " + ssoAccount.name); final Capabilities capabilities = CapabilitiesClient.getCapabilities(getApplicationContext(), ssoAccount, null); LiveData<Account> createLiveData = mainViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities); runOnUiThread(() -> createLiveData.observe(this, (account) -> { createLiveData.removeObservers(this); mainViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities, new IResponseCallback<Account>() { @Override public void onSuccess(Account result) { new Thread(() -> { Log.i(TAG, capabilities.toString()); final Account a = mainViewModel.getLocalAccountByAccountName(ssoAccount.name); runOnUiThread(() -> mainViewModel.postCurrentAccount(a)); }).start(); })); } @Override public void onError(@NonNull Throwable t) { runOnUiThread(() -> ExceptionDialogFragment.newInstance(t).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName())); } }); } catch (Exception e) { SSOClient.invalidateAPICache(ssoAccount); // Happens when importing an already existing account the second time Loading app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java +2 −2 Original line number Diff line number Diff line Loading @@ -526,8 +526,8 @@ public class MainViewModel extends AndroidViewModel { }); } public LiveData<Account> addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities) { return repo.addAccount(url, username, accountName, capabilities); public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @NonNull IResponseCallback<Account> callback) { repo.addAccount(url, username, accountName, capabilities, callback); } public LiveData<Note> getFullNote$(long id) { Loading app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java +8 −2 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import it.niedermann.owncloud.notes.shared.model.Capabilities; import it.niedermann.owncloud.notes.shared.model.CategorySortingMethod; import it.niedermann.owncloud.notes.shared.model.DBStatus; import it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType; import it.niedermann.owncloud.notes.shared.model.IResponseCallback; import it.niedermann.owncloud.notes.shared.model.ISyncCallback; import it.niedermann.owncloud.notes.shared.model.NavigationCategory; import it.niedermann.owncloud.notes.shared.model.SyncResultStatus; Loading Loading @@ -160,8 +161,13 @@ public class NotesRepository { // Accounts @AnyThread public LiveData<Account> addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities) { return db.getAccountDao().getAccountById$(db.getAccountDao().insert(new Account(url, username, accountName, capabilities))); public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @NonNull IResponseCallback<Account> callback) { final Account createdAccount = db.getAccountDao().getAccountById(db.getAccountDao().insert(new Account(url, username, accountName, capabilities))); if(createdAccount == null) { callback.onError(new Exception("Could not read created account.")); } else { callback.onSuccess(createdAccount); } } @WorkerThread Loading Loading
app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java +19 −12 Original line number Diff line number Diff line Loading @@ -7,7 +7,6 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.LiveData; import androidx.lifecycle.ViewModelProvider; import com.nextcloud.android.sso.AccountImporter; Loading @@ -27,6 +26,7 @@ import it.niedermann.owncloud.notes.persistence.CapabilitiesClient; import it.niedermann.owncloud.notes.persistence.SSOClient; import it.niedermann.owncloud.notes.persistence.entity.Account; import it.niedermann.owncloud.notes.shared.model.Capabilities; import it.niedermann.owncloud.notes.shared.model.IResponseCallback; public class ImportAccountActivity extends AppCompatActivity { Loading Loading @@ -85,18 +85,25 @@ public class ImportAccountActivity extends AppCompatActivity { try { Log.i(TAG, "Loading capabilities for " + ssoAccount.name); final Capabilities capabilities = CapabilitiesClient.getCapabilities(getApplicationContext(), ssoAccount, null); LiveData<Account> createLiveData = importAccountViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities); runOnUiThread(() -> createLiveData.observe(this, (account) -> { if (account != null) { importAccountViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities, new IResponseCallback<Account>() { @Override public void onSuccess(Account account) { runOnUiThread(() -> { Log.i(TAG, capabilities.toString()); BrandingUtil.saveBrandColors(this, capabilities.getColor(), capabilities.getTextColor()); BrandingUtil.saveBrandColors(ImportAccountActivity.this, capabilities.getColor(), capabilities.getTextColor()); setResult(RESULT_OK); finish(); } else { }); } @Override public void onError(@NonNull Throwable t) { runOnUiThread(() -> { binding.addButton.setEnabled(true); ExceptionDialogFragment.newInstance(new IllegalStateException("Created account is null.")).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()); ExceptionDialogFragment.newInstance(t).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()); }); } })); }); } catch (Throwable e) { e.printStackTrace(); SSOClient.invalidateAPICache(ssoAccount); Loading
app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountViewModel.java +3 −2 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ import androidx.lifecycle.LiveData; import it.niedermann.owncloud.notes.persistence.NotesRepository; import it.niedermann.owncloud.notes.persistence.entity.Account; import it.niedermann.owncloud.notes.shared.model.Capabilities; import it.niedermann.owncloud.notes.shared.model.IResponseCallback; public class ImportAccountViewModel extends AndroidViewModel { Loading @@ -22,7 +23,7 @@ public class ImportAccountViewModel extends AndroidViewModel { this.repo = NotesRepository.getInstance(application); } public LiveData<Account> addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities) { return repo.addAccount(url, username, accountName, capabilities); public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @NonNull IResponseCallback<Account> callback) { repo.addAccount(url, username, accountName, capabilities, callback); } }
app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java +15 −9 Original line number Diff line number Diff line Loading @@ -633,15 +633,21 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A try { Log.i(TAG, "Refreshing capabilities for " + ssoAccount.name); final Capabilities capabilities = CapabilitiesClient.getCapabilities(getApplicationContext(), ssoAccount, null); LiveData<Account> createLiveData = mainViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities); runOnUiThread(() -> createLiveData.observe(this, (account) -> { createLiveData.removeObservers(this); mainViewModel.addAccount(ssoAccount.url, ssoAccount.userId, ssoAccount.name, capabilities, new IResponseCallback<Account>() { @Override public void onSuccess(Account result) { new Thread(() -> { Log.i(TAG, capabilities.toString()); final Account a = mainViewModel.getLocalAccountByAccountName(ssoAccount.name); runOnUiThread(() -> mainViewModel.postCurrentAccount(a)); }).start(); })); } @Override public void onError(@NonNull Throwable t) { runOnUiThread(() -> ExceptionDialogFragment.newInstance(t).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName())); } }); } catch (Exception e) { SSOClient.invalidateAPICache(ssoAccount); // Happens when importing an already existing account the second time Loading
app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java +2 −2 Original line number Diff line number Diff line Loading @@ -526,8 +526,8 @@ public class MainViewModel extends AndroidViewModel { }); } public LiveData<Account> addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities) { return repo.addAccount(url, username, accountName, capabilities); public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @NonNull IResponseCallback<Account> callback) { repo.addAccount(url, username, accountName, capabilities, callback); } public LiveData<Note> getFullNote$(long id) { Loading
app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesRepository.java +8 −2 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import it.niedermann.owncloud.notes.shared.model.Capabilities; import it.niedermann.owncloud.notes.shared.model.CategorySortingMethod; import it.niedermann.owncloud.notes.shared.model.DBStatus; import it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType; import it.niedermann.owncloud.notes.shared.model.IResponseCallback; import it.niedermann.owncloud.notes.shared.model.ISyncCallback; import it.niedermann.owncloud.notes.shared.model.NavigationCategory; import it.niedermann.owncloud.notes.shared.model.SyncResultStatus; Loading Loading @@ -160,8 +161,13 @@ public class NotesRepository { // Accounts @AnyThread public LiveData<Account> addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities) { return db.getAccountDao().getAccountById$(db.getAccountDao().insert(new Account(url, username, accountName, capabilities))); public void addAccount(@NonNull String url, @NonNull String username, @NonNull String accountName, @NonNull Capabilities capabilities, @NonNull IResponseCallback<Account> callback) { final Account createdAccount = db.getAccountDao().getAccountById(db.getAccountDao().insert(new Account(url, username, accountName, capabilities))); if(createdAccount == null) { callback.onError(new Exception("Could not read created account.")); } else { callback.onSuccess(createdAccount); } } @WorkerThread Loading