refactor(navigation): reuse library icon mapping

This commit is contained in:
edde746
2026-07-12 08:42:20 +02:00
parent 967c25b11d
commit 18835d92dd
2 changed files with 13 additions and 19 deletions
+3 -19
View File
@@ -20,6 +20,7 @@ import '../providers/libraries_provider.dart';
import '../services/music/music_playback_service.dart';
import '../services/settings_service.dart';
import '../utils/music_navigation.dart';
import '../utils/content_utils.dart';
import '../utils/platform_detector.dart';
import '../utils/scroll_utils.dart';
import '../utils/library_grouping.dart';
@@ -592,23 +593,6 @@ class SideNavigationRailState extends State<SideNavigationRail> with MountedSetS
librariesProvider.refresh();
}
IconData _getLibraryIcon(String type) {
switch (type.toLowerCase()) {
case 'movie':
return Symbols.movie_rounded;
case 'show':
return Symbols.tv_rounded;
case 'artist':
return Symbols.music_note_rounded;
case 'photo':
return Symbols.photo_rounded;
case 'mixed':
return Symbols.share_rounded;
default:
return Symbols.folder_rounded;
}
}
/// Calculate top padding for macOS traffic lights
double _getTopPadding(BuildContext context) {
double basePadding = MediaQuery.paddingOf(context).top + 16;
@@ -1310,8 +1294,8 @@ class SideNavigationRailState extends State<SideNavigationRail> with MountedSetS
return Padding(
padding: const EdgeInsets.only(left: 12),
child: NavigationRailItem(
icon: _getLibraryIcon(library.kind.id),
selectedIcon: _getLibraryIcon(library.kind.id),
icon: ContentTypeHelper.getLibraryIcon(library.kind.id),
selectedIcon: ContentTypeHelper.getLibraryIcon(library.kind.id),
label: Column(
crossAxisAlignment: .start,
mainAxisSize: .min,
+10
View File
@@ -1,4 +1,5 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:material_symbols_icons/symbols.dart';
import 'package:plezy/media/media_backend.dart';
import 'package:plezy/media/media_item.dart';
import 'package:plezy/media/media_item_types.dart';
@@ -96,5 +97,14 @@ void main() {
test('isMusicLibrary returns false for null and non-matching types', () {
expect(ContentTypeHelper.isMusicLibrary(null), isFalse);
});
test('getLibraryIcon normalizes type and falls back to folder', () {
expect(ContentTypeHelper.getLibraryIcon('MOVIE'), Symbols.movie_rounded);
expect(ContentTypeHelper.getLibraryIcon('show'), Symbols.tv_rounded);
expect(ContentTypeHelper.getLibraryIcon('artist'), Symbols.music_note_rounded);
expect(ContentTypeHelper.getLibraryIcon('photo'), Symbols.photo_rounded);
expect(ContentTypeHelper.getLibraryIcon('mixed'), Symbols.share_rounded);
expect(ContentTypeHelper.getLibraryIcon('unknown'), Symbols.folder_rounded);
});
});
}