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