mangayomi/lib/modules/more/settings/track/providers/track_providers.dart
2024-12-14 12:38:56 +02:00

58 lines
1.6 KiB
Dart

import 'package:isar/isar.dart';
import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/settings.dart';
import 'package:mangayomi/models/track.dart';
import 'package:mangayomi/models/track_preference.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'track_providers.g.dart';
@riverpod
class Tracks extends _$Tracks {
@override
TrackPreference? build({required int? syncId}) {
return isar.trackPreferences.getSync(syncId!);
}
void login(TrackPreference trackPreference) {
isar.writeTxnSync(() {
isar.trackPreferences.putSync(trackPreference);
});
}
void logout() {
isar.writeTxnSync(() {
isar.trackPreferences.deleteSync(syncId!);
});
}
void updateTrackManga(Track track, bool? isManga) {
final tra = isar.tracks.filter().syncIdEqualTo(syncId).mangaIdEqualTo(track.mangaId).findAllSync();
if (tra.isNotEmpty) {
if (tra.first.mediaId != track.mangaId) {
track.id = tra.first.id;
}
}
isar.writeTxnSync(() => isar.tracks.putSync(track
..syncId = syncId
..isManga = isManga));
}
void deleteTrackManga(Track track) {
isar.writeTxnSync(() => isar.tracks.deleteSync(track.id!));
}
}
@riverpod
class UpdateProgressAfterReadingState extends _$UpdateProgressAfterReadingState {
@override
bool build() {
return isar.settings.getSync(227)!.updateProgressAfterReading ?? true;
}
void set(bool value) {
final settings = isar.settings.getSync(227);
state = value;
isar.writeTxnSync(() => isar.settings.putSync(settings!..updateProgressAfterReading = value));
}
}