mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-09 07:28:14 -07:00
fix: Library screen causing server to go down because of api calls (#602)
This commit is contained in:
parent
a4ec2637fc
commit
ed3d51bfed
3 changed files with 90 additions and 78 deletions
|
|
@ -45,6 +45,11 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen> with SingleTicker
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ref.listen(libraryScreenProvider, (previous, next) {
|
||||
if ((previous?.viewType.length ?? 0) < next.viewType.length) {
|
||||
refreshKey?.currentState?.show();
|
||||
}
|
||||
});
|
||||
final libraryScreenState = ref.watch(libraryScreenProvider);
|
||||
final views = libraryScreenState.views;
|
||||
final recommendations = libraryScreenState.recommendations;
|
||||
|
|
@ -133,9 +138,7 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen> with SingleTicker
|
|||
)))
|
||||
.toList(),
|
||||
selectedValues: viewTypes,
|
||||
onSelected: (value) {
|
||||
ref.read(libraryScreenProvider.notifier).setViewType(value);
|
||||
},
|
||||
onSelected: (value) => ref.read(libraryScreenProvider.notifier).setViewType(value),
|
||||
),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 4.0),
|
||||
|
|
@ -155,74 +158,71 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen> with SingleTicker
|
|||
SliverFillRemaining(
|
||||
child: Center(child: Text(context.localized.noResults)),
|
||||
),
|
||||
if (viewTypes.contains(LibraryViewType.recommended)) ...[
|
||||
if (recommendations.isNotEmpty)
|
||||
...recommendations.where((element) => element.posters.isNotEmpty).map(
|
||||
(element) {
|
||||
return SliverToBoxAdapter(
|
||||
if (viewTypes.contains(LibraryViewType.recommended) && recommendations.isNotEmpty) ...[
|
||||
...recommendations.where((element) => element.posters.isNotEmpty).map(
|
||||
(element) {
|
||||
return SliverToBoxAdapter(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: PosterRow(
|
||||
contentPadding: padding,
|
||||
posters: element.posters,
|
||||
primaryPosters: element.name is Resume,
|
||||
label: element.type != null
|
||||
? "${element.type?.label(context)} - ${element.name.label(context)}"
|
||||
: element.name.label(context),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
if (viewTypes.contains(LibraryViewType.favourites) && favourites.isNotEmpty)
|
||||
SliverToBoxAdapter(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: PosterRow(
|
||||
contentPadding: padding,
|
||||
onLabelClick: () => context.pushRoute(
|
||||
LibrarySearchRoute(
|
||||
viewModelId: libraryScreenState.selectedViewModel?.id ?? "",
|
||||
).withFilter(
|
||||
const LibraryFilterModel(
|
||||
favourites: true,
|
||||
recursive: true,
|
||||
),
|
||||
),
|
||||
),
|
||||
posters: favourites,
|
||||
label: context.localized.favorites,
|
||||
),
|
||||
),
|
||||
),
|
||||
if (viewTypes.contains(LibraryViewType.genres) && genres.isNotEmpty) ...[
|
||||
...genres.where((element) => element.posters.isNotEmpty).map(
|
||||
(element) => SliverToBoxAdapter(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: PosterRow(
|
||||
contentPadding: padding,
|
||||
posters: element.posters,
|
||||
primaryPosters: element.name is Resume,
|
||||
onLabelClick: () => context.pushRoute(
|
||||
LibrarySearchRoute(
|
||||
viewModelId: libraryScreenState.selectedViewModel?.id ?? "",
|
||||
).withFilter(
|
||||
LibraryFilterModel(
|
||||
recursive: true,
|
||||
genres: {(element.name as Other).customLabel: true},
|
||||
),
|
||||
),
|
||||
),
|
||||
label: element.type != null
|
||||
? "${element.type?.label(context)} - ${element.name.label(context)}"
|
||||
: element.name.label(context),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
if (viewTypes.contains(LibraryViewType.favourites))
|
||||
if (favourites.isNotEmpty)
|
||||
SliverToBoxAdapter(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: PosterRow(
|
||||
contentPadding: padding,
|
||||
onLabelClick: () => context.pushRoute(
|
||||
LibrarySearchRoute(
|
||||
viewModelId: libraryScreenState.selectedViewModel?.id ?? "",
|
||||
).withFilter(
|
||||
const LibraryFilterModel(
|
||||
favourites: true,
|
||||
recursive: true,
|
||||
),
|
||||
),
|
||||
),
|
||||
posters: favourites,
|
||||
label: context.localized.favorites,
|
||||
),
|
||||
),
|
||||
),
|
||||
if (viewTypes.contains(LibraryViewType.genres)) ...[
|
||||
if (genres.isNotEmpty)
|
||||
...genres.where((element) => element.posters.isNotEmpty).map(
|
||||
(element) => SliverToBoxAdapter(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: PosterRow(
|
||||
contentPadding: padding,
|
||||
posters: element.posters,
|
||||
onLabelClick: () => context.pushRoute(
|
||||
LibrarySearchRoute(
|
||||
viewModelId: libraryScreenState.selectedViewModel?.id ?? "",
|
||||
).withFilter(
|
||||
LibraryFilterModel(
|
||||
recursive: true,
|
||||
genres: {(element.name as Other).customLabel: true},
|
||||
),
|
||||
),
|
||||
),
|
||||
label: element.type != null
|
||||
? "${element.type?.label(context)} - ${element.name.label(context)}"
|
||||
: element.name.label(context),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
],
|
||||
const DefautlSliverBottomPadding(),
|
||||
],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue