From aaa6a737cbda52c7a1c1dac4866e04cdedc48dc6 Mon Sep 17 00:00:00 2001 From: PartyDonut Date: Sun, 6 Oct 2024 19:35:57 +0200 Subject: [PATCH] [Bugfix] Fixed refreshing details screens --- lib/providers/items/book_details_provider.dart | 4 ++-- lib/providers/items/movies_details_provider.dart | 9 +++++---- lib/providers/items/movies_details_provider.g.dart | 2 +- lib/providers/items/series_details_provider.dart | 8 ++------ 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/lib/providers/items/book_details_provider.dart b/lib/providers/items/book_details_provider.dart index 9a50e42..05d5094 100644 --- a/lib/providers/items/book_details_provider.dart +++ b/lib/providers/items/book_details_provider.dart @@ -98,7 +98,7 @@ class BookDetailsProviderNotifier extends StateNotifier { Future fetchDetails(BookModel book) async { state = state.copyWith( - parentModel: () => book, + parentModel: () => state.book ?? book, ); String bookId = state.book?.id ?? book.id; @@ -108,7 +108,7 @@ class BookDetailsProviderNotifier extends StateNotifier { final parentModel = parentResponse.bodyOrThrow; final getViews = await api.usersUserIdViewsGet(); - //Hacky solution more false positives so good enough for now. + //Hacky solution for determining parent views final parentIsView = getViews.body?.items?.firstWhereOrNull((element) => element.name == parentResponse.body?.name) != null; diff --git a/lib/providers/items/movies_details_provider.dart b/lib/providers/items/movies_details_provider.dart index a0ad764..4b6e9c9 100644 --- a/lib/providers/items/movies_details_provider.dart +++ b/lib/providers/items/movies_details_provider.dart @@ -18,14 +18,15 @@ class MovieDetails extends _$MovieDetails { Future fetchDetails(ItemBaseModel item) async { try { - if (item is MovieModel && state == null) { - state = item; + if (item is MovieModel) { + state = state ?? item; } + MovieModel? newState; final response = await api.usersUserIdItemsItemIdGet(itemId: item.id); if (response.body == null) return null; - state = response.bodyOrThrow as MovieModel; + newState = (response.bodyOrThrow as MovieModel).copyWith(related: state?.related); final related = await ref.read(relatedUtilityProvider).relatedContent(item.id); - state = state?.copyWith(related: related.body); + state = newState.copyWith(related: related.body); return null; } catch (e) { _tryToCreateOfflineState(item); diff --git a/lib/providers/items/movies_details_provider.g.dart b/lib/providers/items/movies_details_provider.g.dart index 2a01ad7..2a04780 100644 --- a/lib/providers/items/movies_details_provider.g.dart +++ b/lib/providers/items/movies_details_provider.g.dart @@ -6,7 +6,7 @@ part of 'movies_details_provider.dart'; // RiverpodGenerator // ************************************************************************** -String _$movieDetailsHash() => r'e5ab0af7fab9eb7a8ea50a873e8875bb572bd240'; +String _$movieDetailsHash() => r'da07dcdb6e1955119df64f8a6a5634216435982c'; /// Copied from Dart SDK class _SystemHash { diff --git a/lib/providers/items/series_details_provider.dart b/lib/providers/items/series_details_provider.dart index 554161d..f39e25f 100644 --- a/lib/providers/items/series_details_provider.dart +++ b/lib/providers/items/series_details_provider.dart @@ -27,16 +27,12 @@ class SeriesDetailViewNotifier extends StateNotifier { Future fetchDetails(ItemBaseModel seriesModel) async { try { if (seriesModel is SeriesModel) { - state = seriesModel; + state = state ?? seriesModel; } SeriesModel? newState; final response = await api.usersUserIdItemsItemIdGet(itemId: seriesModel.id); - if (response.body == null) { - state = seriesModel as SeriesModel; - return null; - } + if (response.body == null) return null; newState = response.bodyOrThrow as SeriesModel; - final seasons = await api.showsSeriesIdSeasonsGet(seriesId: seriesModel.id); newState = newState.copyWith(seasons: SeasonModel.seasonsFromDto(seasons.body?.items, ref));