diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-10-13 12:52:34 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-10-13 12:52:34 +0300 |
commit | 2a5894292563066ce25e15f4962c5e1acef1983f (patch) | |
tree | 3e94dfdc1e31e75ac870fc1d1aceaffa8539fd39 /app/src/main | |
parent | 830c1cf265240c97c3d03ff206b83732568ed26c (diff) |
Use ExceptionUtil from nextcloud-commons library
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main')
7 files changed, 36 insertions, 110 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/ImportAccountActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/ImportAccountActivity.java index 854b99a6a..957743919 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/ImportAccountActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/ImportAccountActivity.java @@ -23,6 +23,7 @@ import com.nextcloud.android.sso.exceptions.AndroidGetAccountsPermissionNotGrant import com.nextcloud.android.sso.exceptions.NextcloudFilesAppNotInstalledException; import com.nextcloud.android.sso.helper.SingleAccountHelper; import com.nextcloud.android.sso.model.SingleSignOnAccount; +import com.nextcloud.android.sso.ui.UiExceptionManager; import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.R; @@ -36,7 +37,6 @@ import it.niedermann.nextcloud.deck.persistence.sync.SyncWorker; import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.WrappedLiveData; import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment; import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler; -import it.niedermann.nextcloud.deck.util.ExceptionUtil; import static com.nextcloud.android.sso.AccountImporter.REQUEST_AUTH_TOKEN_SSO; @@ -79,7 +79,10 @@ public class ImportAccountActivity extends AppCompatActivity { try { AccountImporter.pickNewAccount(this); } catch (NextcloudFilesAppNotInstalledException e) { - ExceptionUtil.handleNextcloudFilesAppNotInstalledException(this, e); + UiExceptionManager.showDialogForException(this, e); + DeckLog.warn("============================================================="); + DeckLog.warn("Nextcloud app is not installed. Cannot choose account"); + DeckLog.logError(e); } catch (AndroidGetAccountsPermissionNotGranted e) { binding.addButton.setEnabled(true); AccountImporter.requestAndroidAccountPermissionsAndPickAccount(this); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java index b685b18be..1a3e88b4a 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java @@ -16,14 +16,15 @@ import com.bumptech.glide.request.RequestOptions; import com.nextcloud.android.sso.AccountImporter; import com.nextcloud.android.sso.exceptions.AndroidGetAccountsPermissionNotGranted; import com.nextcloud.android.sso.exceptions.NextcloudFilesAppNotInstalledException; +import com.nextcloud.android.sso.ui.UiExceptionManager; +import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.databinding.DialogAccountSwitcherBinding; import it.niedermann.nextcloud.deck.persistence.sync.SyncManager; import it.niedermann.nextcloud.deck.ui.MainViewModel; import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment; import it.niedermann.nextcloud.deck.ui.manageaccounts.ManageAccountsActivity; -import it.niedermann.nextcloud.deck.util.ExceptionUtil; import static it.niedermann.android.util.DimensionUtil.dpToPx; import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce; @@ -76,7 +77,10 @@ public class AccountSwitcherDialog extends BrandedDialogFragment { try { AccountImporter.pickNewAccount(requireActivity()); } catch (NextcloudFilesAppNotInstalledException e) { - ExceptionUtil.handleNextcloudFilesAppNotInstalledException(requireContext(), e); + UiExceptionManager.showDialogForException(requireContext(), e); + DeckLog.warn("============================================================="); + DeckLog.warn("Nextcloud app is not installed. Cannot choose account"); + DeckLog.logError(e); } catch (AndroidGetAccountsPermissionNotGranted e) { AccountImporter.requestAndroidAccountPermissionsAndPickAccount(requireActivity()); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionActivity.java index 9bdbbb7be..95430eef9 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionActivity.java @@ -8,11 +8,10 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; -import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.databinding.ActivityExceptionBinding; import it.niedermann.nextcloud.deck.ui.exception.tips.TipsAdapter; -import it.niedermann.nextcloud.deck.util.ExceptionUtil; +import it.niedermann.nextcloud.exception.ExceptionUtil; import static it.niedermann.android.util.ClipboardUtil.copyToClipboard; @@ -22,9 +21,12 @@ public class ExceptionActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + final ActivityExceptionBinding binding = ActivityExceptionBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); - super.onCreate(savedInstanceState); + setSupportActionBar(binding.toolbar); Throwable throwable = ((Throwable) getIntent().getSerializableExtra(KEY_THROWABLE)); @@ -32,23 +34,18 @@ public class ExceptionActivity extends AppCompatActivity { throwable = new Exception("Could not get exception"); } - DeckLog.logError(throwable); + final TipsAdapter adapter = new TipsAdapter(this::startActivity); + final String debugInfo = "Full Crash:\n\n" + ExceptionUtil.getDebugInfos(this, throwable); - setSupportActionBar(binding.toolbar); + binding.tips.setAdapter(adapter); + binding.tips.setNestedScrollingEnabled(false); binding.toolbar.setTitle(R.string.error); binding.message.setText(throwable.getMessage()); - - final String debugInfo = "Full Crash:\n\n" + ExceptionUtil.getDebugInfos(this, throwable, null); - binding.stacktrace.setText(debugInfo); - - final TipsAdapter adapter = new TipsAdapter(this::startActivity); - binding.tips.setAdapter(adapter); - binding.tips.setNestedScrollingEnabled(false); - adapter.setThrowable(this, null, throwable); - binding.copy.setOnClickListener((v) -> copyToClipboard(this, getString(R.string.simple_exception), "```\n" + debugInfo + "\n```")); binding.close.setOnClickListener((v) -> finish()); + + adapter.setThrowable(this, null, throwable); } @NonNull diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionDialogFragment.java index 4b64dae06..1ee50e30b 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionDialogFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionDialogFragment.java @@ -16,7 +16,7 @@ import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.databinding.DialogExceptionBinding; import it.niedermann.nextcloud.deck.model.Account; import it.niedermann.nextcloud.deck.ui.exception.tips.TipsAdapter; -import it.niedermann.nextcloud.deck.util.ExceptionUtil; +import it.niedermann.nextcloud.exception.ExceptionUtil; import static it.niedermann.android.util.ClipboardUtil.copyToClipboard; @@ -52,7 +52,7 @@ public class ExceptionDialogFragment extends AppCompatDialogFragment { final TipsAdapter adapter = new TipsAdapter((actionIntent) -> requireActivity().startActivity(actionIntent)); - final String debugInfos = ExceptionUtil.getDebugInfos(requireContext(), throwable, account); + final String debugInfos = ExceptionUtil.getDebugInfos(requireContext(), throwable, account == null ? null : account.getServerDeckVersion()); binding.tips.setAdapter(adapter); binding.stacktrace.setText(debugInfos); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionHandler.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionHandler.java index 53c99d52c..c62b23e51 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionHandler.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionHandler.java @@ -4,19 +4,22 @@ import android.app.Activity; import androidx.annotation.NonNull; +import it.niedermann.nextcloud.deck.DeckLog; + public class ExceptionHandler implements Thread.UncaughtExceptionHandler { - private Activity context; + @NonNull + private final Activity activity; - public ExceptionHandler(Activity context) { - super(); - this.context = context; + public ExceptionHandler(@NonNull Activity activity) { + this.activity = activity; } @Override - public void uncaughtException(@NonNull Thread t, Throwable e) { - context.getApplicationContext().startActivity(ExceptionActivity.createIntent(context, e)); - context.finish(); + public void uncaughtException(@NonNull Thread t, @NonNull Throwable e) { + DeckLog.logError(e); + activity.getApplicationContext().startActivity(ExceptionActivity.createIntent(activity, e)); + activity.finish(); Runtime.getRuntime().exit(0); } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareProgressDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareProgressDialogFragment.java index 271b60489..622b02d4d 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareProgressDialogFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareProgressDialogFragment.java @@ -22,7 +22,7 @@ import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment; import static android.graphics.PorterDuff.Mode; import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme; -import static it.niedermann.nextcloud.deck.util.ExceptionUtil.getDebugInfos; +import static it.niedermann.nextcloud.exception.ExceptionUtil.getDebugInfos; public class ShareProgressDialogFragment extends BrandedDialogFragment { @@ -70,7 +70,7 @@ public class ShareProgressDialogFragment extends BrandedDialogFragment { binding.errorReportButton.setOnClickListener((v) -> { final StringBuilder debugInfos = new StringBuilder(exceptionsCount + " attachments failed to upload:"); for (Throwable t : exceptions) { - debugInfos.append(getDebugInfos(requireContext(), t, null)); + debugInfos.append(getDebugInfos(requireContext(), t)); } ExceptionDialogFragment.newInstance(new UploadAttachmentFailedException(debugInfos.toString()), null) .show(getChildFragmentManager(), ExceptionDialogFragment.class.getSimpleName()); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/ExceptionUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/ExceptionUtil.java deleted file mode 100644 index 8599f0b6d..000000000 --- a/app/src/main/java/it/niedermann/nextcloud/deck/util/ExceptionUtil.java +++ /dev/null @@ -1,81 +0,0 @@ -package it.niedermann.nextcloud.deck.util; - -import android.content.Context; -import android.content.pm.PackageManager; -import android.os.Build; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.UiThread; - -import com.nextcloud.android.sso.exceptions.NextcloudFilesAppNotInstalledException; -import com.nextcloud.android.sso.helper.VersionCheckHelper; -import com.nextcloud.android.sso.ui.UiExceptionManager; - -import java.io.PrintWriter; -import java.io.StringWriter; - -import it.niedermann.nextcloud.deck.BuildConfig; -import it.niedermann.nextcloud.deck.DeckLog; -import it.niedermann.nextcloud.deck.model.Account; - -public class ExceptionUtil { - - private ExceptionUtil() { - - } - - public static String getDebugInfos(@NonNull Context context, Throwable throwable, @Nullable Account account) { - return "" + - getAppVersions(context, account) + - "\n\n---\n" + - getDeviceInfos() + - "\n\n---" + - "\n\n" + - getStacktraceOf(throwable); - } - - private static String getAppVersions(Context context, @Nullable Account account) { - String versions = "" - + "App Version: " + BuildConfig.VERSION_NAME + "\n" - + "App Version Code: " + BuildConfig.VERSION_CODE + "\n" - + "App Flavor: " + BuildConfig.FLAVOR + "\n"; - - if (account != null) { - versions += "\n"; - versions += "Deck Server Version: " + account.getServerDeckVersion() + "\n"; - } - - versions += "\n"; - try { - versions += "Files App Version Code: " + VersionCheckHelper.getNextcloudFilesVersionCode(context); - } catch (PackageManager.NameNotFoundException e) { - versions += "Files App Version Code: " + e.getMessage(); - e.printStackTrace(); - } - return versions; - } - - private static String getDeviceInfos() { - return "" - + "\nOS Version: " + System.getProperty("os.version") + "(" + Build.VERSION.INCREMENTAL + ")" - + "\nOS API Level: " + Build.VERSION.SDK_INT - + "\nDevice: " + Build.DEVICE - + "\nManufacturer: " + Build.MANUFACTURER - + "\nModel (and Product): " + Build.MODEL + " (" + Build.PRODUCT + ")"; - } - - private static String getStacktraceOf(Throwable e) { - StringWriter sw = new StringWriter(); - e.printStackTrace(new PrintWriter(sw)); - return sw.toString(); - } - - @UiThread - public static void handleNextcloudFilesAppNotInstalledException(@NonNull Context context, @NonNull NextcloudFilesAppNotInstalledException exception) { - UiExceptionManager.showDialogForException(context, exception); - DeckLog.warn("============================================================="); - DeckLog.warn("Nextcloud app is not installed. Cannot choose account"); - exception.printStackTrace(); - } -} |