diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-04-25 15:13:06 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-04-25 15:13:06 +0300 |
commit | 71010248cdd0941d9a68ab94874d96cc23941d62 (patch) | |
tree | fa189e3ab0b5d0a761c6f75253c55c25675098ea /app/src/main/java/it/niedermann | |
parent | ac114f21c6ed0df62425b578c1b2a744927b7576 (diff) |
- #1014 Handle offline state when adding accounts (First time import)
Diffstat (limited to 'app/src/main/java/it/niedermann')
-rw-r--r-- | app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java index 2695f08a..e996da53 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java @@ -1,16 +1,12 @@ package it.niedermann.owncloud.notes.importaccount; import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.View; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.core.graphics.drawable.DrawableCompat; import androidx.lifecycle.LiveData; import androidx.lifecycle.ViewModelProvider; @@ -18,6 +14,7 @@ import com.nextcloud.android.sso.AccountImporter; import com.nextcloud.android.sso.exceptions.AccountImportCancelledException; import com.nextcloud.android.sso.exceptions.AndroidGetAccountsPermissionNotGranted; import com.nextcloud.android.sso.exceptions.NextcloudFilesAppNotInstalledException; +import com.nextcloud.android.sso.exceptions.UnknownErrorException; import com.nextcloud.android.sso.helper.SingleAccountHelper; import com.nextcloud.android.sso.ui.UiExceptionManager; @@ -27,6 +24,7 @@ import it.niedermann.owncloud.notes.databinding.ActivityImportAccountBinding; import it.niedermann.owncloud.notes.exception.ExceptionDialogFragment; import it.niedermann.owncloud.notes.exception.ExceptionHandler; 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; @@ -52,6 +50,7 @@ public class ImportAccountActivity extends AppCompatActivity { binding.welcomeText.setText(getString(R.string.welcome_text, getString(R.string.app_name))); binding.addButton.setOnClickListener((v) -> { binding.addButton.setEnabled(false); + binding.status.setVisibility(View.GONE); try { AccountImporter.pickNewAccount(this); } catch (NextcloudFilesAppNotInstalledException e) { @@ -100,15 +99,22 @@ public class ImportAccountActivity extends AppCompatActivity { })); } catch (Throwable e) { e.printStackTrace(); + SSOClient.invalidateAPICache(ssoAccount); + SingleAccountHelper.setCurrentAccount(this, null); runOnUiThread(() -> { - binding.addButton.setEnabled(true); - ExceptionDialogFragment.newInstance(e).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()); + restoreCleanState(); + if (e instanceof UnknownErrorException && e.getMessage().contains("No address associated with hostname")) { + binding.status.setText(R.string.you_have_to_be_connected_to_the_internet_in_order_to_add_an_account); + binding.status.setVisibility(View.VISIBLE); + } else { + ExceptionDialogFragment.newInstance(e).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()); + } }); } }).start(); }); } catch (AccountImportCancelledException e) { - runOnUiThread(() -> binding.addButton.setEnabled(true)); + restoreCleanState(); Log.i(TAG, "Account import has been canceled."); } } @@ -118,4 +124,11 @@ public class ImportAccountActivity extends AppCompatActivity { super.onRequestPermissionsResult(requestCode, permissions, grantResults); AccountImporter.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } + + private void restoreCleanState() { + runOnUiThread(() -> { + binding.addButton.setEnabled(true); + binding.progressCircular.setVisibility(View.GONE); + }); + } }
\ No newline at end of file |