diff --git a/lib/settings/settings_screen.dart b/lib/settings/settings_screen.dart index f6cc465..362bcc6 100644 --- a/lib/settings/settings_screen.dart +++ b/lib/settings/settings_screen.dart @@ -3,6 +3,7 @@ import 'package:provider/provider.dart'; import '../library/database.dart'; import '../library/permissions.dart'; +import '../services/cache_manager.dart'; import '../services/navidrome_service.dart'; import '../services/offline_mode.dart'; import 'library_stats.dart'; @@ -17,11 +18,19 @@ class SettingsScreen extends StatefulWidget { class _SettingsScreenState extends State { late final NavidromeService _navidrome = NavidromeService(); + late final CacheManager _cache = CacheManager(); + int _cacheSize = 0; @override void initState() { super.initState(); _navidrome.ladeGespeicherteZugangsdaten(); + _cache.init().then((_) => _updateCacheSize()); + } + + Future _updateCacheSize() async { + final size = await _cache.getCacheSize(); + if (mounted) setState(() => _cacheSize = size); } @override @@ -82,6 +91,18 @@ class _SettingsScreenState extends State { }, ), ), + ListTile( + leading: const Icon(Icons.storage), + title: const Text('🗄️ Cache-Speicher'), + subtitle: Text(_formatBytes(_cacheSize)), + trailing: _cacheSize > 0 + ? IconButton( + tooltip: 'Cache löschen', + icon: const Icon(Icons.delete), + onPressed: () => _clearCache(), + ) + : null, + ), const Divider(height: 1), const _SectionLabel('Berechtigungen'), ListTile( @@ -210,6 +231,22 @@ class _SettingsScreenState extends State { await _navidrome.loescheZugangsdaten(); if (mounted) setState(() {}); } + + Future _clearCache() async { + await _cache.clearCache(); + if (mounted) { + setState(() => _cacheSize = 0); + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Cache gelöscht')), + ); + } + } + + String _formatBytes(int bytes) { + if (bytes < 1024) return '$bytes B'; + if (bytes < 1024 * 1024) return '${(bytes / 1024).toStringAsFixed(1)} KB'; + return '${(bytes / (1024 * 1024)).toStringAsFixed(1)} MB'; + } } /// Kleine graue Überschrift über einer Einstellungs-Gruppe.