mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-04-20 02:32:05 +00:00
42 lines
1.4 KiB
Dart
42 lines
1.4 KiB
Dart
import 'package:isar/isar.dart';
|
|
import 'package:mangayomi/main.dart';
|
|
import 'package:mangayomi/models/chapter.dart';
|
|
import 'package:mangayomi/models/download.dart';
|
|
import 'package:mangayomi/models/manga.dart';
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
part 'statistics_provider.g.dart';
|
|
|
|
@riverpod
|
|
class StatisticsState extends _$StatisticsState {
|
|
@override
|
|
void build(ItemType itemType) {}
|
|
final items = isar.mangas
|
|
.filter()
|
|
.idIsNotNull()
|
|
.favoriteEqualTo(true)
|
|
.findAllSync();
|
|
final chapters = isar.chapters
|
|
.filter()
|
|
.idIsNotNull()
|
|
.manga((q) => q.favoriteEqualTo(true))
|
|
.findAllSync();
|
|
int get totalItems => items.where((i) => i.itemType == itemType).length;
|
|
int get totalChapters =>
|
|
chapters.where((i) => i.manga.value!.itemType == itemType).length;
|
|
int get readChapters => chapters
|
|
.where((i) => i.manga.value!.itemType == itemType && (i.isRead ?? false))
|
|
.length;
|
|
int get completedItems => items
|
|
.where((i) => i.itemType == itemType && (i.status == Status.completed))
|
|
.where((e) => e.chapters.every((element) => element.isRead ?? false))
|
|
.length;
|
|
|
|
int get downloadedItems => isar.downloads
|
|
.filter()
|
|
.idIsNotNull()
|
|
.chapter((q) => q.manga((m) => m.itemTypeEqualTo(itemType)))
|
|
.chapter((q) => q.manga((m) => m.favoriteEqualTo(true)))
|
|
.isDownloadEqualTo(true)
|
|
.findAllSync()
|
|
.length;
|
|
}
|