refactor(navigation): reuse library icon mapping
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user