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/exception/tips/TipsAdapter.java')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/exception/tips/TipsAdapter.java69
1 files changed, 66 insertions, 3 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/exception/tips/TipsAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/exception/tips/TipsAdapter.java
index 2bd92957..844b3bcc 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/exception/tips/TipsAdapter.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/exception/tips/TipsAdapter.java
@@ -1,6 +1,10 @@
package it.niedermann.owncloud.notes.exception.tips;
import android.content.Intent;
+import android.net.Uri;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -11,11 +15,24 @@ import androidx.annotation.StringRes;
import androidx.core.util.Consumer;
import androidx.recyclerview.widget.RecyclerView;
+import com.nextcloud.android.sso.exceptions.NextcloudApiNotRespondingException;
+import com.nextcloud.android.sso.exceptions.NextcloudFilesAppNotSupportedException;
+import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException;
+import com.nextcloud.android.sso.exceptions.TokenMismatchException;
+
+import org.json.JSONException;
+
+import java.net.ConnectException;
+import java.net.SocketTimeoutException;
import java.util.LinkedList;
import java.util.List;
+import it.niedermann.owncloud.notes.BuildConfig;
import it.niedermann.owncloud.notes.R;
+import static android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS;
+import static it.niedermann.owncloud.notes.exception.ExceptionDialogFragment.INTENT_EXTRA_BUTTON_TEXT;
+
public class TipsAdapter extends RecyclerView.Adapter<TipsViewHolder> {
@NonNull
@@ -44,12 +61,58 @@ public class TipsAdapter extends RecyclerView.Adapter<TipsViewHolder> {
return tips.size();
}
- public void add(@StringRes int text) {
+ public void setThrowables(@NonNull List<Throwable> throwables) {
+ for (Throwable t : throwables) {
+ if (t instanceof TokenMismatchException) {
+ add(R.string.error_dialog_tip_token_mismatch_retry);
+ add(R.string.error_dialog_tip_token_mismatch_clear_storage);
+ Intent intent = new Intent(ACTION_APPLICATION_DETAILS_SETTINGS)
+ .setData(Uri.parse("package:" + BuildConfig.APPLICATION_ID))
+ .putExtra(INTENT_EXTRA_BUTTON_TEXT, R.string.error_action_open_deck_info);
+ add(R.string.error_dialog_tip_clear_storage, intent);
+ add(R.string.error_dialog_tip_clear_storage);
+ } else if (t instanceof NextcloudFilesAppNotSupportedException) {
+ add(R.string.error_dialog_tip_files_outdated);
+ } else if (t instanceof NextcloudApiNotRespondingException) {
+ if (VERSION.SDK_INT >= VERSION_CODES.M) {
+ add(R.string.error_dialog_tip_disable_battery_optimizations, new Intent().setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS).putExtra(INTENT_EXTRA_BUTTON_TEXT, R.string.error_action_open_battery_settings));
+ } else {
+ add(R.string.error_dialog_tip_disable_battery_optimizations);
+ }
+ add(R.string.error_dialog_tip_files_force_stop);
+ add(R.string.error_dialog_tip_files_delete_storage);
+ } else if (t instanceof SocketTimeoutException || t instanceof ConnectException) {
+ add(R.string.error_dialog_timeout_instance);
+ add(R.string.error_dialog_timeout_toggle, new Intent(Settings.ACTION_WIFI_SETTINGS).putExtra(INTENT_EXTRA_BUTTON_TEXT, R.string.error_action_open_network));
+ } else if (t instanceof JSONException || t instanceof NullPointerException) {
+ add(R.string.error_dialog_check_server);
+ } else if (t instanceof NextcloudHttpRequestFailedException) {
+ int statusCode = ((NextcloudHttpRequestFailedException) t).getStatusCode();
+ switch (statusCode) {
+ case 302:
+ add(R.string.error_dialog_server_app_enabled);
+ add(R.string.error_dialog_redirect);
+ break;
+ case 500:
+ add(R.string.error_dialog_check_server_logs);
+ break;
+ case 503:
+ add(R.string.error_dialog_check_maintenance);
+ break;
+ case 507:
+ add(R.string.error_dialog_insufficient_storage);
+ break;
+ }
+ }
+ }
+ notifyDataSetChanged();
+ }
+
+ private void add(@StringRes int text) {
add(text, null);
}
- public void add(@StringRes int text, @Nullable Intent primaryAction) {
+ private void add(@StringRes int text, @Nullable Intent primaryAction) {
tips.add(new TipsModel(text, primaryAction));
- notifyItemInserted(tips.size());
}
} \ No newline at end of file