From 854b522d976685e71832ebda0262e6404089b53c Mon Sep 17 00:00:00 2001 From: problematicconsumer Date: Thu, 7 Sep 2023 13:43:46 +0330 Subject: [PATCH] Change prefs --- lib/bootstrap.dart | 4 +-- lib/core/app/app_view.dart | 4 +-- lib/core/core_providers.dart | 2 +- lib/core/prefs/general_prefs.dart | 32 ++++++++++++++++-- lib/core/prefs/locale_prefs.dart | 33 ++----------------- .../common/window/window_controller.dart | 2 +- lib/features/logs/view/logs_page.dart | 2 +- .../settings/view/config_options_page.dart | 2 +- .../widgets/advanced_setting_tiles.dart | 4 +-- .../widgets/general_setting_tiles.dart | 6 ++-- 10 files changed, 47 insertions(+), 44 deletions(-) diff --git a/lib/bootstrap.dart b/lib/bootstrap.dart index 0e841d75..cd9da059 100644 --- a/lib/bootstrap.dart +++ b/lib/bootstrap.dart @@ -33,7 +33,7 @@ Future lazyBootstrap(WidgetsBinding widgetsBinding) async { overrides: [sharedPreferencesProvider.overrideWithValue(sharedPreferences)], ); - final debug = container.read(debugModeProvider) || kDebugMode; + final debug = container.read(debugModeNotifierProvider) || kDebugMode; final filesEditor = container.read(filesEditorServiceProvider); await filesEditor.init(); @@ -42,7 +42,7 @@ Future lazyBootstrap(WidgetsBinding widgetsBinding) async { await container.read(runtimeDetailsServiceProvider).init(); _loggy.info("basic setup took [${_stopWatch.elapsedMilliseconds}]ms"); - final silentStart = container.read(silentStartProvider); + final silentStart = container.read(silentStartNotifierProvider); if (silentStart) { FlutterNativeSplash.remove(); } diff --git a/lib/core/app/app_view.dart b/lib/core/app/app_view.dart index 08549b2a..5fe37a83 100644 --- a/lib/core/app/app_view.dart +++ b/lib/core/app/app_view.dart @@ -13,7 +13,7 @@ class AppView extends HookConsumerWidget with PresLogger { @override Widget build(BuildContext context, WidgetRef ref) { final router = ref.watch(routerProvider); - final locale = ref.watch(localeNotifierProvider).locale; + final locale = ref.watch(localeNotifierProvider).flutterLocale; final theme = ref.watch(themeProvider); ref.watch(commonControllersProvider); @@ -21,7 +21,7 @@ class AppView extends HookConsumerWidget with PresLogger { return MaterialApp.router( routerConfig: router, locale: locale, - supportedLocales: AppLocale.locales, + supportedLocales: AppLocaleUtils.supportedLocales, localizationsDelegates: GlobalMaterialLocalizations.delegates, debugShowCheckedModeBanner: false, themeMode: theme.mode, diff --git a/lib/core/core_providers.dart b/lib/core/core_providers.dart index 41fb3753..3d943dbb 100644 --- a/lib/core/core_providers.dart +++ b/lib/core/core_providers.dart @@ -5,7 +5,7 @@ part 'core_providers.g.dart'; @Riverpod(keepAlive: true) TranslationsEn translations(TranslationsRef ref) => - ref.watch(localeNotifierProvider).translations(); + ref.watch(localeNotifierProvider).build(); @Riverpod(keepAlive: true) AppTheme theme(ThemeRef ref) => AppTheme( diff --git a/lib/core/prefs/general_prefs.dart b/lib/core/prefs/general_prefs.dart index 8115055d..aec3bf2a 100644 --- a/lib/core/prefs/general_prefs.dart +++ b/lib/core/prefs/general_prefs.dart @@ -1,5 +1,33 @@ +import 'package:hiddify/data/data_providers.dart'; import 'package:hiddify/utils/pref_notifier.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; -final silentStartProvider = PrefNotifier.provider("silent_start", false); +part 'general_prefs.g.dart'; -final debugModeProvider = PrefNotifier.provider("debug_mode", false); +@Riverpod(keepAlive: true) +class SilentStartNotifier extends _$SilentStartNotifier { + late final _pref = + Pref(ref.watch(sharedPreferencesProvider), "silent_start", false); + + @override + bool build() => _pref.getValue(); + + Future update(bool value) { + state = value; + return _pref.update(value); + } +} + +@Riverpod(keepAlive: true) +class DebugModeNotifier extends _$DebugModeNotifier { + late final _pref = + Pref(ref.watch(sharedPreferencesProvider), "debug_mode", false); + + @override + bool build() => _pref.getValue(); + + Future update(bool value) { + state = value; + return _pref.update(value); + } +} diff --git a/lib/core/prefs/locale_prefs.dart b/lib/core/prefs/locale_prefs.dart index fa599113..039ce5d6 100644 --- a/lib/core/prefs/locale_prefs.dart +++ b/lib/core/prefs/locale_prefs.dart @@ -1,5 +1,3 @@ -import 'package:dartx/dartx.dart'; -import 'package:flutter/widgets.dart'; import 'package:hiddify/data/data_providers.dart'; import 'package:hiddify/gen/fonts.gen.dart'; import 'package:hiddify/gen/translations.g.dart'; @@ -24,32 +22,7 @@ class LocaleNotifier extends _$LocaleNotifier { } } -enum AppLocale { - en, - fa; - - Locale get locale { - return Locale(name); - } - - static List get locales => - AppLocale.values.map((e) => e.locale).toList(); - - static AppLocale fromString(String e) { - return AppLocale.values.firstOrNullWhere((element) => element.name == e) ?? - AppLocale.en; - } - - static AppLocale deviceLocale() { - return AppLocale.fromString( - AppLocaleUtils.findDeviceLocale().languageCode, - ); - } - - TranslationsEn translations() { - final appLocale = AppLocaleUtils.parse(name); - return appLocale.build(); - } - - String get preferredFontFamily => this == fa ? FontFamily.shabnam : ""; +extension AppLocaleX on AppLocale { + String get preferredFontFamily => + this == AppLocale.fa ? FontFamily.shabnam : ""; } diff --git a/lib/features/common/window/window_controller.dart b/lib/features/common/window/window_controller.dart index f9842c36..938d3d98 100644 --- a/lib/features/common/window/window_controller.dart +++ b/lib/features/common/window/window_controller.dart @@ -22,7 +22,7 @@ class WindowController extends _$WindowController await windowManager.waitUntilReadyToShow( windowOptions, () async { - if (ref.read(silentStartProvider)) { + if (ref.read(silentStartNotifierProvider)) { loggy.debug("silent start is enabled, hiding window"); await windowManager.hide(); } diff --git a/lib/features/logs/view/logs_page.dart b/lib/features/logs/view/logs_page.dart index f2284300..830bcbaa 100644 --- a/lib/features/logs/view/logs_page.dart +++ b/lib/features/logs/view/logs_page.dart @@ -23,7 +23,7 @@ class LogsPage extends HookConsumerWidget with PresLogger { final asyncState = ref.watch(logsNotifierProvider); final notifier = ref.watch(logsNotifierProvider.notifier); - final debug = ref.watch(debugModeProvider); + final debug = ref.watch(debugModeNotifierProvider); final filesEditor = ref.watch(filesEditorServiceProvider); final List popupButtons = debug || PlatformUtils.isDesktop diff --git a/lib/features/settings/view/config_options_page.dart b/lib/features/settings/view/config_options_page.dart index 00d4da77..dfa5afe8 100644 --- a/lib/features/settings/view/config_options_page.dart +++ b/lib/features/settings/view/config_options_page.dart @@ -26,7 +26,7 @@ class ConfigOptionsPage extends HookConsumerWidget { ), body: ListView( children: [ - if (ref.watch(debugModeProvider)) + if (ref.watch(debugModeNotifierProvider)) SwitchListTile( title: Text(t.settings.config.executeConfigAsIs), subtitle: Text(t.settings.config.executeConfigAsIsMsg), diff --git a/lib/features/settings/widgets/advanced_setting_tiles.dart b/lib/features/settings/widgets/advanced_setting_tiles.dart index 3684963f..a4960be0 100644 --- a/lib/features/settings/widgets/advanced_setting_tiles.dart +++ b/lib/features/settings/widgets/advanced_setting_tiles.dart @@ -12,7 +12,7 @@ class AdvancedSettingTiles extends HookConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final t = ref.watch(translationsProvider); - final debug = ref.watch(debugModeProvider); + final debug = ref.watch(debugModeNotifierProvider); return Column( children: [ @@ -47,7 +47,7 @@ class AdvancedSettingTiles extends HookConsumerWidget { }, ); } - await ref.read(debugModeProvider.notifier).update(value); + await ref.read(debugModeNotifierProvider.notifier).update(value); }, ), ], diff --git a/lib/features/settings/widgets/general_setting_tiles.dart b/lib/features/settings/widgets/general_setting_tiles.dart index c8716f61..226de814 100644 --- a/lib/features/settings/widgets/general_setting_tiles.dart +++ b/lib/features/settings/widgets/general_setting_tiles.dart @@ -87,9 +87,11 @@ class GeneralSettingTiles extends HookConsumerWidget { if (PlatformUtils.isDesktop) ...[ SwitchListTile( title: Text(t.settings.general.silentStart), - value: ref.watch(silentStartProvider), + value: ref.watch(silentStartNotifierProvider), onChanged: (value) async { - await ref.read(silentStartProvider.notifier).update(value); + await ref + .read(silentStartNotifierProvider.notifier) + .update(value); }, ), ],