drawer: hide favourites tile if filter is hidden

This commit is contained in:
Thibault Deckers 2021-03-22 20:00:02 +09:00
parent 2a4722736b
commit a36bf739c7
6 changed files with 10 additions and 7 deletions

View file

@ -8,7 +8,9 @@ import 'package:flutter/widgets.dart';
class FavouriteFilter extends CollectionFilter {
static const type = 'favourite';
const FavouriteFilter();
static const instance = FavouriteFilter._private();
const FavouriteFilter._private();
@override
Map<String, dynamic> toMap() => {

View file

@ -31,7 +31,7 @@ abstract class CollectionFilter implements Comparable<CollectionFilter> {
case AlbumFilter.type:
return AlbumFilter.fromMap(jsonMap);
case FavouriteFilter.type:
return FavouriteFilter();
return FavouriteFilter.instance;
case LocationFilter.type:
return LocationFilter.fromMap(jsonMap);
case TypeFilter.type:

View file

@ -47,11 +47,12 @@ class _AppDrawerState extends State<AppDrawer> {
Widget build(BuildContext context) {
final hiddenFilters = settings.hiddenFilters;
final showVideos = !hiddenFilters.contains(MimeFilter.video);
final showFavourites = !hiddenFilters.contains(FavouriteFilter.instance);
final drawerItems = <Widget>[
_buildHeader(context),
allCollectionTile,
if (showVideos) videoTile,
favouriteTile,
if (showFavourites) favouriteTile,
_buildSpecialAlbumSection(),
Divider(),
albumListTile,
@ -161,7 +162,7 @@ class _AppDrawerState extends State<AppDrawer> {
Widget get favouriteTile => CollectionNavTile(
leading: Icon(AIcons.favourite),
title: context.l10n.drawerCollectionFavourites,
filter: FavouriteFilter(),
filter: FavouriteFilter.instance,
);
Widget get albumListTile => NavTile(

View file

@ -30,7 +30,7 @@ class CollectionSearchDelegate {
static const searchHistoryCount = 10;
static final typeFilters = [
FavouriteFilter(),
FavouriteFilter.instance,
MimeFilter.image,
MimeFilter.video,
TypeFilter.animated,

View file

@ -90,7 +90,7 @@ class BasicSection extends StatelessWidget {
builder: (context, child) {
final effectiveFilters = [
...filters,
if (entry.isFavourite) FavouriteFilter(),
if (entry.isFavourite) FavouriteFilter.instance,
]..sort();
if (effectiveFilters.isEmpty) return SizedBox.shrink();
return Padding(

View file

@ -15,7 +15,7 @@ void main() {
final album = AlbumFilter('path/to/album', 'album');
expect(album, jsonRoundTrip(album));
final fav = FavouriteFilter();
final fav = FavouriteFilter.instance;
expect(fav, jsonRoundTrip(fav));
final location = LocationFilter(LocationLevel.country, 'France${LocationFilter.locationSeparator}FR');