From 6bc1d32a88ae516f77d149b83bcd536d2c888513 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 7 Mar 2023 10:49:48 +0600 Subject: [PATCH] feat: show snackbar on adding playlist or tracks to queue --- lib/components/album/album_card.dart | 27 +++++++++++++++------- lib/components/playlist/playlist_card.dart | 12 ++++++++++ 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/lib/components/album/album_card.dart b/lib/components/album/album_card.dart index eade617fb..0e1f6b526 100644 --- a/lib/components/album/album_card.dart +++ b/lib/components/album/album_card.dart @@ -2,6 +2,7 @@ import 'package:fl_query_hooks/fl_query_hooks.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart'; import 'package:spotube/components/shared/playbutton_card.dart'; import 'package:spotube/hooks/use_breakpoint_value.dart'; @@ -9,6 +10,7 @@ import 'package:spotube/provider/playlist_queue_provider.dart'; import 'package:spotube/provider/spotify_provider.dart'; import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart'; +import 'package:fluent_ui/fluent_ui.dart' as fluent; enum AlbumType { album, @@ -108,21 +110,30 @@ class AlbumCard extends HookConsumerWidget { .all() .then((value) => value.toList()); }, + ).then( + (tracks) => tracks + ?.map( + (e) => TypeConversionUtils.simpleTrack_X_Track(e, album)) + .toList(), ); if (fetchedTracks == null || fetchedTracks.isEmpty) return; - playlistNotifier.add( - fetchedTracks - .map((e) => TypeConversionUtils.simpleTrack_X_Track(e, album)) - .toList(), + fetchedTracks, ); tracks.value = fetchedTracks; - scaffold.showSnackBar( - SnackBar( + if (context.mounted) { + final snackbar = SnackBar( content: Text("Added ${album.tracks?.length} tracks to queue"), - ), - ); + action: SnackBarAction( + label: "Undo", + onPressed: () { + playlistNotifier.remove(fetchedTracks); + }, + ), + ); + ScaffoldMessenger.maybeOf(context)?.showSnackBar(snackbar); + } } finally { updating.value = false; } diff --git a/lib/components/playlist/playlist_card.dart b/lib/components/playlist/playlist_card.dart index 8ddf20fdd..e6378df48 100644 --- a/lib/components/playlist/playlist_card.dart +++ b/lib/components/playlist/playlist_card.dart @@ -93,6 +93,18 @@ class PlaylistCard extends HookConsumerWidget { playlistNotifier.add(fetchedTracks); tracks.value = fetchedTracks; + if (context.mounted) { + final snackbar = SnackBar( + content: Text("Added ${tracks.value.length} tracks to queue"), + action: SnackBarAction( + label: "Undo", + onPressed: () { + playlistNotifier.remove(fetchedTracks); + }, + ), + ); + ScaffoldMessenger.maybeOf(context)?.showSnackBar(snackbar); + } } finally { updating.value = false; }