refactor: update chapter handling to use IDs instead of objects in reader views
This commit is contained in:
parent
e139dc3247
commit
e901ef6281
5 changed files with 34 additions and 34 deletions
|
|
@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart' as riv;
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/video.dart' as vid;
|
||||
import 'package:mangayomi/modules/anime/providers/anime_player_controller_provider.dart';
|
||||
|
|
@ -32,14 +33,15 @@ import 'package:path/path.dart' as path;
|
|||
bool _isDesktop = Platform.isMacOS || Platform.isLinux || Platform.isWindows;
|
||||
|
||||
class AnimePlayerView extends riv.ConsumerStatefulWidget {
|
||||
final Chapter episode;
|
||||
const AnimePlayerView({super.key, required this.episode});
|
||||
final int episodeId;
|
||||
const AnimePlayerView({super.key, required this.episodeId});
|
||||
|
||||
@override
|
||||
riv.ConsumerState<AnimePlayerView> createState() => _AnimePlayerViewState();
|
||||
}
|
||||
|
||||
class _AnimePlayerViewState extends riv.ConsumerState<AnimePlayerView> {
|
||||
late final Chapter episode = isar.chapters.getSync(widget.episodeId)!;
|
||||
List<String> _infoHashList = [];
|
||||
bool desktopFullScreenPlayer = false;
|
||||
@override
|
||||
|
|
@ -65,15 +67,13 @@ class _AnimePlayerViewState extends riv.ConsumerState<AnimePlayerView> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final serversData =
|
||||
ref.watch(getVideoListProvider(episode: widget.episode));
|
||||
final serversData = ref.watch(getVideoListProvider(episode: episode));
|
||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive);
|
||||
return serversData.when(
|
||||
data: (data) {
|
||||
final (videos, isLocal, infoHashList) = data;
|
||||
_infoHashList = infoHashList;
|
||||
if (videos.isEmpty &&
|
||||
!(widget.episode.manga.value!.isLocalArchive ?? false)) {
|
||||
if (videos.isEmpty && !(episode.manga.value!.isLocalArchive ?? false)) {
|
||||
return Scaffold(
|
||||
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
|
||||
appBar: AppBar(
|
||||
|
|
@ -91,7 +91,7 @@ class _AnimePlayerViewState extends riv.ConsumerState<AnimePlayerView> {
|
|||
}
|
||||
|
||||
return AnimeStreamPage(
|
||||
episode: widget.episode,
|
||||
episode: episode,
|
||||
videos: videos,
|
||||
isLocal: isLocal,
|
||||
isTorrent: infoHashList.isNotEmpty,
|
||||
|
|
|
|||
|
|
@ -26,13 +26,13 @@ Future<void> pushMangaReaderView({
|
|||
if (sourceExist || chapter.manga.value!.isLocalArchive!) {
|
||||
switch (chapter.manga.value!.itemType) {
|
||||
case ItemType.manga:
|
||||
await context.push('/mangaReaderView', extra: chapter);
|
||||
await context.push('/mangaReaderView', extra: chapter.id!);
|
||||
break;
|
||||
case ItemType.anime:
|
||||
await context.push('/animePlayerView', extra: chapter);
|
||||
await context.push('/animePlayerView', extra: chapter.id!);
|
||||
break;
|
||||
case ItemType.novel:
|
||||
await context.push('/novelReaderView', extra: chapter);
|
||||
await context.push('/novelReaderView', extra: chapter.id!);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -42,13 +42,13 @@ void pushReplacementMangaReaderView(
|
|||
{required BuildContext context, required Chapter chapter}) {
|
||||
switch (chapter.manga.value!.itemType) {
|
||||
case ItemType.manga:
|
||||
context.pushReplacement('/mangaReaderView', extra: chapter);
|
||||
context.pushReplacement('/mangaReaderView', extra: chapter.id!);
|
||||
break;
|
||||
case ItemType.anime:
|
||||
context.pushReplacement('/animePlayerView', extra: chapter);
|
||||
context.pushReplacement('/animePlayerView', extra: chapter.id!);
|
||||
break;
|
||||
case ItemType.novel:
|
||||
context.pushReplacement('/novelReaderView', extra: chapter);
|
||||
context.pushReplacement('/novelReaderView', extra: chapter.id!);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,12 +48,12 @@ import 'package:path/path.dart' as p;
|
|||
typedef DoubleClickAnimationListener = void Function();
|
||||
|
||||
class MangaReaderView extends ConsumerWidget {
|
||||
final Chapter chapter;
|
||||
const MangaReaderView({
|
||||
final int chapterId;
|
||||
MangaReaderView({
|
||||
super.key,
|
||||
required this.chapter,
|
||||
required this.chapterId,
|
||||
});
|
||||
|
||||
late final Chapter chapter = isar.chapters.getSync(chapterId)!;
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final chapterData = ref.watch(getChapterPagesProvider(
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import 'package:flutter/services.dart';
|
|||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/page.dart';
|
||||
import 'package:mangayomi/models/settings.dart';
|
||||
|
|
@ -28,12 +29,12 @@ import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
|
|||
typedef DoubleClickAnimationListener = void Function();
|
||||
|
||||
class NovelReaderView extends ConsumerWidget {
|
||||
final Chapter chapter;
|
||||
const NovelReaderView({
|
||||
final int chapterId;
|
||||
NovelReaderView({
|
||||
super.key,
|
||||
required this.chapter,
|
||||
required this.chapterId,
|
||||
});
|
||||
|
||||
late final Chapter chapter = isar.chapters.getSync(chapterId)!;
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final htmlContent = ref.watch(getHtmlContentProvider(chapter: chapter));
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import 'dart:io';
|
|||
import 'package:bot_toast/bot_toast.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/models/track_preference.dart';
|
||||
|
|
@ -203,17 +202,17 @@ class RouterNotifier extends ChangeNotifier {
|
|||
path: "/mangaReaderView",
|
||||
name: "mangaReaderView",
|
||||
builder: (context, state) {
|
||||
final chapter = state.extra as Chapter;
|
||||
final chapterId = state.extra as int;
|
||||
return MangaReaderView(
|
||||
chapter: chapter,
|
||||
chapterId: chapterId,
|
||||
);
|
||||
},
|
||||
pageBuilder: (context, state) {
|
||||
final chapter = state.extra as Chapter;
|
||||
final chapterId = state.extra as int;
|
||||
return transitionPage(
|
||||
key: state.pageKey,
|
||||
child: MangaReaderView(
|
||||
chapter: chapter,
|
||||
chapterId: chapterId,
|
||||
),
|
||||
);
|
||||
},
|
||||
|
|
@ -222,17 +221,17 @@ class RouterNotifier extends ChangeNotifier {
|
|||
path: "/animePlayerView",
|
||||
name: "animePlayerView",
|
||||
builder: (context, state) {
|
||||
final episode = state.extra as Chapter;
|
||||
final episodeId = state.extra as int;
|
||||
return AnimePlayerView(
|
||||
episode: episode,
|
||||
episodeId: episodeId,
|
||||
);
|
||||
},
|
||||
pageBuilder: (context, state) {
|
||||
final episode = state.extra as Chapter;
|
||||
final episodeId = state.extra as int;
|
||||
return transitionPage(
|
||||
key: state.pageKey,
|
||||
child: AnimePlayerView(
|
||||
episode: episode,
|
||||
episodeId: episodeId,
|
||||
),
|
||||
);
|
||||
},
|
||||
|
|
@ -241,17 +240,17 @@ class RouterNotifier extends ChangeNotifier {
|
|||
path: "/novelReaderView",
|
||||
name: "novelReaderView",
|
||||
builder: (context, state) {
|
||||
final chapter = state.extra as Chapter;
|
||||
final chapterId = state.extra as int;
|
||||
return NovelReaderView(
|
||||
chapter: chapter,
|
||||
chapterId: chapterId,
|
||||
);
|
||||
},
|
||||
pageBuilder: (context, state) {
|
||||
final chapter = state.extra as Chapter;
|
||||
final chapterId = state.extra as int;
|
||||
return transitionPage(
|
||||
key: state.pageKey,
|
||||
child: NovelReaderView(
|
||||
chapter: chapter,
|
||||
chapterId: chapterId,
|
||||
),
|
||||
);
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in a new issue