minor fix

This commit is contained in:
Thibault Deckers 2021-11-08 15:23:12 +09:00
parent f385f16209
commit 2d8d49a282
8 changed files with 36 additions and 32 deletions

View file

@ -31,29 +31,33 @@ abstract class CollectionFilter extends Equatable implements Comparable<Collecti
]; ];
static CollectionFilter? fromJson(String jsonString) { static CollectionFilter? fromJson(String jsonString) {
final jsonMap = jsonDecode(jsonString); try {
if (jsonMap is Map<String, dynamic>) { final jsonMap = jsonDecode(jsonString);
final type = jsonMap['type']; if (jsonMap is Map<String, dynamic>) {
switch (type) { final type = jsonMap['type'];
case AlbumFilter.type: switch (type) {
return AlbumFilter.fromMap(jsonMap); case AlbumFilter.type:
case CoordinateFilter.type: return AlbumFilter.fromMap(jsonMap);
return CoordinateFilter.fromMap(jsonMap); case CoordinateFilter.type:
case FavouriteFilter.type: return CoordinateFilter.fromMap(jsonMap);
return FavouriteFilter.instance; case FavouriteFilter.type:
case LocationFilter.type: return FavouriteFilter.instance;
return LocationFilter.fromMap(jsonMap); case LocationFilter.type:
case MimeFilter.type: return LocationFilter.fromMap(jsonMap);
return MimeFilter.fromMap(jsonMap); case MimeFilter.type:
case PathFilter.type: return MimeFilter.fromMap(jsonMap);
return PathFilter.fromMap(jsonMap); case PathFilter.type:
case QueryFilter.type: return PathFilter.fromMap(jsonMap);
return QueryFilter.fromMap(jsonMap); case QueryFilter.type:
case TagFilter.type: return QueryFilter.fromMap(jsonMap);
return TagFilter.fromMap(jsonMap); case TagFilter.type:
case TypeFilter.type: return TagFilter.fromMap(jsonMap);
return TypeFilter.fromMap(jsonMap); case TypeFilter.type:
return TypeFilter.fromMap(jsonMap);
}
} }
} catch (error, stack) {
debugPrint('failed to parse filter from json=$jsonString error=$error\n$stack');
} }
debugPrint('failed to parse filter from json=$jsonString'); debugPrint('failed to parse filter from json=$jsonString');
return null; return null;

View file

@ -37,7 +37,7 @@ class CollectionLens with ChangeNotifier {
CollectionLens({ CollectionLens({
required this.source, required this.source,
Iterable<CollectionFilter?>? filters, Set<CollectionFilter?>? filters,
this.id, this.id,
this.listenToSource = true, this.listenToSource = true,
this.fixedSelection, this.fixedSelection,

View file

@ -123,7 +123,7 @@ class _CoverSelectionDialogState extends State<CoverSelectionDialog> {
builder: (context) => ItemPickDialog( builder: (context) => ItemPickDialog(
collection: CollectionLens( collection: CollectionLens(
source: context.read<CollectionSource>(), source: context.read<CollectionSource>(),
filters: [filter], filters: {filter},
), ),
), ),
fullscreenDialog: true, fullscreenDialog: true,

View file

@ -50,7 +50,7 @@ class CollectionNavTile extends StatelessWidget {
builder: (context) => CollectionPage( builder: (context) => CollectionPage(
collection: CollectionLens( collection: CollectionLens(
source: context.read<CollectionSource>(), source: context.read<CollectionSource>(),
filters: [filter], filters: {filter},
), ),
), ),
), ),

View file

@ -70,7 +70,7 @@ class FilterNavigationPage<T extends CollectionFilter> extends StatelessWidget {
builder: (context) => CollectionPage( builder: (context) => CollectionPage(
collection: CollectionLens( collection: CollectionLens(
source: source, source: source,
filters: [filter], filters: {filter},
), ),
), ),
), ),

View file

@ -41,7 +41,7 @@ class HomePage extends StatefulWidget {
class _HomePageState extends State<HomePage> { class _HomePageState extends State<HomePage> {
AvesEntry? _viewerEntry; AvesEntry? _viewerEntry;
String? _shortcutRouteName, _shortcutSearchQuery; String? _shortcutRouteName, _shortcutSearchQuery;
List<String>? _shortcutFilters; Set<String>? _shortcutFilters;
static const allowedShortcutRoutes = [CollectionPage.routeName, AlbumListPage.routeName, SearchPage.routeName]; static const allowedShortcutRoutes = [CollectionPage.routeName, AlbumListPage.routeName, SearchPage.routeName];
@ -108,7 +108,7 @@ class _HomePageState extends State<HomePage> {
_shortcutRouteName = extraRoute; _shortcutRouteName = extraRoute;
} }
final extraFilters = intentData['filters']; final extraFilters = intentData['filters'];
_shortcutFilters = extraFilters != null ? (extraFilters as List).cast<String>() : null; _shortcutFilters = extraFilters != null ? (extraFilters as List).cast<String>().toSet() : null;
} }
} }
context.read<ValueNotifier<AppMode>>().value = appMode; context.read<ValueNotifier<AppMode>>().value = appMode;
@ -152,12 +152,12 @@ class _HomePageState extends State<HomePage> {
} }
String routeName; String routeName;
Iterable<CollectionFilter?>? filters; Set<CollectionFilter?>? filters;
if (appMode == AppMode.pickExternal) { if (appMode == AppMode.pickExternal) {
routeName = CollectionPage.routeName; routeName = CollectionPage.routeName;
} else { } else {
routeName = _shortcutRouteName ?? settings.homePage.routeName; routeName = _shortcutRouteName ?? settings.homePage.routeName;
filters = (_shortcutFilters ?? []).map(CollectionFilter.fromJson); filters = (_shortcutFilters ?? {}).map(CollectionFilter.fromJson).toSet();
} }
final source = context.read<CollectionSource>(); final source = context.read<CollectionSource>();
switch (routeName) { switch (routeName) {

View file

@ -259,7 +259,7 @@ class CollectionSearchDelegate {
builder: (context) => CollectionPage( builder: (context) => CollectionPage(
collection: CollectionLens( collection: CollectionLens(
source: source, source: source,
filters: [filter], filters: {filter},
), ),
), ),
), ),

View file

@ -295,7 +295,7 @@ class StatsPage extends StatelessWidget {
builder: (context) => CollectionPage( builder: (context) => CollectionPage(
collection: CollectionLens( collection: CollectionLens(
source: source, source: source,
filters: [filter], filters: {filter},
), ),
), ),
), ),