Skip to content

Commit

Permalink
feat(playlist): show confirmation before deleting user playlist #1222
Browse files Browse the repository at this point in the history
  • Loading branch information
KRTirtho committed Feb 17, 2024
1 parent e964f61 commit 9f92440
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ class TrackViewHeaderActions extends HookConsumerWidget {
tooltip: props.isLiked
? context.l10n.remove_from_favorites
: context.l10n.save_as_favorite,
onPressed: () {
props.onHeart?.call();
if (isUserPlaylist) {
onPressed: () async {
final shouldPop = await props.onHeart?.call();
if (isUserPlaylist && shouldPop == true && context.mounted) {
context.pop();
}
},
Expand Down
4 changes: 3 additions & 1 deletion lib/components/shared/tracks_view/track_view_props.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import 'dart:async';

import 'package:fl_query/fl_query.dart';
import 'package:flutter/material.dart' hide Page;
import 'package:spotify/spotify.dart';
Expand Down Expand Up @@ -62,7 +64,7 @@ class InheritedTrackView extends InheritedWidget {
final String shareUrl;

// events
final VoidCallback? onHeart; // if null heart button will hidden
final FutureOr<bool?> Function()? onHeart; // if null heart button will hidden

const InheritedTrackView({
super.key,
Expand Down
4 changes: 3 additions & 1 deletion lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -290,5 +290,7 @@
"start_a_radio": "Start a Radio",
"how_to_start_radio": "How do you want to start the radio?",
"replace_queue_question": "Do you want to replace the current queue or append to it?",
"endless_playback": "Endless Playback"
"endless_playback": "Endless Playback",
"delete_playlist": "Delete Playlist",
"delete_playlist_confirmation": "Are you sure you want to delete this playlist?"
}
20 changes: 18 additions & 2 deletions lib/pages/playlist/playlist.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@ import 'package:flutter/material.dart' hide Page;
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/components/shared/dialogs/prompt_dialog.dart';
import 'package:spotube/components/shared/tracks_view/sections/body/use_is_user_playlist.dart';
import 'package:spotube/components/shared/tracks_view/track_view.dart';
import 'package:spotube/components/shared/tracks_view/track_view_props.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/infinite_query.dart';
import 'package:spotube/provider/spotify_provider.dart';
import 'package:spotube/services/mutations/mutations.dart';
Expand Down Expand Up @@ -45,6 +48,8 @@ class PlaylistPage extends HookConsumerWidget {
],
);

final isUserPlaylist = useIsUserPlaylist(ref, playlist.id!);

return InheritedTrackView(
collectionId: playlist.id!,
image: TypeConversionUtils.image_X_UrlString(
Expand Down Expand Up @@ -72,9 +77,20 @@ class PlaylistPage extends HookConsumerWidget {
shareUrl: playlist.externalUrls?.spotify ?? "",
onHeart: () async {
if (!isLikedQuery.hasData || togglePlaylistLike.isMutating) {
return;
return false;
}
final confirmed = isUserPlaylist
? await showPromptDialog(
context: context,
title: context.l10n.delete_playlist,
message: context.l10n.delete_playlist_confirmation,
)
: true;
if (confirmed) {
await togglePlaylistLike.mutate(isLikedQuery.data!);
return isUserPlaylist;
}
await togglePlaylistLike.mutate(isLikedQuery.data!);
return null;
},
child: const TrackView(),
);
Expand Down
72 changes: 54 additions & 18 deletions untranslated_messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,126 +3,162 @@
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"bn": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"ca": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"de": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"es": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"fa": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"fr": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"hi": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"it": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"ja": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"ne": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"nl": [
"audio_source",
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"pl": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"pt": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"ru": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"tr": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"uk": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
],

"zh": [
"start_a_radio",
"how_to_start_radio",
"replace_queue_question",
"endless_playback"
"endless_playback",
"delete_playlist",
"delete_playlist_confirmation"
]
}

0 comments on commit 9f92440

Please sign in to comment.