@@ -32,6 +32,7 @@ import 'package:musify/services/playlists_manager.dart';
3232import 'package:musify/services/router_service.dart' ;
3333import 'package:musify/utilities/artwork_provider.dart' ;
3434import 'package:musify/utilities/flutter_toast.dart' ;
35+ import 'package:musify/utilities/offline_playlist_dialogs.dart' ;
3536import 'package:musify/utilities/playlist_dialogs.dart' ;
3637import 'package:musify/widgets/edit_playlist_dialog.dart' ;
3738import '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