Closes #27021: add wallpaper onboarding downloading error snackbar

This commit is contained in:
mike a 2022-09-15 11:01:47 -07:00 committed by mergify[bot]
parent 9ce3f65b51
commit 2ee00374dd

View File

@ -15,6 +15,7 @@ import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -23,6 +24,7 @@ import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.GleanMetrics.Wallpapers import org.mozilla.fenix.GleanMetrics.Wallpapers
import org.mozilla.fenix.NavGraphDirections import org.mozilla.fenix.NavGraphDirections
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
@ -103,7 +105,7 @@ class WallpaperOnboardingDialogFragment : BottomSheetDialogFragment() {
onSelectWallpaper = { onSelectWallpaper = {
coroutineScope.launch { coroutineScope.launch {
val result = wallpaperUseCases.selectWallpaper(it) val result = wallpaperUseCases.selectWallpaper(it)
onWallpaperSelected(it, result) onWallpaperSelected(it, result, this@WallpaperOnboardingDialogFragment.requireView())
} }
}, },
) )
@ -114,15 +116,33 @@ class WallpaperOnboardingDialogFragment : BottomSheetDialogFragment() {
private fun onWallpaperSelected( private fun onWallpaperSelected(
wallpaper: Wallpaper, wallpaper: Wallpaper,
result: Wallpaper.ImageFileState, result: Wallpaper.ImageFileState,
view: View,
) { ) {
if (result == Wallpaper.ImageFileState.Downloaded) { when (result) {
Wallpapers.wallpaperSelected.record( Wallpaper.ImageFileState.Downloaded -> {
Wallpapers.WallpaperSelectedExtra( Wallpapers.wallpaperSelected.record(
name = wallpaper.name, Wallpapers.WallpaperSelectedExtra(
source = "onboarding", name = wallpaper.name,
themeCollection = wallpaper.collection.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 */ }
} }
} }