mirror of
https://github.com/mihonapp/mihon.git
synced 2025-02-08 16:18:51 +01:00
Code Review
This commit is contained in:
parent
8132c830e2
commit
7286ca726e
@ -1,9 +1,9 @@
|
|||||||
package mihon.core.firebase
|
package mihon.core.firebase
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import eu.kanade.tachiyomi.core.security.SecurityPreferences
|
import eu.kanade.tachiyomi.core.security.PrivacyPreferences
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
|
||||||
object Firebase {
|
object Firebase {
|
||||||
fun setup(context: Context, preference: SecurityPreferences, scope: CoroutineScope) = Unit
|
fun setup(context: Context, preference: PrivacyPreferences, scope: CoroutineScope) = Unit
|
||||||
}
|
}
|
||||||
|
@ -36,21 +36,20 @@ import androidx.lifecycle.DefaultLifecycleObserver
|
|||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import androidx.lifecycle.compose.LocalLifecycleOwner
|
import androidx.lifecycle.compose.LocalLifecycleOwner
|
||||||
import eu.kanade.presentation.util.rememberRequestPackageInstallsPermissionState
|
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 eu.kanade.tachiyomi.util.system.launchRequestPackageInstallsPermission
|
||||||
import tachiyomi.i18n.MR
|
import tachiyomi.i18n.MR
|
||||||
import tachiyomi.presentation.core.i18n.stringResource
|
import tachiyomi.presentation.core.i18n.stringResource
|
||||||
|
import tachiyomi.presentation.core.util.collectAsState
|
||||||
import tachiyomi.presentation.core.util.secondaryItemAlpha
|
import tachiyomi.presentation.core.util.secondaryItemAlpha
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
internal class PermissionStep : OnboardingStep {
|
internal class PermissionStep : OnboardingStep {
|
||||||
|
|
||||||
private val securityPreferences: SecurityPreferences by injectLazy()
|
private val privacyPreferences: PrivacyPreferences by injectLazy()
|
||||||
|
|
||||||
private var notificationGranted by mutableStateOf(false)
|
private var notificationGranted by mutableStateOf(false)
|
||||||
private var batteryGranted 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
|
override val isComplete: Boolean = true
|
||||||
|
|
||||||
@ -123,24 +122,24 @@ internal class PermissionStep : OnboardingStep {
|
|||||||
color = MaterialTheme.colorScheme.onPrimaryContainer,
|
color = MaterialTheme.colorScheme.onPrimaryContainer,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val crashlyticsPref = privacyPreferences.crashlytics()
|
||||||
|
val crashlytics by crashlyticsPref.collectAsState()
|
||||||
|
|
||||||
PermissionSwitch(
|
PermissionSwitch(
|
||||||
title = stringResource(MR.strings.onboarding_permission_crashlytics),
|
title = stringResource(MR.strings.onboarding_permission_crashlytics),
|
||||||
subtitle = stringResource(MR.strings.onboarding_permission_crashlytics_description),
|
subtitle = stringResource(MR.strings.onboarding_permission_crashlytics_description),
|
||||||
granted = allowCrashLogs,
|
granted = crashlytics,
|
||||||
onToggleChange = {
|
onToggleChange = crashlyticsPref::set,
|
||||||
allowCrashLogs = it
|
|
||||||
securityPreferences.crashlytics().set(allowCrashLogs)
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val analyticsPref = privacyPreferences.analytics()
|
||||||
|
val analytics by analyticsPref.collectAsState()
|
||||||
|
|
||||||
PermissionSwitch(
|
PermissionSwitch(
|
||||||
title = stringResource(MR.strings.onboarding_permission_analytics),
|
title = stringResource(MR.strings.onboarding_permission_analytics),
|
||||||
subtitle = stringResource(MR.strings.onboarding_permission_analytics_description),
|
subtitle = stringResource(MR.strings.onboarding_permission_analytics_description),
|
||||||
granted = allowAnalytics,
|
granted = analytics,
|
||||||
onToggleChange = {
|
onToggleChange = analyticsPref::set,
|
||||||
allowAnalytics = it
|
|
||||||
securityPreferences.analytics().set(allowAnalytics)
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import androidx.compose.runtime.remember
|
|||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import eu.kanade.presentation.more.settings.Preference
|
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.core.security.SecurityPreferences
|
||||||
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.authenticate
|
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.authenticate
|
||||||
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported
|
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported
|
||||||
@ -29,9 +30,10 @@ object SettingsSecurityScreen : SearchableSettings {
|
|||||||
@Composable
|
@Composable
|
||||||
override fun getPreferences(): List<Preference> {
|
override fun getPreferences(): List<Preference> {
|
||||||
val securityPreferences = remember { Injekt.get<SecurityPreferences>() }
|
val securityPreferences = remember { Injekt.get<SecurityPreferences>() }
|
||||||
|
val privacyPreferences = remember { Injekt.get<PrivacyPreferences>() }
|
||||||
return listOf(
|
return listOf(
|
||||||
getSecurityGroup(securityPreferences),
|
getSecurityGroup(securityPreferences),
|
||||||
getFirebaseGroup(securityPreferences),
|
getFirebaseGroup(privacyPreferences),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -96,18 +98,18 @@ private fun getSecurityGroup(
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun getFirebaseGroup(
|
private fun getFirebaseGroup(
|
||||||
securityPreferences: SecurityPreferences,
|
privacyPreferences: PrivacyPreferences,
|
||||||
): Preference.PreferenceGroup {
|
): Preference.PreferenceGroup {
|
||||||
return Preference.PreferenceGroup(
|
return Preference.PreferenceGroup(
|
||||||
title = stringResource(MR.strings.pref_firebase),
|
title = stringResource(MR.strings.pref_firebase),
|
||||||
preferenceItems = persistentListOf(
|
preferenceItems = persistentListOf(
|
||||||
Preference.PreferenceItem.SwitchPreference(
|
Preference.PreferenceItem.SwitchPreference(
|
||||||
pref = securityPreferences.crashlytics(),
|
pref = privacyPreferences.crashlytics(),
|
||||||
title = stringResource(MR.strings.onboarding_permission_crashlytics),
|
title = stringResource(MR.strings.onboarding_permission_crashlytics),
|
||||||
subtitle = stringResource(MR.strings.onboarding_permission_crashlytics_description),
|
subtitle = stringResource(MR.strings.onboarding_permission_crashlytics_description),
|
||||||
),
|
),
|
||||||
Preference.PreferenceItem.SwitchPreference(
|
Preference.PreferenceItem.SwitchPreference(
|
||||||
pref = securityPreferences.analytics(),
|
pref = privacyPreferences.analytics(),
|
||||||
title = stringResource(MR.strings.onboarding_permission_analytics),
|
title = stringResource(MR.strings.onboarding_permission_analytics),
|
||||||
subtitle = stringResource(MR.strings.onboarding_permission_analytics_description),
|
subtitle = stringResource(MR.strings.onboarding_permission_analytics_description),
|
||||||
),
|
),
|
||||||
|
@ -26,7 +26,7 @@ import eu.kanade.domain.DomainModule
|
|||||||
import eu.kanade.domain.base.BasePreferences
|
import eu.kanade.domain.base.BasePreferences
|
||||||
import eu.kanade.domain.ui.UiPreferences
|
import eu.kanade.domain.ui.UiPreferences
|
||||||
import eu.kanade.domain.ui.model.setAppCompatDelegateThemeMode
|
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.CrashActivity
|
||||||
import eu.kanade.tachiyomi.crash.GlobalExceptionHandler
|
import eu.kanade.tachiyomi.crash.GlobalExceptionHandler
|
||||||
import eu.kanade.tachiyomi.data.coil.BufferedSourceFetcher
|
import eu.kanade.tachiyomi.data.coil.BufferedSourceFetcher
|
||||||
@ -69,7 +69,7 @@ import java.security.Security
|
|||||||
class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factory {
|
class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factory {
|
||||||
|
|
||||||
private val basePreferences: BasePreferences by injectLazy()
|
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 networkPreferences: NetworkPreferences by injectLazy()
|
||||||
|
|
||||||
private val disableIncognitoReceiver = DisableIncognitoReceiver()
|
private val disableIncognitoReceiver = DisableIncognitoReceiver()
|
||||||
@ -96,7 +96,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor
|
|||||||
Injekt.importModule(AppModule(this))
|
Injekt.importModule(AppModule(this))
|
||||||
Injekt.importModule(DomainModule())
|
Injekt.importModule(DomainModule())
|
||||||
|
|
||||||
Firebase.setup(applicationContext, securityPreferences, ProcessLifecycleOwner.get().lifecycleScope)
|
Firebase.setup(applicationContext, privacyPreferences, ProcessLifecycleOwner.get().lifecycleScope)
|
||||||
|
|
||||||
setupNotificationChannels()
|
setupNotificationChannels()
|
||||||
|
|
||||||
|
@ -3,13 +3,13 @@ package mihon.core.firebase
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.google.firebase.analytics.FirebaseAnalytics
|
import com.google.firebase.analytics.FirebaseAnalytics
|
||||||
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
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.CoroutineScope
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
|
|
||||||
object Firebase {
|
object Firebase {
|
||||||
fun setup(context: Context, preference: SecurityPreferences, scope: CoroutineScope) {
|
fun setup(context: Context, preference: PrivacyPreferences, scope: CoroutineScope) {
|
||||||
preference.analytics().changes().onEach { enabled ->
|
preference.analytics().changes().onEach { enabled ->
|
||||||
FirebaseAnalytics.getInstance(context).setAnalyticsCollectionEnabled(enabled)
|
FirebaseAnalytics.getInstance(context).setAnalyticsCollectionEnabled(enabled)
|
||||||
}.launchIn(scope)
|
}.launchIn(scope)
|
||||||
|
@ -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)
|
||||||
|
}
|
@ -18,10 +18,6 @@ class SecurityPreferences(
|
|||||||
|
|
||||||
fun hideNotificationContent() = preferenceStore.getBoolean("hide_notification_content", false)
|
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.
|
* For app lock. Will be set when there is a pending timed lock.
|
||||||
* Otherwise this pref should be deleted.
|
* Otherwise this pref should be deleted.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user