Skip to content

Commit 2cc222f

Browse files
committed
feat(playlist_bar): add option to remove offline playlists from action menu
1 parent 4b15fea commit 2cc222f

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

lib/widgets/playlist_bar.dart

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import 'package:musify/services/playlists_manager.dart';
3232
import 'package:musify/services/router_service.dart';
3333
import 'package:musify/utilities/artwork_provider.dart';
3434
import 'package:musify/utilities/flutter_toast.dart';
35+
import 'package:musify/utilities/offline_playlist_dialogs.dart';
3536
import 'package:musify/utilities/playlist_dialogs.dart';
3637
import 'package:musify/widgets/edit_playlist_dialog.dart';
3738
import 'package:musify/widgets/spinner.dart';
@@ -167,6 +168,10 @@ class PlaylistBar extends StatelessWidget {
167168
}
168169

169170
Widget _buildActionButtons(BuildContext context, ColorScheme colorScheme) {
171+
final isOffline =
172+
playlistData != null &&
173+
(playlistData!['downloadedAt'] != null ||
174+
playlistData!['isOffline'] == true);
170175
return PopupMenuButton<String>(
171176
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
172177
color: colorScheme.surfaceContainerHigh,
@@ -201,6 +206,14 @@ class PlaylistBar extends StatelessWidget {
201206
case 'add_to_playlist':
202207
_handleAddPlaylistToPlaylist(context);
203208
break;
209+
case 'remove_offline':
210+
if (playlistData != null && playlistData!['ytid'] != null) {
211+
showRemoveOfflinePlaylistDialog(
212+
context,
213+
playlistData!['ytid'].toString(),
214+
);
215+
}
216+
break;
204217
}
205218
},
206219
itemBuilder: (BuildContext context) {
@@ -238,6 +251,23 @@ class PlaylistBar extends StatelessWidget {
238251
],
239252
),
240253
),
254+
if (isOffline)
255+
PopupMenuItem<String>(
256+
value: 'remove_offline',
257+
child: Row(
258+
children: [
259+
Icon(
260+
FluentIcons.cloud_off_24_filled,
261+
color: colorScheme.error,
262+
),
263+
const SizedBox(width: 8),
264+
Text(
265+
context.l10n!.removeOffline,
266+
style: TextStyle(color: colorScheme.error),
267+
),
268+
],
269+
),
270+
),
241271
if (playlistData != null &&
242272
!isFolder &&
243273
(playlistData!['source'] == 'user-created' ||

0 commit comments

Comments
 (0)