Migrate analytics prefs to repo pattern (#2766)

This commit is contained in:
Phil Oliver
2025-08-18 13:37:02 -04:00
committed by GitHub
parent e29003c79d
commit d5a840cc18
4 changed files with 18 additions and 12 deletions

View File

@@ -18,11 +18,15 @@
package com.geeksville.mesh
import com.geeksville.mesh.android.GeeksvilleApplication
import com.geeksville.mesh.android.prefs.AnalyticsPrefs
import dagger.hilt.android.HiltAndroidApp
import javax.inject.Inject
@HiltAndroidApp
class MeshUtilApplication : GeeksvilleApplication() {
@Inject override lateinit var analyticsPrefs: AnalyticsPrefs
override fun onCreate() {
super.onCreate()
}

View File

@@ -19,21 +19,20 @@ package com.geeksville.mesh.android
import android.app.Application
import android.content.Context
import android.content.SharedPreferences
import android.provider.Settings
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.runtime.Composable
import androidx.core.content.edit
import androidx.navigation.NavHostController
import com.geeksville.mesh.BuildConfig
import com.geeksville.mesh.analytics.AnalyticsProvider
import com.geeksville.mesh.analytics.NopAnalytics
import com.geeksville.mesh.android.BuildUtils.debug
import com.geeksville.mesh.android.BuildUtils.info
import com.geeksville.mesh.android.prefs.AnalyticsPrefs
import com.geeksville.mesh.model.DeviceHardware
import timber.log.Timber
open class GeeksvilleApplication :
abstract class GeeksvilleApplication :
Application(),
Logging {
@@ -56,12 +55,12 @@ open class GeeksvilleApplication :
return "true" == testLabSetting
}
private val analyticsPrefs: SharedPreferences by lazy { getSharedPreferences("analytics-prefs", MODE_PRIVATE) }
abstract val analyticsPrefs: AnalyticsPrefs
var isAnalyticsAllowed: Boolean
get() = analyticsPrefs.getBoolean("allowed", true)
get() = analyticsPrefs.analyticsAllowed
set(value) {
analyticsPrefs.edit { putBoolean("allowed", value) }
analyticsPrefs.analyticsAllowed = value
// Change the flag with the providers
analytics.setEnabled(value && !isInTestLab) // Never do analytics in the test lab

View File

@@ -21,15 +21,19 @@ import android.os.Debug
import com.geeksville.mesh.android.AppPrefs
import com.geeksville.mesh.android.BuildUtils.isEmulator
import com.geeksville.mesh.android.GeeksvilleApplication
import com.geeksville.mesh.android.prefs.AnalyticsPrefs
import com.geeksville.mesh.util.Exceptions
import com.google.firebase.crashlytics.FirebaseCrashlytics
import com.google.firebase.crashlytics.setCustomKeys
import dagger.hilt.android.HiltAndroidApp
import timber.log.Timber
import javax.inject.Inject
@HiltAndroidApp
class MeshUtilApplication : GeeksvilleApplication() {
@Inject override lateinit var analyticsPrefs: AnalyticsPrefs
override fun onCreate() {
super.onCreate()

View File

@@ -19,11 +19,9 @@ package com.geeksville.mesh.android
import android.app.Application
import android.content.Context
import android.content.SharedPreferences
import android.provider.Settings
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.runtime.Composable
import androidx.core.content.edit
import androidx.navigation.NavHostController
import com.datadog.android.Datadog
import com.datadog.android.DatadogSite
@@ -49,6 +47,7 @@ import com.datadog.android.trace.TraceConfiguration
import com.geeksville.mesh.BuildConfig
import com.geeksville.mesh.analytics.AnalyticsProvider
import com.geeksville.mesh.analytics.FirebaseAnalytics
import com.geeksville.mesh.android.prefs.AnalyticsPrefs
import com.geeksville.mesh.model.DeviceHardware
import com.geeksville.mesh.util.exceptionReporter
import com.google.android.gms.common.ConnectionResult
@@ -57,7 +56,7 @@ import com.suddenh4x.ratingdialog.AppRating
import io.opentracing.util.GlobalTracer
import timber.log.Timber
open class GeeksvilleApplication :
abstract class GeeksvilleApplication :
Application(),
Logging {
@@ -75,12 +74,12 @@ open class GeeksvilleApplication :
return "true" == testLabSetting
}
private val analyticsPrefs: SharedPreferences by lazy { getSharedPreferences("analytics-prefs", MODE_PRIVATE) }
abstract val analyticsPrefs: AnalyticsPrefs
var isAnalyticsAllowed: Boolean
get() = analyticsPrefs.getBoolean("allowed", true)
get() = analyticsPrefs.analyticsAllowed
set(value) {
analyticsPrefs.edit { putBoolean("allowed", value) }
analyticsPrefs.analyticsAllowed = value
val newConsent =
if (value && !isInTestLab) {
TrackingConsent.GRANTED