diff --git a/app/build.gradle b/app/build.gradle
index bb67f50e5..43243690e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -28,6 +28,8 @@ android {
// define this values in your local.properties file
buildConfigField 'String', 'SHIKIMORI_CLIENT_ID', "\"${localProperty('shikimori.clientId')}\""
buildConfigField 'String', 'SHIKIMORI_CLIENT_SECRET', "\"${localProperty('shikimori.clientSecret')}\""
+ resValue "string", "acra_login", "${localProperty('acra.login')}"
+ resValue "string", "acra_password", "${localProperty('acra.password')}"
}
buildTypes {
debug {
@@ -119,7 +121,7 @@ dependencies {
implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0'
implementation 'com.github.solkin:disk-lru-cache:1.4'
- implementation 'ch.acra:acra-mail:5.9.6'
+ implementation 'ch.acra:acra-http:5.9.6'
implementation 'ch.acra:acra-dialog:5.9.6'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
diff --git a/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt b/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt
index 23b3df2c6..3a207e19f 100644
--- a/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt
+++ b/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt
@@ -8,9 +8,10 @@ import androidx.fragment.app.strictmode.FragmentStrictMode
import androidx.room.InvalidationTracker
import org.acra.ReportField
import org.acra.config.dialog
-import org.acra.config.mailSender
+import org.acra.config.httpSender
import org.acra.data.StringFormat
import org.acra.ktx.initAcra
+import org.acra.sender.HttpSender
import org.koin.android.ext.android.get
import org.koin.android.ext.android.getKoin
import org.koin.android.ext.koin.androidContext
@@ -73,7 +74,7 @@ class KotatsuApp : Application() {
appWidgetModule,
suggestionsModule,
shikimoriModule,
- bookmarksModule
+ bookmarksModule,
)
}
}
@@ -82,16 +83,25 @@ class KotatsuApp : Application() {
super.attachBaseContext(base)
initAcra {
buildConfigClass = BuildConfig::class.java
- reportFormat = StringFormat.KEY_VALUE_LIST
+ reportFormat = StringFormat.JSON
+ excludeMatchingSharedPreferencesKeys = listOf(
+ "sources_\\w+",
+ )
+ httpSender {
+ uri = getString(R.string.url_error_report)
+ basicAuthLogin = getString(R.string.acra_login)
+ basicAuthPassword = getString(R.string.acra_password)
+ httpMethod = HttpSender.Method.POST
+ }
reportContent = listOf(
ReportField.PACKAGE_NAME,
ReportField.APP_VERSION_CODE,
ReportField.APP_VERSION_NAME,
ReportField.ANDROID_VERSION,
ReportField.PHONE_MODEL,
- ReportField.CRASH_CONFIGURATION,
ReportField.STACK_TRACE,
- ReportField.SHARED_PREFERENCES
+ ReportField.CRASH_CONFIGURATION,
+ ReportField.SHARED_PREFERENCES,
)
dialog {
text = getString(R.string.crash_text)
@@ -100,11 +110,6 @@ class KotatsuApp : Application() {
resIcon = R.drawable.ic_alert_outline
resTheme = android.R.style.Theme_Material_Light_Dialog_Alert
}
- mailSender {
- mailTo = getString(R.string.email_error_report)
- reportAsFile = true
- reportFileName = "stacktrace.txt"
- }
}
}
@@ -129,7 +134,7 @@ class KotatsuApp : Application() {
StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
- .build()
+ .build(),
)
StrictMode.setVmPolicy(
StrictMode.VmPolicy.Builder()
@@ -138,7 +143,7 @@ class KotatsuApp : Application() {
.setClassInstanceLimit(PagesCache::class.java, 1)
.setClassInstanceLimit(MangaLoaderContext::class.java, 1)
.penaltyLog()
- .build()
+ .build(),
)
FragmentStrictMode.defaultPolicy = FragmentStrictMode.Policy.Builder()
.penaltyDeath()
diff --git a/app/src/main/res/values/constants.xml b/app/src/main/res/values/constants.xml
index 2691718af..097e800e7 100644
--- a/app/src/main/res/values/constants.xml
+++ b/app/src/main/res/values/constants.xml
@@ -6,7 +6,7 @@
https://twitter.com/kotatsuapp
https://reddit.com/user/kotatsuapp
https://hosted.weblate.org/engage/kotatsu
- kotatsu@waifu.club
+ https://acra.rumblur.space/report
- -1
- 1