diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/util/BugReportKTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/util/BugReportKTest.kt index 92a56be276..da57c2e854 100644 --- a/app/src/androidTest/java/com/nononsenseapps/feeder/util/BugReportKTest.kt +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/util/BugReportKTest.kt @@ -1,54 +1,16 @@ package com.nononsenseapps.feeder.util -import android.content.Intent.ACTION_SENDTO import android.content.Intent.ACTION_VIEW -import android.content.Intent.EXTRA_EMAIL -import android.content.Intent.EXTRA_SUBJECT -import android.content.Intent.EXTRA_TEXT import android.net.Uri import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.MediumTest import org.junit.Test import org.junit.runner.RunWith import kotlin.test.assertEquals -import kotlin.test.assertTrue @RunWith(AndroidJUnit4::class) @MediumTest class BugReportKTest { - @Test - fun bugIntentIsCorrect() { - val intent = emailBugReportIntent() - - assertEquals(ACTION_SENDTO, intent.action) - assertEquals(Uri.parse("mailto:feeder@nononsenseapps.com"), intent.data) - assertEquals("Bug report for Feeder", intent.getStringExtra(EXTRA_SUBJECT)) - assertEquals("feeder@nononsenseapps.com", intent.getStringExtra(EXTRA_EMAIL)) - - assertTrue(intent.getStringExtra(EXTRA_TEXT)) { - "Application: " in intent.getStringExtra(EXTRA_TEXT)!! - } - } - - @Test - fun crashIntentIsCorrect() { - try { - @Suppress("DIVISION_BY_ZERO") - 1 / 0 - } catch (e: Exception) { - val intent = emailCrashReportIntent(e) - - assertEquals(ACTION_SENDTO, intent.action) - assertEquals(Uri.parse("mailto:crashes@nononsenseapps.com"), intent.data) - assertEquals("Crash report for Feeder", intent.getStringExtra(EXTRA_SUBJECT)) - assertEquals("crashes@nononsenseapps.com", intent.getStringExtra(EXTRA_EMAIL)) - - assertTrue(intent.getStringExtra(EXTRA_TEXT)) { - "java.lang.ArithmeticException: divide by zero" in intent.getStringExtra(EXTRA_TEXT)!! - } - } - } - @Test fun issuesIntentIsCorrect() { val intent = openGithubIssues() diff --git a/app/src/main/java/com/nononsenseapps/feeder/ui/ActivityExceptionHandler.kt b/app/src/main/java/com/nononsenseapps/feeder/ui/ActivityExceptionHandler.kt deleted file mode 100644 index 2e89f0a1ea..0000000000 --- a/app/src/main/java/com/nononsenseapps/feeder/ui/ActivityExceptionHandler.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.nononsenseapps.feeder.ui - -import android.app.Activity -import android.content.Intent -import android.util.Log -import com.nononsenseapps.feeder.BuildConfig -import com.nononsenseapps.feeder.util.emailCrashReportIntent -import kotlin.system.exitProcess - -fun Activity.installExceptionHandler() { - val mainHandler = Thread.getDefaultUncaughtExceptionHandler() - Thread.setDefaultUncaughtExceptionHandler { thread, throwable -> - try { - // On emulator I just want a crash - if (!BuildConfig.DEBUG) { - Log.w("FEEDER_PANIC", "Trying to report unhandled exception", throwable) - val intent = emailCrashReportIntent(throwable) - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - startActivity(intent) - } - } catch (e: Exception) { - e.printStackTrace() - } finally { - // Necessary to handle the error or the process will freeze - if (mainHandler != null) { - mainHandler.uncaughtException(thread, throwable) - } else { - exitProcess(1) - } - } - } -} diff --git a/app/src/main/java/com/nononsenseapps/feeder/ui/AddFeedFromShareActivity.kt b/app/src/main/java/com/nononsenseapps/feeder/ui/AddFeedFromShareActivity.kt index dc365a7014..40c873c58c 100644 --- a/app/src/main/java/com/nononsenseapps/feeder/ui/AddFeedFromShareActivity.kt +++ b/app/src/main/java/com/nononsenseapps/feeder/ui/AddFeedFromShareActivity.kt @@ -4,7 +4,6 @@ import android.app.Activity import android.content.Intent import android.os.Bundle import androidx.activity.compose.setContent -import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.core.view.WindowCompat @@ -22,12 +21,9 @@ import com.nononsenseapps.feeder.ui.compose.utils.withAllProviders * This activity should only be started via a Send (share) or Open URL/Text intent. */ class AddFeedFromShareActivity : DIAwareComponentActivity() { - @OptIn(ExperimentalAnimationApi::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - installExceptionHandler() - WindowCompat.setDecorFitsSystemWindows(window, false) val initialFeedUrl = diff --git a/app/src/main/java/com/nononsenseapps/feeder/ui/ImportOMPLFileActivity.kt b/app/src/main/java/com/nononsenseapps/feeder/ui/ImportOMPLFileActivity.kt index 20ef4db52e..1c2a8f9a5f 100644 --- a/app/src/main/java/com/nononsenseapps/feeder/ui/ImportOMPLFileActivity.kt +++ b/app/src/main/java/com/nononsenseapps/feeder/ui/ImportOMPLFileActivity.kt @@ -3,7 +3,6 @@ package com.nononsenseapps.feeder.ui import android.content.Intent import android.os.Bundle import androidx.activity.compose.setContent -import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.core.net.toUri @@ -22,12 +21,9 @@ import com.nononsenseapps.feeder.util.logDebug * This activity should only be started via a Open File Intent. */ class ImportOMPLFileActivity : DIAwareComponentActivity() { - @OptIn(ExperimentalAnimationApi::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - installExceptionHandler() - WindowCompat.setDecorFitsSystemWindows(window, false) val uri = intent.data diff --git a/app/src/main/java/com/nononsenseapps/feeder/ui/MainActivity.kt b/app/src/main/java/com/nononsenseapps/feeder/ui/MainActivity.kt index 35cb55353e..1ab6fc4304 100644 --- a/app/src/main/java/com/nononsenseapps/feeder/ui/MainActivity.kt +++ b/app/src/main/java/com/nononsenseapps/feeder/ui/MainActivity.kt @@ -4,7 +4,6 @@ import android.content.Intent import android.os.Bundle import android.util.Log import androidx.activity.compose.setContent -import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect @@ -65,8 +64,6 @@ class MainActivity : DIAwareComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - installExceptionHandler() - mainActivityViewModel.ensurePeriodicSyncConfigured() WindowCompat.setDecorFitsSystemWindows(window, false) @@ -78,7 +75,6 @@ class MainActivity : DIAwareComponentActivity() { } } - @OptIn(ExperimentalAnimationApi::class) @Composable fun AppContent() { val navController = rememberNavController() diff --git a/app/src/main/java/com/nononsenseapps/feeder/ui/ManageSettingsActivity.kt b/app/src/main/java/com/nononsenseapps/feeder/ui/ManageSettingsActivity.kt index cdf3092366..6464c7a78f 100644 --- a/app/src/main/java/com/nononsenseapps/feeder/ui/ManageSettingsActivity.kt +++ b/app/src/main/java/com/nononsenseapps/feeder/ui/ManageSettingsActivity.kt @@ -18,8 +18,6 @@ class ManageSettingsActivity : DIAwareComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - installExceptionHandler() - WindowCompat.setDecorFitsSystemWindows(window, false) setContent { diff --git a/app/src/main/java/com/nononsenseapps/feeder/ui/OpenLinkInDefaultActivity.kt b/app/src/main/java/com/nononsenseapps/feeder/ui/OpenLinkInDefaultActivity.kt index aee0620ece..8ed91904a2 100644 --- a/app/src/main/java/com/nononsenseapps/feeder/ui/OpenLinkInDefaultActivity.kt +++ b/app/src/main/java/com/nononsenseapps/feeder/ui/OpenLinkInDefaultActivity.kt @@ -28,8 +28,6 @@ class OpenLinkInDefaultActivity : DIAwareComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - installExceptionHandler() - intent?.let { intent -> val uri = intent.data diff --git a/app/src/main/java/com/nononsenseapps/feeder/util/BugReport.kt b/app/src/main/java/com/nononsenseapps/feeder/util/BugReport.kt index af5b942912..b58bf2d164 100644 --- a/app/src/main/java/com/nononsenseapps/feeder/util/BugReport.kt +++ b/app/src/main/java/com/nononsenseapps/feeder/util/BugReport.kt @@ -1,60 +1,8 @@ package com.nononsenseapps.feeder.util import android.content.Intent -import android.content.Intent.ACTION_SENDTO import android.content.Intent.ACTION_VIEW -import android.content.Intent.EXTRA_EMAIL -import android.content.Intent.EXTRA_SUBJECT import android.net.Uri -import android.os.Build -import com.nononsenseapps.feeder.BuildConfig - -private fun deviceInfoBlock(): String = - """ - Application: ${BuildConfig.APPLICATION_ID} (flavor ${BuildConfig.BUILD_TYPE.ifBlank { "None" }}) - Version: ${BuildConfig.VERSION_NAME} (code ${BuildConfig.VERSION_CODE}) - Android: ${Build.VERSION.RELEASE} (SDK ${Build.VERSION.SDK_INT}) - Device: ${Build.MANUFACTURER} ${Build.MODEL} - """.trimIndent() - -private fun bugBody(): String = - """ - ${deviceInfoBlock()} - - Hello. - - I'd like to report an issue: - """.trimIndent() - -private const val EMAIL_REPORT_ADDRESS: String = "feeder@nononsenseapps.com" - -fun emailBugReportIntent(): Intent = - Intent(ACTION_SENDTO).apply { - data = Uri.parse("mailto:$EMAIL_REPORT_ADDRESS") - putExtra(EXTRA_SUBJECT, "Bug report for Feeder") - putExtra(EXTRA_EMAIL, EMAIL_REPORT_ADDRESS) - putExtra(Intent.EXTRA_TEXT, bugBody()) - } - -private const val CRASH_REPORT_ADDRESS: String = "crashes@nononsenseapps.com" - -private fun crashBody(throwable: Throwable): String = - """ - ${deviceInfoBlock()} - - Unhandled exception: - - ${throwable.stackTraceToString()} - """.trimIndent() - -fun emailCrashReportIntent(throwable: Throwable): Intent = - Intent(ACTION_SENDTO).apply { - data = Uri.parse("mailto:$CRASH_REPORT_ADDRESS") - putExtra(EXTRA_SUBJECT, "Crash report for Feeder") - putExtra(EXTRA_EMAIL, CRASH_REPORT_ADDRESS) - putExtra(Intent.EXTRA_TEXT, crashBody(throwable)) - addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - } fun openGithubIssues(): Intent = Intent(ACTION_VIEW).also {