|
|
|
@ -5,6 +5,7 @@
|
|
|
|
|
package org.mozilla.fenix.onboarding
|
|
|
|
|
|
|
|
|
|
import android.annotation.SuppressLint
|
|
|
|
|
import android.content.DialogInterface
|
|
|
|
|
import android.content.pm.ActivityInfo
|
|
|
|
|
import android.os.Bundle
|
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
@ -18,8 +19,11 @@ import androidx.navigation.fragment.findNavController
|
|
|
|
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
|
import mozilla.components.lib.state.ext.observeAsComposableState
|
|
|
|
|
import mozilla.telemetry.glean.private.NoExtras
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.Wallpapers
|
|
|
|
|
import org.mozilla.fenix.NavGraphDirections
|
|
|
|
|
import org.mozilla.fenix.R
|
|
|
|
|
import org.mozilla.fenix.ext.components
|
|
|
|
|
import org.mozilla.fenix.ext.requireComponents
|
|
|
|
|
import org.mozilla.fenix.ext.settings
|
|
|
|
|
import org.mozilla.fenix.theme.FirefoxTheme
|
|
|
|
@ -51,9 +55,21 @@ class WallpaperOnboardingDialogFragment : BottomSheetDialogFragment() {
|
|
|
|
|
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onDismiss(dialog: DialogInterface) {
|
|
|
|
|
super.onDismiss(dialog)
|
|
|
|
|
|
|
|
|
|
val currentWallpaper = requireContext().components.appStore.state.wallpaperState.currentWallpaper
|
|
|
|
|
Wallpapers.onboardingClosed.record(
|
|
|
|
|
Wallpapers.OnboardingClosedExtra(
|
|
|
|
|
isSelected = currentWallpaper.name != Wallpaper.defaultName,
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
|
|
|
super.onViewCreated(view, savedInstanceState)
|
|
|
|
|
requireContext().settings().showWallpaperOnboarding = false
|
|
|
|
|
Wallpapers.onboardingOpened.record(NoExtras())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onCreateView(
|
|
|
|
@ -81,16 +97,35 @@ class WallpaperOnboardingDialogFragment : BottomSheetDialogFragment() {
|
|
|
|
|
onExploreMoreButtonClicked = {
|
|
|
|
|
val directions = NavGraphDirections.actionGlobalWallpaperSettingsFragment()
|
|
|
|
|
findNavController().navigate(directions)
|
|
|
|
|
Wallpapers.onboardingExploreMoreClick.record(NoExtras())
|
|
|
|
|
},
|
|
|
|
|
loadWallpaperResource = { wallpaperUseCases.loadThumbnail(it) },
|
|
|
|
|
onSelectWallpaper = {
|
|
|
|
|
coroutineScope.launch { wallpaperUseCases.selectWallpaper(it) }
|
|
|
|
|
coroutineScope.launch {
|
|
|
|
|
val result = wallpaperUseCases.selectWallpaper(it)
|
|
|
|
|
onWallpaperSelected(it, result)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun onWallpaperSelected(
|
|
|
|
|
wallpaper: Wallpaper,
|
|
|
|
|
result: Wallpaper.ImageFileState,
|
|
|
|
|
) {
|
|
|
|
|
if (result == Wallpaper.ImageFileState.Downloaded) {
|
|
|
|
|
Wallpapers.wallpaperSelected.record(
|
|
|
|
|
Wallpapers.WallpaperSelectedExtra(
|
|
|
|
|
name = wallpaper.name,
|
|
|
|
|
source = "onboarding",
|
|
|
|
|
themeCollection = wallpaper.collection.name,
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
|
const val THUMBNAILS_COUNT = 6
|
|
|
|
|
}
|
|
|
|
|