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
path: root/app
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-04-25 15:13:06 +0300
committerStefan Niedermann <info@niedermann.it>2021-04-25 15:13:06 +0300
commit71010248cdd0941d9a68ab94874d96cc23941d62 (patch)
treefa189e3ab0b5d0a761c6f75253c55c25675098ea /app
parentac114f21c6ed0df62425b578c1b2a744927b7576 (diff)
- #1014 Handle offline state when adding accounts (First time import)
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/importaccount/ImportAccountActivity.java27
-rw-r--r--app/src/main/res/layout/activity_import_account.xml13
-rw-r--r--app/src/main/res/values/strings.xml4
3 files changed, 35 insertions, 9 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
diff --git a/app/src/main/res/layout/activity_import_account.xml b/app/src/main/res/layout/activity_import_account.xml
index 4ad83f02..ed072796 100644
--- a/app/src/main/res/layout/activity_import_account.xml
+++ b/app/src/main/res/layout/activity_import_account.xml
@@ -50,6 +50,19 @@
android:text="@string/choose_account"
app:backgroundTint="@color/defaultBrand" />
+ <TextView
+ android:id="@+id/status"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/add_button"
+ android:layout_centerHorizontal="true"
+ android:layout_marginTop="32dp"
+ android:gravity="center_horizontal"
+ android:textAlignment="center"
+ android:textColor="@color/fg_secondary"
+ android:textSize="18sp"
+ tools:text="@string/you_have_to_be_connected_to_the_internet_in_order_to_add_an_account" />
+
<ProgressBar
android:id="@+id/progress_circular"
android:layout_width="wrap_content"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 957c00e0..30779de1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -299,11 +299,11 @@
<string name="no_other_accounts">You don\'t have configured any other accounts yet.</string>
<string name="choose_account">Choose account</string>
<string name="context_based_formatting">Context based formatting popover</string>
-
-
<plurals name="remove_account_message">
<item quantity="one">Removing the account %1$s will also delete one unsynchronized change irrecoverable.</item>
<item quantity="other">Removing the account %1$s will also delete %2$d unsynchronized changes irrecoverable.</item>
</plurals>
<string name="remove_account">Remove %1$s</string>
+
+ <string name="you_have_to_be_connected_to_the_internet_in_order_to_add_an_account">You have to be connected to the internet in order to add an account.</string>
</resources>