mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-09-27 11:51:56 +02:00
feat(ux): unify added-to-queue snackbars and add fetch retry
Every single-track enqueue now shows the shared added-to-queue snackbar with a View action into Library (six call sites through one helper). URL fetch failures in Home and via share intent gain a Retry action; unrecognized-URL errors deliberately keep none since retrying is deterministic.
This commit is contained in:
@@ -1638,12 +1638,7 @@ class _ArtistScreenState extends ConsumerState<ArtistScreen>
|
||||
ref
|
||||
.read(downloadQueueProvider.notifier)
|
||||
.addToQueue(track, service, qualityOverride: quality);
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(context.l10n.snackbarAddedToQueue(track.name)),
|
||||
duration: const Duration(seconds: 2),
|
||||
),
|
||||
);
|
||||
showAddedToQueueSnackBar(context, track.name);
|
||||
}
|
||||
|
||||
if (settings.askQualityBeforeDownload || settings.allowQualityVariants) {
|
||||
|
||||
+16
-21
@@ -543,9 +543,18 @@ class _HomeTabState extends ConsumerState<HomeTab>
|
||||
: isRateLimit
|
||||
? l10n.errorRateLimitedMessage
|
||||
: l10n.errorUrlFetchFailed;
|
||||
ScaffoldMessenger.of(
|
||||
context,
|
||||
).showSnackBar(SnackBar(content: Text(displayMessage)));
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(displayMessage),
|
||||
// Retrying an unrecognized URL is deterministic; skip the action.
|
||||
action: errorMsg == 'url_not_recognized'
|
||||
? null
|
||||
: SnackBarAction(
|
||||
label: l10n.dialogRetry,
|
||||
onPressed: _fetchMetadata,
|
||||
),
|
||||
),
|
||||
);
|
||||
ref.read(trackProvider.notifier).clear();
|
||||
} else {
|
||||
_navigateToDetailIfNeeded();
|
||||
@@ -649,11 +658,7 @@ class _HomeTabState extends ConsumerState<HomeTab>
|
||||
ref
|
||||
.read(downloadQueueProvider.notifier)
|
||||
.addToQueue(track, service, qualityOverride: quality);
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(context.l10n.snackbarAddedToQueue(track.name)),
|
||||
),
|
||||
);
|
||||
showAddedToQueueSnackBar(context, track.name);
|
||||
},
|
||||
);
|
||||
} else {
|
||||
@@ -669,11 +674,7 @@ class _HomeTabState extends ConsumerState<HomeTab>
|
||||
return;
|
||||
}
|
||||
ref.read(downloadQueueProvider.notifier).addToQueue(track, service);
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(context.l10n.snackbarAddedToQueue(track.name)),
|
||||
),
|
||||
);
|
||||
showAddedToQueueSnackBar(context, track.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1982,11 +1983,7 @@ class _HomeTabState extends ConsumerState<HomeTab>
|
||||
ref
|
||||
.read(downloadQueueProvider.notifier)
|
||||
.addToQueue(track, service, qualityOverride: quality);
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(context.l10n.snackbarAddedToQueue(track.name)),
|
||||
),
|
||||
);
|
||||
showAddedToQueueSnackBar(context, track.name);
|
||||
},
|
||||
);
|
||||
} else {
|
||||
@@ -2002,9 +1999,7 @@ class _HomeTabState extends ConsumerState<HomeTab>
|
||||
return;
|
||||
}
|
||||
ref.read(downloadQueueProvider.notifier).addToQueue(track, service);
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text(context.l10n.snackbarAddedToQueue(track.name))),
|
||||
);
|
||||
showAddedToQueueSnackBar(context, track.name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -300,9 +300,18 @@ class _MainShellState extends ConsumerState<MainShell>
|
||||
: isRateLimit
|
||||
? l10n.errorRateLimitedMessage
|
||||
: l10n.errorUrlFetchFailed;
|
||||
ScaffoldMessenger.of(
|
||||
context,
|
||||
).showSnackBar(SnackBar(content: Text(displayMessage)));
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(displayMessage),
|
||||
// Retrying an unrecognized URL is deterministic; skip the action.
|
||||
action: errorMsg == 'url_not_recognized'
|
||||
? null
|
||||
: SnackBarAction(
|
||||
label: l10n.dialogRetry,
|
||||
onPressed: () => _handleSharedUrl(url),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user