55 lines
1.6 KiB
Dart
55 lines
1.6 KiB
Dart
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:worldhopper/repositories/series_cover_page_repository.dart';
|
|
|
|
part 'cover_page_provider.g.dart';
|
|
|
|
/// Key for storing cover page preference in SharedPreferences
|
|
const String _coverPageKey = 'image_reader_first_page_is_cover';
|
|
|
|
/// Provider for "first page is cover" setting (global default)
|
|
@riverpod
|
|
class CoverPageNotifier extends _$CoverPageNotifier {
|
|
@override
|
|
bool build() {
|
|
_load();
|
|
return true; // Default: first page is cover
|
|
}
|
|
|
|
Future<void> _load() async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
final value = prefs.getBool(_coverPageKey);
|
|
if (value != null) {
|
|
state = value;
|
|
}
|
|
}
|
|
|
|
Future<void> setCoverPage(bool value) async {
|
|
state = value;
|
|
final prefs = await SharedPreferences.getInstance();
|
|
await prefs.setBool(_coverPageKey, value);
|
|
}
|
|
}
|
|
|
|
/// Provider for per-series cover page overrides.
|
|
/// Parameterized by seriesFeedUrl. Returns null when no override is set.
|
|
@riverpod
|
|
class SeriesCoverPageNotifier extends _$SeriesCoverPageNotifier {
|
|
@override
|
|
bool? build(String seriesFeedUrl) {
|
|
_load(seriesFeedUrl);
|
|
return null;
|
|
}
|
|
|
|
Future<void> _load(String seriesFeedUrl) async {
|
|
final repo = SeriesCoverPageRepository();
|
|
final value = await repo.getCoverPage(seriesFeedUrl);
|
|
state = value;
|
|
}
|
|
|
|
Future<void> setCoverPage(bool value) async {
|
|
state = value;
|
|
final repo = SeriesCoverPageRepository();
|
|
await repo.setCoverPage(seriesFeedUrl, value);
|
|
}
|
|
}
|