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 _load() async { final prefs = await SharedPreferences.getInstance(); final value = prefs.getBool(_coverPageKey); if (value != null) { state = value; } } Future 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 _load(String seriesFeedUrl) async { final repo = SeriesCoverPageRepository(); final value = await repo.getCoverPage(seriesFeedUrl); state = value; } Future setCoverPage(bool value) async { state = value; final repo = SeriesCoverPageRepository(); await repo.setCoverPage(seriesFeedUrl, value); } }