mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-10-20 22:41:38 +02:00
40 lines
1.3 KiB
Dart
40 lines
1.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:spotiflac_android/l10n/l10n.dart';
|
|
import 'package:spotiflac_android/providers/download_queue_provider.dart';
|
|
|
|
/// Presents live queue effects while the application shell is mounted.
|
|
class DownloadQueueFeedback extends ConsumerWidget {
|
|
const DownloadQueueFeedback({super.key, required this.child});
|
|
|
|
final Widget child;
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
ref.listen(downloadQueueProvider.select((queue) => queue.reconnectRetry), (
|
|
_,
|
|
retry,
|
|
) {
|
|
if (retry == null ||
|
|
!context.mounted ||
|
|
WidgetsBinding.instance.lifecycleState != AppLifecycleState.resumed) {
|
|
return;
|
|
}
|
|
final queue = ref.read(downloadQueueProvider.notifier);
|
|
final l10n = context.l10n;
|
|
ScaffoldMessenger.of(context)
|
|
..removeCurrentSnackBar()
|
|
..showSnackBar(
|
|
SnackBar(
|
|
content: Text(l10n.queueNetworkFailedOffline(retry.failedCount)),
|
|
action: SnackBarAction(
|
|
label: l10n.dialogRetry,
|
|
onPressed: () => queue.retryAllFailed(networkOnly: true),
|
|
),
|
|
),
|
|
);
|
|
});
|
|
return child;
|
|
}
|
|
}
|