mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-01-11 22:40:36 +00:00
124 lines
3 KiB
Dart
124 lines
3 KiB
Dart
import 'package:isar/isar.dart';
|
|
import 'package:mangayomi/main.dart';
|
|
import 'package:mangayomi/models/chapter.dart';
|
|
import 'package:mangayomi/models/history.dart';
|
|
import 'package:mangayomi/models/manga.dart';
|
|
import 'package:mangayomi/models/settings.dart';
|
|
|
|
class AnimeStreamController {
|
|
final Chapter episode;
|
|
AnimeStreamController({required this.episode});
|
|
|
|
Manga getAnime() {
|
|
return episode.manga.value!;
|
|
}
|
|
|
|
Chapter geAnime() {
|
|
return episode;
|
|
}
|
|
|
|
final incognitoMode = isar.settings.getSync(227)!.incognitoMode!;
|
|
|
|
Settings getIsarSetting() {
|
|
return isar.settings.getSync(227)!;
|
|
}
|
|
|
|
int getPrevEpisodeIndex() {
|
|
final episodes = getAnime().chapters.toList();
|
|
int? index;
|
|
for (var i = 0; i < episodes.length; i++) {
|
|
if (episodes[i].id == episode.id) {
|
|
index = i + 1;
|
|
}
|
|
}
|
|
return index!;
|
|
}
|
|
|
|
int getNextEpisodeIndex() {
|
|
final episodes = getAnime().chapters.toList();
|
|
int? index;
|
|
for (var i = 0; i < episodes.length; i++) {
|
|
if (episodes[i].id == episode.id) {
|
|
index = i - 1;
|
|
}
|
|
}
|
|
return index!;
|
|
}
|
|
|
|
Chapter getPrevEpisode() {
|
|
return getAnime().chapters.toList()[getPrevEpisodeIndex()];
|
|
}
|
|
|
|
Chapter getNextEpisode() {
|
|
return getAnime().chapters.toList()[getNextEpisodeIndex()];
|
|
}
|
|
|
|
int getChaptersLength() {
|
|
return getAnime().chapters.length;
|
|
}
|
|
|
|
Duration geTCurrentPosition() {
|
|
if (!incognitoMode) {
|
|
String position = episode.lastPageRead ?? "0";
|
|
return Duration(
|
|
milliseconds: episode.isRead!
|
|
? 0
|
|
: int.parse(position.isEmpty ? "0" : position));
|
|
}
|
|
return Duration.zero;
|
|
}
|
|
|
|
void setAnimeHistoryUpdate() {
|
|
if (!incognitoMode) {
|
|
isar.writeTxnSync(() {
|
|
Manga? manga = episode.manga.value;
|
|
manga!.lastRead = DateTime.now().millisecondsSinceEpoch;
|
|
isar.mangas.putSync(manga);
|
|
});
|
|
History? history;
|
|
|
|
final empty =
|
|
isar.historys.filter().mangaIdEqualTo(getAnime().id).isEmptySync();
|
|
|
|
if (empty) {
|
|
history = History(
|
|
mangaId: getAnime().id,
|
|
date: DateTime.now().millisecondsSinceEpoch.toString())
|
|
..chapter.value = episode;
|
|
} else {
|
|
history = (isar.historys
|
|
.filter()
|
|
.mangaIdEqualTo(getAnime().id)
|
|
.findFirstSync())!
|
|
..chapter.value = episode
|
|
..date = DateTime.now().millisecondsSinceEpoch.toString();
|
|
}
|
|
isar.writeTxnSync(() {
|
|
isar.historys.putSync(history!);
|
|
history.chapter.saveSync();
|
|
});
|
|
}
|
|
}
|
|
|
|
void setCurrentPosition(int duration) {
|
|
if (!incognitoMode) {
|
|
final chap = episode;
|
|
isar.writeTxnSync(() {
|
|
chap.lastPageRead = (duration).toString();
|
|
isar.chapters.putSync(chap);
|
|
});
|
|
}
|
|
}
|
|
|
|
String getAnimeName() {
|
|
return getAnime().name!;
|
|
}
|
|
|
|
String getSourceName() {
|
|
return getAnime().source!;
|
|
}
|
|
|
|
String getChapterTitle() {
|
|
return episode.name!;
|
|
}
|
|
}
|