Răsfoiți Sursa

Defer ACRA reporting until device is idle/not low battery/on unmetered network

arkon 1 an în urmă
părinte
comite
ec478cbb1b

+ 1 - 1
app/build.gradle.kts

@@ -246,7 +246,7 @@ dependencies {
     implementation(libs.logcat)
 
     // Crash reports/analytics
-    implementation(libs.acra.http)
+    implementation(libs.bundles.acra)
     "standardImplementation"(libs.firebase.analytics)
 
     // Shizuku

+ 12 - 1
app/src/main/java/eu/kanade/tachiyomi/App.kt

@@ -3,6 +3,7 @@ package eu.kanade.tachiyomi
 import android.annotation.SuppressLint
 import android.app.Application
 import android.app.PendingIntent
+import android.app.job.JobInfo
 import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
@@ -51,10 +52,12 @@ import logcat.AndroidLogcatLogger
 import logcat.LogPriority
 import logcat.LogcatLogger
 import org.acra.config.httpSender
+import org.acra.config.scheduler
 import org.acra.ktx.initAcra
 import org.acra.sender.HttpSender
 import org.conscrypt.Conscrypt
 import tachiyomi.core.i18n.stringResource
+import tachiyomi.core.preference.Preference
 import tachiyomi.core.util.system.logcat
 import tachiyomi.i18n.MR
 import tachiyomi.presentation.widget.WidgetManager
@@ -199,12 +202,20 @@ class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
         if (isPreviewBuildType || isReleaseBuildType) {
             initAcra {
                 buildConfigClass = BuildConfig::class.java
-                excludeMatchingSharedPreferencesKeys = listOf(".*username.*", ".*password.*", ".*token.*")
+                excludeMatchingSharedPreferencesKeys = listOf(
+                    Preference.privateKey(".*"), ".*username.*", ".*password.*", ".*token.*",
+                )
 
                 httpSender {
                     uri = BuildConfig.ACRA_URI
                     httpMethod = HttpSender.Method.PUT
                 }
+
+                scheduler {
+                    requiresBatteryNotLow = true
+                    requiresDeviceIdle = true
+                    requiresNetworkType = JobInfo.NETWORK_TYPE_UNMETERED
+                }
             }
         }
     }

+ 4 - 1
gradle/libs.versions.toml

@@ -1,5 +1,6 @@
 [versions]
 aboutlib_version = "10.10.0"
+acra = "5.11.3"
 leakcanary = "2.12"
 moko = "0.23.0"
 okhttp_version = "5.0.0-alpha.12"
@@ -67,7 +68,8 @@ moko-gradle = { module = "dev.icerock.moko:resources-generator", version.ref = "
 
 logcat = "com.squareup.logcat:logcat:0.1"
 
-acra-http = "ch.acra:acra-http:5.11.3"
+acra-http = { module = "ch.acra:acra-http", version.ref = "acra" }
+acra-scheduler = { module = "ch.acra:acra-advanced-scheduler", version.ref = "acra" }
 firebase-analytics = "com.google.firebase:firebase-analytics-ktx:21.5.0"
 
 aboutLibraries-gradle = { module = "com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin", version.ref = "aboutlib_version" }
@@ -97,6 +99,7 @@ voyager-transitions = { module = "cafe.adriel.voyager:voyager-transitions", vers
 ktlint = "org.jlleitschuh.gradle:ktlint-gradle:12.0.3"
 
 [bundles]
+acra = ["acra-http", "acra-scheduler"]
 okhttp = ["okhttp-core", "okhttp-logging", "okhttp-brotli", "okhttp-dnsoverhttps"]
 js-engine = ["quickjs-android"]
 sqlite = ["sqlite-framework", "sqlite-ktx", "sqlite-android"]