For #2390 - Applies onboarding mode on start
parent
ba3edbcf92
commit
b14d0fa80c
|
@ -57,6 +57,8 @@ import org.mozilla.fenix.lib.Do
|
|||
import org.mozilla.fenix.mvi.ActionBusFactory
|
||||
import org.mozilla.fenix.mvi.getAutoDisposeObservable
|
||||
import org.mozilla.fenix.mvi.getManagedEmitter
|
||||
import org.mozilla.fenix.onboarding.FenixOnboarding
|
||||
import org.mozilla.fenix.onboarding.Onboarding
|
||||
import org.mozilla.fenix.settings.SupportUtils
|
||||
import org.mozilla.fenix.utils.ItsNotBrokenSnack
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
@ -70,6 +72,7 @@ class HomeFragment : Fragment(), CoroutineScope {
|
|||
|
||||
var deleteSessionJob: (suspend () -> Unit)? = null
|
||||
|
||||
private val onboarding by lazy { FenixOnboarding(requireContext()) }
|
||||
private lateinit var sessionControlComponent: SessionControlComponent
|
||||
|
||||
private lateinit var job: Job
|
||||
|
@ -86,7 +89,8 @@ class HomeFragment : Fragment(), CoroutineScope {
|
|||
): View? {
|
||||
job = Job()
|
||||
val view = inflater.inflate(R.layout.fragment_home, container, false)
|
||||
val mode = if ((activity as HomeActivity).browsingModeManager.isPrivate) Mode.Private else Mode.Normal
|
||||
|
||||
val mode = currentMode()
|
||||
|
||||
sessionControlComponent = SessionControlComponent(
|
||||
view.homeLayout,
|
||||
|
@ -220,7 +224,7 @@ class HomeFragment : Fragment(), CoroutineScope {
|
|||
}
|
||||
}
|
||||
|
||||
val mode = if ((activity as HomeActivity).browsingModeManager.isPrivate) Mode.Private else Mode.Normal
|
||||
val mode = currentMode()
|
||||
getManagedEmitter<SessionControlChange>().onNext(SessionControlChange.ModeChange(mode))
|
||||
|
||||
emitSessionChanges()
|
||||
|
@ -495,10 +499,15 @@ class HomeFragment : Fragment(), CoroutineScope {
|
|||
}
|
||||
}
|
||||
|
||||
private fun currentMode(): Mode = if (!onboarding.userHasBeenOnboarded()) {
|
||||
Mode.Onboarding
|
||||
} else if ((activity as HomeActivity).browsingModeManager.isPrivate) {
|
||||
Mode.Private
|
||||
} else { Mode.Normal }
|
||||
|
||||
companion object {
|
||||
private const val toolbarPaddingDp = 12f
|
||||
private const val KEY_TABS = "tabs"
|
||||
private const val KEY_COLLECTIONS = "collections"
|
||||
private const val KEY_MODE = "mode"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,16 +58,10 @@ data class TabCollection(
|
|||
var expanded: Boolean = false
|
||||
) : Parcelable
|
||||
|
||||
sealed class FirefoxAcocuntsState {
|
||||
object SignedOut : FirefoxAcocuntsState()
|
||||
data class AutoSignedIn(val email: String) : FirefoxAcocuntsState()
|
||||
data class SignedIn(val email: String) : FirefoxAcocuntsState()
|
||||
}
|
||||
|
||||
sealed class Mode {
|
||||
object Normal : Mode()
|
||||
object Private : Mode()
|
||||
data class Onboarding(val firefoxAccountsState: FirefoxAcocuntsState) : Mode()
|
||||
object Onboarding : Mode()
|
||||
}
|
||||
|
||||
data class SessionControlState(
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.fenix.onboarding
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
|
||||
class FenixOnboarding(private val context: Context) {
|
||||
private val onboardingPrefs = context.applicationContext.getSharedPreferences(
|
||||
OnboardingKeys.PREF_NAME.key,
|
||||
Context.MODE_PRIVATE
|
||||
)
|
||||
|
||||
private var SharedPreferences.onboardedVersion: Int
|
||||
get() = getInt(OnboardingKeys.LAST_VERSION.key, 0)
|
||||
set(version) { edit().putInt(OnboardingKeys.LAST_VERSION.key, version).apply() }
|
||||
|
||||
fun finish() {
|
||||
onboardingPrefs.onboardedVersion = CURRENT_ONBOARDING_VERSION
|
||||
}
|
||||
|
||||
fun userHasBeenOnboarded(): Boolean = onboardingPrefs.onboardedVersion == CURRENT_ONBOARDING_VERSION
|
||||
|
||||
private enum class OnboardingKeys(val key: String) {
|
||||
PREF_NAME("fenix.onboarding"),
|
||||
LAST_VERSION("fenix.onboarding.last_version")
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val CURRENT_ONBOARDING_VERSION = 1
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue