From 5c6cb770a8c94fe54c09a661aabd8e50b711ff7e Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 28 Jan 2025 21:07:02 +0600 Subject: [PATCH] chore: fix where loading images not working --- .../presentation_state.dart | 58 ++++++++++++------- lib/modules/home/sections/genres/genres.dart | 27 --------- lib/pages/library/user_artists.dart | 2 +- lib/pages/playlist/liked_playlist.dart | 2 +- 4 files changed, 39 insertions(+), 50 deletions(-) diff --git a/lib/components/track_presentation/presentation_state.dart b/lib/components/track_presentation/presentation_state.dart index 2ae0b451..d3428861 100644 --- a/lib/components/track_presentation/presentation_state.dart +++ b/lib/components/track_presentation/presentation_state.dart @@ -34,25 +34,38 @@ class PresentationStateNotifier extends AutoDisposeFamilyNotifier { @override PresentationState build(collection) { - final isPlaylist = arg is PlaylistSimple; - - if ((isPlaylist && (arg as PlaylistSimple).id != "user-liked-tracks") || - arg is AlbumSimple) { - ref.listen( - isPlaylist - ? playlistTracksProvider((arg as PlaylistSimple).id!) - : albumTracksProvider((arg as AlbumSimple)), - (previous, next) { - next.whenData((value) { - state = state.copyWith( - presentationTracks: ServiceUtils.sortTracks( - value.items, - state.sortBy, - ), - ); - }); - }, - ); + if (arg case PlaylistSimple() || AlbumSimple()) { + if (isSavedTrackPlaylist) { + ref.listen( + likedTracksProvider, + (previous, next) { + next.whenData((value) { + state = state.copyWith( + presentationTracks: ServiceUtils.sortTracks( + value, + state.sortBy, + ), + ); + }); + }, + ); + } else { + ref.listen( + arg is PlaylistSimple + ? playlistTracksProvider((arg as PlaylistSimple).id!) + : albumTracksProvider((arg as AlbumSimple)), + (previous, next) { + next.whenData((value) { + state = state.copyWith( + presentationTracks: ServiceUtils.sortTracks( + value.items, + state.sortBy, + ), + ); + }); + }, + ); + } } return PresentationState( @@ -62,6 +75,10 @@ class PresentationStateNotifier ); } + bool get isSavedTrackPlaylist => + arg is PlaylistSimple && + (arg as PlaylistSimple).id == "user-liked-tracks"; + List get tracks { assert( arg is PlaylistSimple || arg is AlbumSimple, @@ -69,8 +86,7 @@ class PresentationStateNotifier ); final isPlaylist = arg is PlaylistSimple; - final isSavedTrackPlaylist = - isPlaylist && (arg as PlaylistSimple).id == "user-liked-tracks"; + final tracks = switch ((isPlaylist, isSavedTrackPlaylist)) { (true, true) => ref.read(likedTracksProvider).asData?.value, (true, false) => ref diff --git a/lib/modules/home/sections/genres/genres.dart b/lib/modules/home/sections/genres/genres.dart index 881003aa..64a6be1c 100644 --- a/lib/modules/home/sections/genres/genres.dart +++ b/lib/modules/home/sections/genres/genres.dart @@ -1,5 +1,3 @@ -import 'dart:async'; - import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -35,29 +33,6 @@ class HomeGenresSection extends HookConsumerWidget { [categoriesQuery.asData?.value], ); final controller = useMemoized(() => CarouselController(), []); - final interactedRef = useRef(false); - - useEffect(() { - int times = 0; - final timer = Timer.periodic( - const Duration(seconds: 5), - (timer) { - if (times > 5 || interactedRef.value) { - timer.cancel(); - return; - } - controller.animateNext( - const Duration(seconds: 2), - ); - times++; - }, - ); - - return () { - timer.cancel(); - controller.dispose(); - }; - }, []); return SliverList.list( children: [ @@ -123,7 +98,6 @@ class HomeGenresSection extends HookConsumerWidget { controller.animatePrevious( const Duration(seconds: 1), ); - interactedRef.value = true; }, ), ), @@ -144,7 +118,6 @@ class HomeGenresSection extends HookConsumerWidget { controller.animateNext( const Duration(seconds: 1), ); - interactedRef.value = true; }, ), ), diff --git a/lib/pages/library/user_artists.dart b/lib/pages/library/user_artists.dart index aacf4102..6ce715ad 100644 --- a/lib/pages/library/user_artists.dart +++ b/lib/pages/library/user_artists.dart @@ -82,7 +82,7 @@ class UserArtistsPage extends HookConsumerWidget { ), ), const SliverGap(10), - if (filteredArtists.isNotEmpty) + if (filteredArtists.isNotEmpty || artistQuery.isLoading) SliverLayoutBuilder(builder: (context, constrains) { return SliverGrid.builder( itemCount: filteredArtists.length + 1, diff --git a/lib/pages/playlist/liked_playlist.dart b/lib/pages/playlist/liked_playlist.dart index 3b4455d5..95107a8c 100644 --- a/lib/pages/playlist/liked_playlist.dart +++ b/lib/pages/playlist/liked_playlist.dart @@ -26,7 +26,7 @@ class LikedPlaylistPage extends HookConsumerWidget { image: "assets/liked-tracks.jpg", pagination: PaginationProps( hasNextPage: false, - isLoading: false, + isLoading: likedTracks.isLoading, onFetchMore: () {}, onFetchAll: () async { return tracks.toList();