fix(metadata): support extension custom search

This commit is contained in:
zarzet
2026-07-30 15:36:31 +07:00
parent d85c8f6a17
commit 3e41aa0eee
6 changed files with 102 additions and 54 deletions
+31
View File
@@ -361,6 +361,20 @@ class SearchFilter {
}
}
String canonicalExtensionSearchFilterId(String value) {
final normalized = value.trim().toLowerCase().replaceAll(
RegExp(r'[^a-z0-9]+'),
'',
);
return switch (normalized) {
'track' || 'tracks' || 'song' || 'songs' || 'music' => 'track',
'artist' || 'artists' => 'artist',
'album' || 'albums' => 'album',
'playlist' || 'playlists' => 'playlist',
_ => normalized,
};
}
class SearchBehavior {
final bool enabled;
final String? placeholder;
@@ -399,6 +413,23 @@ class SearchBehavior {
);
}
String? filterIdForKind(String kind) {
final canonicalKind = canonicalExtensionSearchFilterId(kind);
for (final filter in filters) {
if (canonicalExtensionSearchFilterId(filter.id) == canonicalKind ||
(filter.label != null &&
canonicalExtensionSearchFilterId(filter.label!) ==
canonicalKind) ||
(filter.icon != null &&
canonicalExtensionSearchFilterId(filter.icon!) ==
canonicalKind)) {
final id = filter.id.trim();
if (id.isNotEmpty) return id;
}
}
return null;
}
(double, double) getThumbnailSize({double defaultSize = 56}) {
if (thumbnailWidth != null && thumbnailHeight != null) {
return (thumbnailWidth!.toDouble(), thumbnailHeight!.toDouble());