[Bugfix] Fixed refreshing details screens

This commit is contained in:
PartyDonut 2024-10-06 19:35:57 +02:00
parent 8bda03ee2c
commit aaa6a737cb
4 changed files with 10 additions and 13 deletions

View file

@ -98,7 +98,7 @@ class BookDetailsProviderNotifier extends StateNotifier<BookProviderModel> {
Future<Response?> fetchDetails(BookModel book) async { Future<Response?> fetchDetails(BookModel book) async {
state = state.copyWith( state = state.copyWith(
parentModel: () => book, parentModel: () => state.book ?? book,
); );
String bookId = state.book?.id ?? book.id; String bookId = state.book?.id ?? book.id;
@ -108,7 +108,7 @@ class BookDetailsProviderNotifier extends StateNotifier<BookProviderModel> {
final parentModel = parentResponse.bodyOrThrow; final parentModel = parentResponse.bodyOrThrow;
final getViews = await api.usersUserIdViewsGet(); final getViews = await api.usersUserIdViewsGet();
//Hacky solution more false positives so good enough for now. //Hacky solution for determining parent views
final parentIsView = final parentIsView =
getViews.body?.items?.firstWhereOrNull((element) => element.name == parentResponse.body?.name) != null; getViews.body?.items?.firstWhereOrNull((element) => element.name == parentResponse.body?.name) != null;

View file

@ -18,14 +18,15 @@ class MovieDetails extends _$MovieDetails {
Future<Response?> fetchDetails(ItemBaseModel item) async { Future<Response?> fetchDetails(ItemBaseModel item) async {
try { try {
if (item is MovieModel && state == null) { if (item is MovieModel) {
state = item; state = state ?? item;
} }
MovieModel? newState;
final response = await api.usersUserIdItemsItemIdGet(itemId: item.id); final response = await api.usersUserIdItemsItemIdGet(itemId: item.id);
if (response.body == null) return null; 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); final related = await ref.read(relatedUtilityProvider).relatedContent(item.id);
state = state?.copyWith(related: related.body); state = newState.copyWith(related: related.body);
return null; return null;
} catch (e) { } catch (e) {
_tryToCreateOfflineState(item); _tryToCreateOfflineState(item);

View file

@ -6,7 +6,7 @@ part of 'movies_details_provider.dart';
// RiverpodGenerator // RiverpodGenerator
// ************************************************************************** // **************************************************************************
String _$movieDetailsHash() => r'e5ab0af7fab9eb7a8ea50a873e8875bb572bd240'; String _$movieDetailsHash() => r'da07dcdb6e1955119df64f8a6a5634216435982c';
/// Copied from Dart SDK /// Copied from Dart SDK
class _SystemHash { class _SystemHash {

View file

@ -27,16 +27,12 @@ class SeriesDetailViewNotifier extends StateNotifier<SeriesModel?> {
Future<Response?> fetchDetails(ItemBaseModel seriesModel) async { Future<Response?> fetchDetails(ItemBaseModel seriesModel) async {
try { try {
if (seriesModel is SeriesModel) { if (seriesModel is SeriesModel) {
state = seriesModel; state = state ?? seriesModel;
} }
SeriesModel? newState; SeriesModel? newState;
final response = await api.usersUserIdItemsItemIdGet(itemId: seriesModel.id); final response = await api.usersUserIdItemsItemIdGet(itemId: seriesModel.id);
if (response.body == null) { if (response.body == null) return null;
state = seriesModel as SeriesModel;
return null;
}
newState = response.bodyOrThrow as SeriesModel; newState = response.bodyOrThrow as SeriesModel;
final seasons = await api.showsSeriesIdSeasonsGet(seriesId: seriesModel.id); final seasons = await api.showsSeriesIdSeasonsGet(seriesId: seriesModel.id);
newState = newState.copyWith(seasons: SeasonModel.seasonsFromDto(seasons.body?.items, ref)); newState = newState.copyWith(seasons: SeasonModel.seasonsFromDto(seasons.body?.items, ref));