diff --git a/app/src/fdroid/java/com/geeksville/mesh/MeshUtilApplication.kt b/app/src/fdroid/java/com/geeksville/mesh/MeshUtilApplication.kt index 5361646ce..52925a6cd 100644 --- a/app/src/fdroid/java/com/geeksville/mesh/MeshUtilApplication.kt +++ b/app/src/fdroid/java/com/geeksville/mesh/MeshUtilApplication.kt @@ -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() } diff --git a/app/src/fdroid/java/com/geeksville/mesh/android/GeeksvilleApplication.kt b/app/src/fdroid/java/com/geeksville/mesh/android/GeeksvilleApplication.kt index 8161bfddf..876630f43 100644 --- a/app/src/fdroid/java/com/geeksville/mesh/android/GeeksvilleApplication.kt +++ b/app/src/fdroid/java/com/geeksville/mesh/android/GeeksvilleApplication.kt @@ -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 diff --git a/app/src/google/java/com/geeksville/mesh/MeshUtilApplication.kt b/app/src/google/java/com/geeksville/mesh/MeshUtilApplication.kt index f81cbdd6f..307dfd5ce 100644 --- a/app/src/google/java/com/geeksville/mesh/MeshUtilApplication.kt +++ b/app/src/google/java/com/geeksville/mesh/MeshUtilApplication.kt @@ -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() diff --git a/app/src/google/java/com/geeksville/mesh/android/GeeksvilleApplication.kt b/app/src/google/java/com/geeksville/mesh/android/GeeksvilleApplication.kt index 85aae080a..c63c09bc0 100644 --- a/app/src/google/java/com/geeksville/mesh/android/GeeksvilleApplication.kt +++ b/app/src/google/java/com/geeksville/mesh/android/GeeksvilleApplication.kt @@ -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