From 2636d96ba59a105d9d9f7fca0aeddbd4d62648eb Mon Sep 17 00:00:00 2001 From: kodjodevf <107993382+kodjodevf@users.noreply.github.com> Date: Tue, 11 Apr 2023 10:49:28 +0100 Subject: [PATCH] riverpod generator for theme providers --- lib/main.dart | 10 ++--- lib/utils/headers.dart | 34 +++++++--------- .../settings/appearance/dark_mode_button.dart | 39 ++++--------------- .../flex_scheme_color_provider.dart | 36 ----------------- .../flex_scheme_color_state_provider.dart | 35 +++++++++++++++++ .../flex_scheme_color_state_provider.g.dart | 26 +++++++++++++ .../providers/theme_mode_state_provider.dart | 22 +++++++++++ .../theme_mode_state_provider.g.dart | 25 ++++++++++++ .../settings/appearance/theme_selector.dart | 8 ++-- .../appearance/thememode_provider.dart | 26 ------------- 10 files changed, 141 insertions(+), 120 deletions(-) delete mode 100644 lib/views/more/settings/appearance/flex_scheme_color_provider.dart create mode 100644 lib/views/more/settings/appearance/providers/flex_scheme_color_state_provider.dart create mode 100644 lib/views/more/settings/appearance/providers/flex_scheme_color_state_provider.g.dart create mode 100644 lib/views/more/settings/appearance/providers/theme_mode_state_provider.dart create mode 100644 lib/views/more/settings/appearance/providers/theme_mode_state_provider.g.dart delete mode 100644 lib/views/more/settings/appearance/thememode_provider.dart diff --git a/lib/main.dart b/lib/main.dart index 82a1516c..67d799a5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -9,8 +9,8 @@ import 'package:mangayomi/models/model_manga.dart'; import 'package:mangayomi/router/router.dart'; import 'package:mangayomi/source/source_model.dart'; import 'package:mangayomi/views/manga/reader/providers/reader_controller_provider.dart'; -import 'views/more/settings/appearance/flex_scheme_color_provider.dart'; -import 'views/more/settings/appearance/thememode_provider.dart'; +import 'views/more/settings/appearance/providers/flex_scheme_color_state_provider.dart'; +import 'views/more/settings/appearance/providers/theme_mode_state_provider.dart'; void main() async { await Hive.initFlutter(); @@ -36,7 +36,7 @@ class MyApp extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { ThemeData themeLight = FlexThemeData.light( - colors: ref.watch(flexSchemeColorProvider), + colors: ref.watch(flexSchemeColorStateProvider), surfaceMode: FlexSurfaceMode.highScaffoldLevelSurface, blendLevel: 10, appBarOpacity: 0.00, @@ -54,7 +54,7 @@ class MyApp extends ConsumerWidget { fontFamily: GoogleFonts.aBeeZee().fontFamily, ); ThemeData themeDark = FlexThemeData.dark( - colors: ref.watch(flexSchemeColorProvider), + colors: ref.watch(flexSchemeColorStateProvider), surfaceMode: FlexSurfaceMode.highScaffoldLevelSurface, blendLevel: 10, appBarOpacity: 0.00, @@ -73,7 +73,7 @@ class MyApp extends ConsumerWidget { ); final router = ref.watch(routerProvider); return MaterialApp.router( - theme: ref.watch(themeModeProvider) ? themeLight : themeDark, + theme: ref.watch(themeModeStateProvider) ? themeLight : themeDark, debugShowCheckedModeBanner: false, routeInformationParser: router.routeInformationParser, routerDelegate: router.routerDelegate, diff --git a/lib/utils/headers.dart b/lib/utils/headers.dart index 0c9bff03..b7f7a988 100644 --- a/lib/utils/headers.dart +++ b/lib/utils/headers.dart @@ -1,22 +1,18 @@ Map? headers(String source) { - return source == 'japscan' + return source == 'mangakawaii' ? { - 'referer': 'https://www.japscan.lol/', + 'Referer': 'https://www.mangakawaii.io/', + 'User-Agent': + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/8\$userAgentRandomizer1.0.4\$userAgentRandomizer3.1\$userAgentRandomizer2 Safari/537.36', + 'Accept-Language': 'fr' } - : source == 'mangakawaii' - ? { - 'Referer': 'https://www.mangakawaii.io/', - 'User-Agent': - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/8\$userAgentRandomizer1.0.4\$userAgentRandomizer3.1\$userAgentRandomizer2 Safari/537.36', - 'Accept-Language': 'fr' - } - : source == 'mangahere' - ? {"Referer": "https://www.mangahere.cc/", "Cookie": "isAdult=1"} - : source == 'comick' - ? { - 'Referer': 'https://comick.app/', - 'User-Agent': - 'Tachiyomi Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/8\\\$userAgentRandomizer1.0.4\\\$userAgentRandomizer3.1\\\$userAgentRandomizer2 Safari/537.36' - } - : {}; -} \ No newline at end of file + : source == 'mangahere' + ? {"Referer": "https://www.mangahere.cc/", "Cookie": "isAdult=1"} + : source == 'comick' + ? { + 'Referer': 'https://comick.app/', + 'User-Agent': + 'Tachiyomi Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/8\\\$userAgentRandomizer1.0.4\\\$userAgentRandomizer3.1\\\$userAgentRandomizer2 Safari/537.36' + } + : {}; +} diff --git a/lib/views/more/settings/appearance/dark_mode_button.dart b/lib/views/more/settings/appearance/dark_mode_button.dart index cb020f48..388c8352 100644 --- a/lib/views/more/settings/appearance/dark_mode_button.dart +++ b/lib/views/more/settings/appearance/dark_mode_button.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:mangayomi/views/more/settings/appearance/thememode_provider.dart'; +import 'package:mangayomi/views/more/settings/appearance/providers/theme_mode_state_provider.dart'; // import 'package:rive/rive.dart'; class DarkModeButton extends ConsumerStatefulWidget { @@ -13,50 +13,27 @@ class DarkModeButton extends ConsumerStatefulWidget { } class _DarkModeButtonState extends ConsumerState { - // SMIBool? _bump; - - // void _onRiveInit(Artboard artboard) { - // final controller = - // StateMachineController.fromArtboard(artboard, 'State Machine 1'); - // artboard.addController(controller!); - // _bump = controller.findInput('isDark') as SMIBool; - // _bump?.value = !ref.watch(themeModeProvider); - // } - - // void _hitBump(bool value) => _bump?.value = value; - @override Widget build(BuildContext context) { - bool isLight = ref.watch(themeModeProvider); - // _hitBump(!isLight); + bool isLight = ref.watch(themeModeStateProvider); return ListTile( onTap: () { if (!isLight == true) { - ref.read(themeModeProvider.notifier).setLightTheme(); + ref.read(themeModeStateProvider.notifier).setLightTheme(); } else { - ref.read(themeModeProvider.notifier).setDarkTheme(); + ref.read(themeModeStateProvider.notifier).setDarkTheme(); } }, title: const Text("Theme mode"), - subtitle: Text(ref.watch(themeModeProvider) ? 'Light' : 'Dark'), + subtitle: Text(ref.watch(themeModeStateProvider) ? 'Light' : 'Dark'), trailing: Switch( value: !isLight, onChanged: (dd) { if (!isLight == true) { - ref.read(themeModeProvider.notifier).setLightTheme(); + ref.read(themeModeStateProvider.notifier).setLightTheme(); } else { - ref.read(themeModeProvider.notifier).setDarkTheme(); + ref.read(themeModeStateProvider.notifier).setDarkTheme(); } - }) - - // SizedBox( - // height: 80, - // width: 80, - // child: RiveAnimation.asset( - // 'assets/switch.riv', - // onInit: _onRiveInit, - // ), - // ), - ); + })); } } diff --git a/lib/views/more/settings/appearance/flex_scheme_color_provider.dart b/lib/views/more/settings/appearance/flex_scheme_color_provider.dart deleted file mode 100644 index 39956198..00000000 --- a/lib/views/more/settings/appearance/flex_scheme_color_provider.dart +++ /dev/null @@ -1,36 +0,0 @@ -import 'package:flex_color_scheme/flex_color_scheme.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:mangayomi/providers/hive_provider.dart'; -import 'package:mangayomi/views/more/settings/appearance/thememode_provider.dart'; - -final flexSchemeColorProvider = - StateNotifierProvider((ref) { - return ThemeColorState(ref); -}); - -class ThemeColorState extends StateNotifier { - final Ref _ref; - ThemeColorState(this._ref) : super(FlexColor.deepBlue.light) { - if (_ref.watch(themeModeProvider)) { - if (_ref.watch(hiveBoxSettings).get('FlexColorIndex') != null) { - state = ThemeAA - .schemes[_ref.watch(hiveBoxSettings).get('FlexColorIndex')].light; - } - } else { - if (_ref.watch(hiveBoxSettings).get('FlexColorIndex') != null) { - state = ThemeAA - .schemes[_ref.watch(hiveBoxSettings).get('FlexColorIndex')].dark; - } - } - } - void setTheme(FlexSchemeColor color, int index) { - state = color; - _ref.watch(hiveBoxSettings).put('FlexColorIndex', index); - } -} - -class ThemeAA { - static const List schemes = [ - ...FlexColor.schemesList, - ]; -} diff --git a/lib/views/more/settings/appearance/providers/flex_scheme_color_state_provider.dart b/lib/views/more/settings/appearance/providers/flex_scheme_color_state_provider.dart new file mode 100644 index 00000000..b686b5a4 --- /dev/null +++ b/lib/views/more/settings/appearance/providers/flex_scheme_color_state_provider.dart @@ -0,0 +1,35 @@ +import 'package:flex_color_scheme/flex_color_scheme.dart'; +import 'package:mangayomi/providers/hive_provider.dart'; +import 'package:mangayomi/views/more/settings/appearance/providers/theme_mode_state_provider.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +part 'flex_scheme_color_state_provider.g.dart'; + +@riverpod +class FlexSchemeColorState extends _$FlexSchemeColorState { + @override + FlexSchemeColor build() { + if (ref.read(themeModeStateProvider)) { + if (ref.watch(hiveBoxSettings).get('FlexColorIndex') != null) { + state = ThemeAA + .schemes[ref.watch(hiveBoxSettings).get('FlexColorIndex')].light; + } + } else { + if (ref.watch(hiveBoxSettings).get('FlexColorIndex') != null) { + state = ThemeAA + .schemes[ref.watch(hiveBoxSettings).get('FlexColorIndex')].dark; + } + } + return FlexColor.deepBlue.light; + } + + void setTheme(FlexSchemeColor color, int index) { + state = color; + ref.watch(hiveBoxSettings).put('FlexColorIndex', index); + } +} + +class ThemeAA { + static const List schemes = [ + ...FlexColor.schemesList, + ]; +} diff --git a/lib/views/more/settings/appearance/providers/flex_scheme_color_state_provider.g.dart b/lib/views/more/settings/appearance/providers/flex_scheme_color_state_provider.g.dart new file mode 100644 index 00000000..9b54c958 --- /dev/null +++ b/lib/views/more/settings/appearance/providers/flex_scheme_color_state_provider.g.dart @@ -0,0 +1,26 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'flex_scheme_color_state_provider.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$flexSchemeColorStateHash() => + r'3ba5e5eb6d36364e798149829ad5df70f4a04cfd'; + +/// See also [FlexSchemeColorState]. +@ProviderFor(FlexSchemeColorState) +final flexSchemeColorStateProvider = + AutoDisposeNotifierProvider.internal( + FlexSchemeColorState.new, + name: r'flexSchemeColorStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$flexSchemeColorStateHash, + dependencies: null, + allTransitiveDependencies: null, +); + +typedef _$FlexSchemeColorState = AutoDisposeNotifier; +// ignore_for_file: unnecessary_raw_strings, subtype_of_sealed_class, invalid_use_of_internal_member, do_not_use_environment, prefer_const_constructors, public_member_api_docs, avoid_private_typedef_functions diff --git a/lib/views/more/settings/appearance/providers/theme_mode_state_provider.dart b/lib/views/more/settings/appearance/providers/theme_mode_state_provider.dart new file mode 100644 index 00000000..19c3d809 --- /dev/null +++ b/lib/views/more/settings/appearance/providers/theme_mode_state_provider.dart @@ -0,0 +1,22 @@ +import 'package:mangayomi/providers/hive_provider.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +part 'theme_mode_state_provider.g.dart'; + + +@riverpod +class ThemeModeState extends _$ThemeModeState { + @override + bool build() { + return ref.watch(hiveBoxSettings).get('isLight', defaultValue: true)!; + } + + void setLightTheme() { + state = true; + ref.watch(hiveBoxSettings).put('isLight', state); + } + + void setDarkTheme() { + state = false; + ref.watch(hiveBoxSettings).put('isLight', state); + } +} diff --git a/lib/views/more/settings/appearance/providers/theme_mode_state_provider.g.dart b/lib/views/more/settings/appearance/providers/theme_mode_state_provider.g.dart new file mode 100644 index 00000000..fb7f10be --- /dev/null +++ b/lib/views/more/settings/appearance/providers/theme_mode_state_provider.g.dart @@ -0,0 +1,25 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'theme_mode_state_provider.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$themeModeStateHash() => r'ae86c33659103122399492e5409a0e947b0c6292'; + +/// See also [ThemeModeState]. +@ProviderFor(ThemeModeState) +final themeModeStateProvider = + AutoDisposeNotifierProvider.internal( + ThemeModeState.new, + name: r'themeModeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$themeModeStateHash, + dependencies: null, + allTransitiveDependencies: null, +); + +typedef _$ThemeModeState = AutoDisposeNotifier; +// ignore_for_file: unnecessary_raw_strings, subtype_of_sealed_class, invalid_use_of_internal_member, do_not_use_environment, prefer_const_constructors, public_member_api_docs, avoid_private_typedef_functions diff --git a/lib/views/more/settings/appearance/theme_selector.dart b/lib/views/more/settings/appearance/theme_selector.dart index 5fd2a646..fcc033f5 100644 --- a/lib/views/more/settings/appearance/theme_selector.dart +++ b/lib/views/more/settings/appearance/theme_selector.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:mangayomi/providers/hive_provider.dart'; -import 'package:mangayomi/views/more/settings/appearance/flex_scheme_color_provider.dart'; +import 'package:mangayomi/views/more/settings/appearance/providers/flex_scheme_color_state_provider.dart'; class ThemeSelector extends ConsumerStatefulWidget { const ThemeSelector({ @@ -64,11 +64,13 @@ class _ThemeSelectorState extends ConsumerState { }); isLight ? ref - .read(flexSchemeColorProvider.notifier) + .read( + flexSchemeColorStateProvider.notifier) .setTheme(ThemeAA.schemes[selected].light, selected) : ref - .read(flexSchemeColorProvider.notifier) + .read( + flexSchemeColorStateProvider.notifier) .setTheme(ThemeAA.schemes[selected].dark, selected); }, diff --git a/lib/views/more/settings/appearance/thememode_provider.dart b/lib/views/more/settings/appearance/thememode_provider.dart deleted file mode 100644 index ad91d0b0..00000000 --- a/lib/views/more/settings/appearance/thememode_provider.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:mangayomi/providers/hive_provider.dart'; - -final themeModeProvider = StateNotifierProvider((ref) { - return ThemeModeState(ref); -}); -final onPressedProvider = StateProvider((ref) { - return ''; -}); - -class ThemeModeState extends StateNotifier { - final Ref _ref; - - ThemeModeState(this._ref) - : super(_ref.watch(hiveBoxSettings).get('isLight', defaultValue: true)!); - - void setLightTheme() { - state = true; - _ref.watch(hiveBoxSettings).put('isLight', state); - } - - void setDarkTheme() { - state = false; - _ref.watch(hiveBoxSettings).put('isLight', state); - } -}