diff --git a/app/build.gradle b/app/build.gradle
index 9da64dd2..3e0b8d44 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -142,6 +142,8 @@ dependencies {
}
implementation 'org.jsoup:jsoup:1.18.1'
+ implementation 'cat.ereza:customactivityoncrash:2.4.0'
+
testImplementation "junit:junit:4.13.2"
testImplementation "androidx.test:core:1.6.1"
testImplementation "androidx.test:core-ktx:1.6.1"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a32118ef..e06280f2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -97,6 +97,16 @@
android:exported="false">
+
+
+
+
+
+
- val intent =
- when (which) {
- 0 -> {
- val app = requireContext().applicationContext as Application
- val logs = Operations.getLastExceptionLog(app)
- Intent(
- Intent.ACTION_VIEW,
- Uri.parse(
- "https://github.com/PhilKes/NotallyX/issues/new?labels=bug&projects=&template=bug_report.yml${logs?.let { "&logs=$it" } ?: ""}"
- .take(2000)
- ),
+ when (which) {
+ 0 -> {
+ val app = requireContext().applicationContext as Application
+ val logs = Operations.getLastExceptionLog(app)
+ reportBug(logs)
+ }
+ else ->
+ requireContext().catchNoBrowserInstalled {
+ startActivity(
+ Intent(
+ Intent.ACTION_VIEW,
+ Uri.parse(
+ "https://github.com/PhilKes/NotallyX/issues/new?labels=enhancement&template=feature_request.md"
+ ),
+ )
)
}
- else ->
- Intent(
- Intent.ACTION_VIEW,
- Uri.parse(
- "https://github.com/PhilKes/NotallyX/issues/new?labels=enhancement&template=feature_request.md"
- ),
- )
- }
- try {
- startActivity(intent)
- } catch (exception: ActivityNotFoundException) {
- Toast.makeText(requireContext(), R.string.install_a_browser, Toast.LENGTH_LONG)
- .show()
}
}
.setNegativeButton(R.string.cancel, null)
diff --git a/app/src/main/java/com/philkes/notallyx/utils/ErrorActivity.kt b/app/src/main/java/com/philkes/notallyx/utils/ErrorActivity.kt
new file mode 100644
index 00000000..0ced9729
--- /dev/null
+++ b/app/src/main/java/com/philkes/notallyx/utils/ErrorActivity.kt
@@ -0,0 +1,59 @@
+package com.philkes.notallyx.utils
+
+import android.os.Bundle
+import android.widget.Button
+import android.widget.ImageView
+import androidx.appcompat.app.AppCompatActivity
+import cat.ereza.customactivityoncrash.CustomActivityOnCrash
+import com.philkes.notallyx.R
+import com.philkes.notallyx.presentation.dp
+import com.philkes.notallyx.utils.Operations.reportBug
+
+/**
+ * Activity used when the app is about to crash. Implicitly used by cat.ereza:customactivityoncrash.
+ */
+class ErrorActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(
+ cat.ereza.customactivityoncrash.R.layout.customactivityoncrash_default_error_activity
+ )
+ findViewById(
+ cat.ereza.customactivityoncrash.R.id.customactivityoncrash_error_activity_image
+ )
+ .apply {
+ minimumWidth = 100.dp(this@ErrorActivity)
+ minimumHeight = 100.dp(this@ErrorActivity)
+ setImageResource(R.drawable.error)
+ }
+ findViewById