diff --git a/lib/modules/library/library_screen.dart b/lib/modules/library/library_screen.dart index f1ba0a16..9bf695fc 100644 --- a/lib/modules/library/library_screen.dart +++ b/lib/modules/library/library_screen.dart @@ -518,6 +518,11 @@ class _LibraryScreenState extends ConsumerState mangaIds: mangaIds) .notifier) .set(); + ref.invalidate( + getAllMangaWithoutCategoriesStreamProvider( + isManga: widget.isManga)); + ref.invalidate(getAllMangaStreamProvider( + categoryId: null, isManga: widget.isManga)); }, child: Icon( Icons.done_all_sharp, @@ -540,6 +545,11 @@ class _LibraryScreenState extends ConsumerState mangaIds: mangaIds) .notifier) .set(); + ref.invalidate( + getAllMangaWithoutCategoriesStreamProvider( + isManga: widget.isManga)); + ref.invalidate(getAllMangaStreamProvider( + categoryId: null, isManga: widget.isManga)); }, child: Icon( Icons.remove_done_sharp, @@ -925,7 +935,7 @@ class _LibraryScreenState extends ConsumerState return mangas; } - _openCategory() { + void _openCategory() { List categoryIds = []; showDialog( context: context, @@ -1067,7 +1077,7 @@ class _LibraryScreenState extends ConsumerState }); } - _deleteManga() { + void _deleteManga() { List fromLibList = []; List downloadedChapsList = []; showDialog( @@ -1221,7 +1231,7 @@ class _LibraryScreenState extends ConsumerState }); } - _showDraggableMenu(Settings settings) { + void _showDraggableMenu(Settings settings) { final l10n = l10nLocalizations(context)!; customDraggableTabBar(tabs: [ Tab(text: l10n.filter), diff --git a/lib/modules/library/providers/library_state_provider.dart b/lib/modules/library/providers/library_state_provider.dart index 96bc8052..06ef5069 100644 --- a/lib/modules/library/providers/library_state_provider.dart +++ b/lib/modules/library/providers/library_state_provider.dart @@ -485,9 +485,9 @@ class LibraryLocalSourceState extends _$LibraryLocalSourceState { void set(bool value) { Settings appSettings = Settings(); if (isManga) { - appSettings = settings..libraryShowLanguage = value; + appSettings = settings..libraryLocalSource = value; } else { - appSettings = settings..animeLibraryShowLanguage = value; + appSettings = settings..animeLibraryLocalSource = value; } state = value; isar.writeTxnSync(() { diff --git a/lib/modules/library/widgets/library_gridview_widget.dart b/lib/modules/library/widgets/library_gridview_widget.dart index 611b0ac4..ea182fab 100644 --- a/lib/modules/library/widgets/library_gridview_widget.dart +++ b/lib/modules/library/widgets/library_gridview_widget.dart @@ -5,6 +5,7 @@ import 'package:isar/isar.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/download.dart'; import 'package:mangayomi/modules/history/providers/isar_providers.dart'; +import 'package:mangayomi/modules/library/providers/isar_providers.dart'; import 'package:mangayomi/modules/library/providers/library_state_provider.dart'; import 'package:mangayomi/modules/manga/reader/providers/push_router.dart'; import 'package:mangayomi/models/manga.dart'; @@ -85,16 +86,20 @@ class _LibraryGridViewWidgetState extends State { : ref.watch(headersProvider( source: entry.source!, lang: entry.lang!)), ), - onTap: () { + onTap: () async { if (isLongPressed) { ref.read(mangasListStateProvider.notifier).update(entry); } else { - pushToMangaReaderDetail( + await pushToMangaReaderDetail( archiveId: isLocalArchive ? entry.id : null, context: context, lang: entry.lang!, mangaM: entry, source: entry.source!); + ref.invalidate(getAllMangaWithoutCategoriesStreamProvider( + isManga: widget.isManga)); + ref.invalidate(getAllMangaStreamProvider( + categoryId: null, isManga: widget.isManga)); } }, onLongPress: () { @@ -134,7 +139,7 @@ class _LibraryGridViewWidgetState extends State { ), child: Row( children: [ - if (widget.localSource || isLocalArchive) + if (widget.localSource && isLocalArchive) Container( decoration: BoxDecoration( borderRadius: const BorderRadius.only( @@ -142,12 +147,14 @@ class _LibraryGridViewWidgetState extends State { bottomLeft: Radius.circular(3)), color: Theme.of(context).hintColor, ), - child: const Padding( - padding: - EdgeInsets.only(left: 3, right: 3), + child: Padding( + padding: const EdgeInsets.only( + left: 3, right: 3), child: Text( "Local", - style: TextStyle(color: Colors.white), + style: TextStyle( + color: context + .dynamicBlackWhiteColor), ), ), ), @@ -205,7 +212,8 @@ class _LibraryGridViewWidgetState extends State { ), ), Padding( - padding: const EdgeInsets.only(left: 3), + padding: const EdgeInsets.only( + left: 3), child: Text( entry.chapters .where((element) => diff --git a/lib/modules/library/widgets/library_listview_widget.dart b/lib/modules/library/widgets/library_listview_widget.dart index 2a062ce8..a712f473 100644 --- a/lib/modules/library/widgets/library_listview_widget.dart +++ b/lib/modules/library/widgets/library_listview_widget.dart @@ -5,6 +5,7 @@ import 'package:isar/isar.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/download.dart'; import 'package:mangayomi/modules/history/providers/isar_providers.dart'; +import 'package:mangayomi/modules/library/providers/isar_providers.dart'; import 'package:mangayomi/modules/library/providers/library_state_provider.dart'; import 'package:mangayomi/modules/manga/reader/providers/push_router.dart'; import 'package:mangayomi/models/manga.dart'; @@ -48,16 +49,20 @@ class LibraryListViewWidget extends StatelessWidget { color: Colors.transparent, clipBehavior: Clip.antiAliasWithSaveLayer, child: InkWell( - onTap: () { + onTap: () async { if (isLongPressed) { ref.read(mangasListStateProvider.notifier).update(entry); } else { - pushToMangaReaderDetail( + await pushToMangaReaderDetail( archiveId: isLocalArchive ? entry.id : null, context: context, lang: entry.lang!, mangaM: entry, source: entry.source!); + ref.invalidate(getAllMangaWithoutCategoriesStreamProvider( + isManga: entry.isManga)); + ref.invalidate(getAllMangaStreamProvider( + categoryId: null, isManga: entry.isManga)); } }, onLongPress: () { diff --git a/lib/modules/main_view/main_screen.dart b/lib/modules/main_view/main_screen.dart index bd3dc3e6..1b0cff4b 100644 --- a/lib/modules/main_view/main_screen.dart +++ b/lib/modules/main_view/main_screen.dart @@ -6,6 +6,7 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:isar/isar.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/source.dart'; +import 'package:mangayomi/modules/widgets/loading_icon.dart'; import 'package:mangayomi/services/fetch_anime_sources.dart'; import 'package:mangayomi/services/fetch_manga_sources.dart'; import 'package:mangayomi/modules/main_view/providers/migration.dart'; @@ -268,29 +269,9 @@ class MainScreen extends ConsumerWidget { ); }); }, error: (error, _) { - return Scaffold( - backgroundColor: Colors.white, - body: Center( - child: Image.asset( - "assets/app_icons/icon.png", - color: Colors.black, - fit: BoxFit.cover, - height: 100, - ), - ), - ); + return const LoadingIcon(); }, loading: () { - return Scaffold( - backgroundColor: Colors.white, - body: Center( - child: Image.asset( - "assets/app_icons/icon.png", - color: Colors.black, - fit: BoxFit.cover, - height: 100, - ), - ), - ); + return const LoadingIcon(); }); } } diff --git a/lib/modules/widgets/loading_icon.dart b/lib/modules/widgets/loading_icon.dart new file mode 100644 index 00000000..0d26ca8f --- /dev/null +++ b/lib/modules/widgets/loading_icon.dart @@ -0,0 +1,20 @@ +import 'package:flutter/material.dart'; + +class LoadingIcon extends StatelessWidget { + const LoadingIcon({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.white, + body: Center( + child: Image.asset( + "assets/app_icons/icon.png", + color: Colors.black, + fit: BoxFit.cover, + height: 100, + ), + ), + ); + } +} diff --git a/lib/modules/widgets/manga_image_card_widget.dart b/lib/modules/widgets/manga_image_card_widget.dart index 2084bc12..5c7f98ef 100644 --- a/lib/modules/widgets/manga_image_card_widget.dart +++ b/lib/modules/widgets/manga_image_card_widget.dart @@ -245,7 +245,7 @@ class MangaImageCardListTileWidget extends ConsumerWidget { } } -void pushToMangaReaderDetail( +Future pushToMangaReaderDetail( {MManga? getManga, required String lang, required BuildContext context, @@ -254,7 +254,7 @@ void pushToMangaReaderDetail( Manga? mangaM, bool? isManga, bool useMaterialRoute = false, - bool addToFavourite = false}) { + bool addToFavourite = false}) async { int? mangaId; if (archiveId == null) { final manga = mangaM ?? @@ -333,14 +333,14 @@ void pushToMangaReaderDetail( } if (!addToFavourite) { if (useMaterialRoute) { - Navigator.push( + await Navigator.push( context, createRoute( page: MangaReaderDetail( mangaId: mangaId, ))); } else { - context.push('/manga-reader/detail', extra: mangaId); + await context.push('/manga-reader/detail', extra: mangaId); } } else { final getManga = isar.mangas.filter().idEqualTo(mangaId).findFirstSync()!;