diff --git a/app/src/main/java/org/mozilla/fenix/onboarding/WallpaperOnboardingDialogFragment.kt b/app/src/main/java/org/mozilla/fenix/onboarding/WallpaperOnboardingDialogFragment.kt index 18a6402ea..765e44a1a 100644 --- a/app/src/main/java/org/mozilla/fenix/onboarding/WallpaperOnboardingDialogFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/onboarding/WallpaperOnboardingDialogFragment.kt @@ -15,6 +15,7 @@ import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy +import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.google.android.material.bottomsheet.BottomSheetDialogFragment import kotlinx.coroutines.launch @@ -23,6 +24,7 @@ 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.components.FenixSnackbar import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.settings @@ -103,7 +105,7 @@ class WallpaperOnboardingDialogFragment : BottomSheetDialogFragment() { onSelectWallpaper = { coroutineScope.launch { val result = wallpaperUseCases.selectWallpaper(it) - onWallpaperSelected(it, result) + onWallpaperSelected(it, result, this@WallpaperOnboardingDialogFragment.requireView()) } }, ) @@ -114,15 +116,33 @@ class WallpaperOnboardingDialogFragment : BottomSheetDialogFragment() { private fun onWallpaperSelected( wallpaper: Wallpaper, result: Wallpaper.ImageFileState, + view: View, ) { - if (result == Wallpaper.ImageFileState.Downloaded) { - Wallpapers.wallpaperSelected.record( - Wallpapers.WallpaperSelectedExtra( - name = wallpaper.name, - source = "onboarding", - themeCollection = wallpaper.collection.name, - ), - ) + when (result) { + Wallpaper.ImageFileState.Downloaded -> { + Wallpapers.wallpaperSelected.record( + Wallpapers.WallpaperSelectedExtra( + name = wallpaper.name, + source = "onboarding", + themeCollection = wallpaper.collection.name, + ), + ) + } + Wallpaper.ImageFileState.Error -> { + FenixSnackbar.make( + view = view, + isDisplayedWithBrowserToolbar = false, + ) + .setText(view.context.getString(R.string.wallpaper_download_error_snackbar_message)) + .setAction(view.context.getString(R.string.wallpaper_download_error_snackbar_action)) { + viewLifecycleOwner.lifecycleScope.launch { + val retryResult = wallpaperUseCases.selectWallpaper(wallpaper) + onWallpaperSelected(wallpaper, retryResult, view) + } + } + .show() + } + else -> { /* noop */ } } }