From 7286ca726e395e025d3a2f41c8649886e5a3611e Mon Sep 17 00:00:00 2001 From: Roshan Varughese <40583749+Animeboynz@users.noreply.github.com> Date: Sun, 29 Sep 2024 10:15:04 +1300 Subject: [PATCH] Code Review --- .../dev/java/mihon/core/firebase/Firebase.kt | 4 +-- .../more/onboarding/PermissionStep.kt | 27 +++++++++---------- .../settings/screen/SettingsSecurityScreen.kt | 10 ++++--- app/src/main/java/eu/kanade/tachiyomi/App.kt | 6 ++--- .../java/mihon/core/firebase/Firebase.kt | 4 +-- .../core/security/PrivacyPreferences.kt | 11 ++++++++ .../core/security/SecurityPreferences.kt | 4 --- 7 files changed, 37 insertions(+), 29 deletions(-) create mode 100644 core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/PrivacyPreferences.kt diff --git a/app/src/dev/java/mihon/core/firebase/Firebase.kt b/app/src/dev/java/mihon/core/firebase/Firebase.kt index 9d8acfd9b5..6108a4c767 100644 --- a/app/src/dev/java/mihon/core/firebase/Firebase.kt +++ b/app/src/dev/java/mihon/core/firebase/Firebase.kt @@ -1,9 +1,9 @@ package mihon.core.firebase import android.content.Context -import eu.kanade.tachiyomi.core.security.SecurityPreferences +import eu.kanade.tachiyomi.core.security.PrivacyPreferences import kotlinx.coroutines.CoroutineScope object Firebase { - fun setup(context: Context, preference: SecurityPreferences, scope: CoroutineScope) = Unit + fun setup(context: Context, preference: PrivacyPreferences, scope: CoroutineScope) = Unit } diff --git a/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt b/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt index 513ca22eca..62fc7630fd 100644 --- a/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt +++ b/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt @@ -36,21 +36,20 @@ import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.compose.LocalLifecycleOwner import eu.kanade.presentation.util.rememberRequestPackageInstallsPermissionState -import eu.kanade.tachiyomi.core.security.SecurityPreferences +import eu.kanade.tachiyomi.core.security.PrivacyPreferences import eu.kanade.tachiyomi.util.system.launchRequestPackageInstallsPermission import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource +import tachiyomi.presentation.core.util.collectAsState import tachiyomi.presentation.core.util.secondaryItemAlpha import uy.kohesive.injekt.injectLazy internal class PermissionStep : OnboardingStep { - private val securityPreferences: SecurityPreferences by injectLazy() + private val privacyPreferences: PrivacyPreferences by injectLazy() private var notificationGranted by mutableStateOf(false) private var batteryGranted by mutableStateOf(false) - private var allowCrashLogs by mutableStateOf(true) - private var allowAnalytics by mutableStateOf(true) override val isComplete: Boolean = true @@ -123,24 +122,24 @@ internal class PermissionStep : OnboardingStep { color = MaterialTheme.colorScheme.onPrimaryContainer, ) + val crashlyticsPref = privacyPreferences.crashlytics() + val crashlytics by crashlyticsPref.collectAsState() + PermissionSwitch( title = stringResource(MR.strings.onboarding_permission_crashlytics), subtitle = stringResource(MR.strings.onboarding_permission_crashlytics_description), - granted = allowCrashLogs, - onToggleChange = { - allowCrashLogs = it - securityPreferences.crashlytics().set(allowCrashLogs) - }, + granted = crashlytics, + onToggleChange = crashlyticsPref::set, ) + val analyticsPref = privacyPreferences.analytics() + val analytics by analyticsPref.collectAsState() + PermissionSwitch( title = stringResource(MR.strings.onboarding_permission_analytics), subtitle = stringResource(MR.strings.onboarding_permission_analytics_description), - granted = allowAnalytics, - onToggleChange = { - allowAnalytics = it - securityPreferences.analytics().set(allowAnalytics) - }, + granted = analytics, + onToggleChange = analyticsPref::set, ) } } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt index 8eab62064b..5796273e63 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt @@ -7,6 +7,7 @@ import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalContext import androidx.fragment.app.FragmentActivity import eu.kanade.presentation.more.settings.Preference +import eu.kanade.tachiyomi.core.security.PrivacyPreferences import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.authenticate import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported @@ -29,9 +30,10 @@ object SettingsSecurityScreen : SearchableSettings { @Composable override fun getPreferences(): List { val securityPreferences = remember { Injekt.get() } + val privacyPreferences = remember { Injekt.get() } return listOf( getSecurityGroup(securityPreferences), - getFirebaseGroup(securityPreferences), + getFirebaseGroup(privacyPreferences), ) } } @@ -96,18 +98,18 @@ private fun getSecurityGroup( @Composable private fun getFirebaseGroup( - securityPreferences: SecurityPreferences, + privacyPreferences: PrivacyPreferences, ): Preference.PreferenceGroup { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_firebase), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = securityPreferences.crashlytics(), + pref = privacyPreferences.crashlytics(), title = stringResource(MR.strings.onboarding_permission_crashlytics), subtitle = stringResource(MR.strings.onboarding_permission_crashlytics_description), ), Preference.PreferenceItem.SwitchPreference( - pref = securityPreferences.analytics(), + pref = privacyPreferences.analytics(), title = stringResource(MR.strings.onboarding_permission_analytics), subtitle = stringResource(MR.strings.onboarding_permission_analytics_description), ), diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index e07b4f389e..4b7b03c331 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -26,7 +26,7 @@ import eu.kanade.domain.DomainModule import eu.kanade.domain.base.BasePreferences import eu.kanade.domain.ui.UiPreferences import eu.kanade.domain.ui.model.setAppCompatDelegateThemeMode -import eu.kanade.tachiyomi.core.security.SecurityPreferences +import eu.kanade.tachiyomi.core.security.PrivacyPreferences import eu.kanade.tachiyomi.crash.CrashActivity import eu.kanade.tachiyomi.crash.GlobalExceptionHandler import eu.kanade.tachiyomi.data.coil.BufferedSourceFetcher @@ -69,7 +69,7 @@ import java.security.Security class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factory { private val basePreferences: BasePreferences by injectLazy() - private val securityPreferences: SecurityPreferences by injectLazy() + private val privacyPreferences: PrivacyPreferences by injectLazy() private val networkPreferences: NetworkPreferences by injectLazy() private val disableIncognitoReceiver = DisableIncognitoReceiver() @@ -96,7 +96,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor Injekt.importModule(AppModule(this)) Injekt.importModule(DomainModule()) - Firebase.setup(applicationContext, securityPreferences, ProcessLifecycleOwner.get().lifecycleScope) + Firebase.setup(applicationContext, privacyPreferences, ProcessLifecycleOwner.get().lifecycleScope) setupNotificationChannels() diff --git a/app/src/standard/java/mihon/core/firebase/Firebase.kt b/app/src/standard/java/mihon/core/firebase/Firebase.kt index c187cc1cab..7ec88da27f 100644 --- a/app/src/standard/java/mihon/core/firebase/Firebase.kt +++ b/app/src/standard/java/mihon/core/firebase/Firebase.kt @@ -3,13 +3,13 @@ package mihon.core.firebase import android.content.Context import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.crashlytics.FirebaseCrashlytics -import eu.kanade.tachiyomi.core.security.SecurityPreferences +import eu.kanade.tachiyomi.core.security.PrivacyPreferences import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach object Firebase { - fun setup(context: Context, preference: SecurityPreferences, scope: CoroutineScope) { + fun setup(context: Context, preference: PrivacyPreferences, scope: CoroutineScope) { preference.analytics().changes().onEach { enabled -> FirebaseAnalytics.getInstance(context).setAnalyticsCollectionEnabled(enabled) }.launchIn(scope) diff --git a/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/PrivacyPreferences.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/PrivacyPreferences.kt new file mode 100644 index 0000000000..956bc6ac6c --- /dev/null +++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/PrivacyPreferences.kt @@ -0,0 +1,11 @@ +package eu.kanade.tachiyomi.core.security + +import tachiyomi.core.common.preference.PreferenceStore + +class PrivacyPreferences( + private val preferenceStore: PreferenceStore, +) { + fun crashlytics() = preferenceStore.getBoolean("crashlytics", false) + + fun analytics() = preferenceStore.getBoolean("analytics", false) +} diff --git a/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt index 8727404fad..274f0c5928 100644 --- a/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt +++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt @@ -18,10 +18,6 @@ class SecurityPreferences( fun hideNotificationContent() = preferenceStore.getBoolean("hide_notification_content", false) - fun crashlytics() = preferenceStore.getBoolean("crashlytics", false) - - fun analytics() = preferenceStore.getBoolean("analytics", false) - /** * For app lock. Will be set when there is a pending timed lock. * Otherwise this pref should be deleted.