diff --git a/lib/features/series/presentation/series_list_screen.dart b/lib/features/series/presentation/series_list_screen.dart index 2dd6d94..f7d189c 100644 --- a/lib/features/series/presentation/series_list_screen.dart +++ b/lib/features/series/presentation/series_list_screen.dart @@ -3,6 +3,8 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter/widgets.dart' as widgets; +import 'package:flutter/services.dart'; +import 'package:flutter/foundation.dart'; import '../../../core/status.dart'; import '../../movies/presentation/widgets/status_chip.dart'; import '../data/series_repository.dart'; @@ -17,6 +19,22 @@ import '../../../core/config.dart'; import '../../../core/async_utils.dart'; import 'widgets/overlay_scrollbar.dart'; +Future openDownloadPath(BuildContext context, String path) async { + final ok = await openFolder(path); + if (ok) return; + final messenger = ScaffoldMessenger.of(context); + if (kIsWeb) { + await Clipboard.setData(ClipboardData(text: path)); + messenger.showSnackBar( + const SnackBar(content: Text('Im Web nicht möglich – Pfad wurde kopiert')), + ); + } else { + messenger.showSnackBar( + const SnackBar(content: Text('Pfad kann nicht geöffnet werden')), + ); + } +} + class SeriesListScreen extends ConsumerStatefulWidget { const SeriesListScreen({super.key}); @@ -564,10 +582,7 @@ class _SeriesListScreenState extends ConsumerState { onPressed: () async { final messenger = ScaffoldMessenger.of(context); if (downloadPath != null && downloadPath.isNotEmpty) { - final ok = await openFolder(downloadPath); - if (!ok) { - messenger.showSnackBar(const SnackBar(content: Text('Pfad kann nicht geöffnet werden'))); - } + await openDownloadPath(context, downloadPath); } else { messenger.showSnackBar(const SnackBar(content: Text('Kein Download Path vorhanden'))); } @@ -700,7 +715,11 @@ class _SeriesListScreenState extends ConsumerState { child: const Text('open download path'), onPressed: () async { final messenger = ScaffoldMessenger.of(context); - if (downloadPath != null && downloadPath.isNotEmpty) { final ok = await openFolder(downloadPath); if (!ok) { messenger.showSnackBar(const SnackBar(content: Text('Pfad kann nicht geöffnet werden')));} } else { messenger.showSnackBar(const SnackBar(content: Text('Kein Download Path vorhanden')));} + if (downloadPath != null && downloadPath.isNotEmpty) { + await openDownloadPath(context, downloadPath); + } else { + messenger.showSnackBar(const SnackBar(content: Text('Kein Download Path vorhanden'))); + } }, ), ], @@ -759,7 +778,14 @@ class _SeriesListScreenState extends ConsumerState { ), MenuItemButton( child: const Text('open download path'), - onPressed: () async { final messenger = ScaffoldMessenger.of(context); if (downloadPath != null && downloadPath.isNotEmpty) { final ok = await openFolder(downloadPath); if (!ok) { messenger.showSnackBar(const SnackBar(content: Text('Pfad kann nicht geöffnet werden')));} } else { messenger.showSnackBar(const SnackBar(content: Text('Kein Download Path vorhanden')));} }, + onPressed: () async { + final messenger = ScaffoldMessenger.of(context); + if (downloadPath != null && downloadPath.isNotEmpty) { + await openDownloadPath(context, downloadPath); + } else { + messenger.showSnackBar(const SnackBar(content: Text('Kein Download Path vorhanden'))); + } + }, ), ], builder: (ctx, controller, child) => GestureDetector( @@ -1221,12 +1247,7 @@ class _SeriesListScreenState extends ConsumerState { final messenger = ScaffoldMessenger.of(context); final dp = downloadPath; if (dp != null && dp.isNotEmpty) { - final ok = await openFolder(dp); - if (!ok) { - messenger.showSnackBar( - const SnackBar(content: Text('Pfad kann nicht geöffnet werden')), - ); - } + await openDownloadPath(context, dp); } else { messenger.showSnackBar( const SnackBar(content: Text('Kein Download Path vorhanden')), @@ -1270,12 +1291,7 @@ class _SeriesListScreenState extends ConsumerState { final messenger = ScaffoldMessenger.of(context); final dp = downloadPath; if (dp != null && dp.isNotEmpty) { - final ok = await openFolder(dp); - if (!ok) { - messenger.showSnackBar( - const SnackBar(content: Text('Pfad kann nicht geöffnet werden')), - ); - } + await openDownloadPath(context, dp); } else { messenger.showSnackBar( const SnackBar(content: Text('Kein Download Path vorhanden')), @@ -1608,14 +1624,11 @@ extension _SeriesContextMenu on SeriesListScreen { } } - Future openDownload() async { +Future openDownload() async { final messenger = ScaffoldMessenger.of(context); final dp = downloadPath; if (dp != null && dp.isNotEmpty) { - final ok = await openFolder(dp); - if (!ok) { - messenger.showSnackBar(const SnackBar(content: Text('Pfad kann nicht geöffnet werden'))); - } + await openDownloadPath(context, dp); } else { messenger.showSnackBar(const SnackBar(content: Text('Kein Download Path vorhanden'))); }