From d429735a450004e3ff438f034fc95a23b11fd781 Mon Sep 17 00:00:00 2001 From: problematicconsumer Date: Sat, 26 Aug 2023 16:18:38 +0330 Subject: [PATCH] Remove unnecessary prefs --- lib/bootstrap.dart | 3 +- lib/core/prefs/general_prefs.dart | 18 +---- lib/core/prefs/prefs.dart | 4 +- lib/core/prefs/prefs_controller.dart | 75 ------------------- lib/core/prefs/prefs_state.dart | 17 ----- lib/domain/connectivity/connectivity.dart | 1 - lib/domain/connectivity/network_prefs.dart | 17 ----- lib/features/common/clash/clash_mode.dart | 26 ------- .../common/window/window_controller.dart | 2 +- .../proxies/model/group_with_proxies.dart | 1 - .../proxies/notifier/proxies_notifier.dart | 4 +- .../widgets/general_setting_tiles.dart | 13 +--- .../controller/system_tray_controller.dart | 32 +------- 13 files changed, 13 insertions(+), 200 deletions(-) delete mode 100644 lib/core/prefs/prefs_controller.dart delete mode 100644 lib/core/prefs/prefs_state.dart delete mode 100644 lib/domain/connectivity/network_prefs.dart delete mode 100644 lib/features/common/clash/clash_mode.dart diff --git a/lib/bootstrap.dart b/lib/bootstrap.dart index 0fff71b3..2ea9c4bf 100644 --- a/lib/bootstrap.dart +++ b/lib/bootstrap.dart @@ -51,8 +51,7 @@ Future lazyBootstrap(WidgetsBinding widgetsBinding) async { await container.read(runtimeDetailsServiceProvider).init(); _loggy.info("basic setup took [${_stopWatch.elapsedMilliseconds}]ms"); - final silentStart = - container.read(prefsControllerProvider).general.silentStart; + final silentStart = container.read(silentStartProvider); if (silentStart) { FlutterNativeSplash.remove(); } diff --git a/lib/core/prefs/general_prefs.dart b/lib/core/prefs/general_prefs.dart index 8e99b6f2..50d22986 100644 --- a/lib/core/prefs/general_prefs.dart +++ b/lib/core/prefs/general_prefs.dart @@ -1,17 +1,3 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:hiddify/utils/pref_notifier.dart'; -part 'general_prefs.freezed.dart'; -part 'general_prefs.g.dart'; - -@freezed -class GeneralPrefs with _$GeneralPrefs { - const GeneralPrefs._(); - - const factory GeneralPrefs({ - // desktop only - @Default(false) bool silentStart, - }) = _GeneralPrefs; - - factory GeneralPrefs.fromJson(Map json) => - _$GeneralPrefsFromJson(json); -} +final silentStartProvider = PrefNotifier.provider("silent_start", false); diff --git a/lib/core/prefs/prefs.dart b/lib/core/prefs/prefs.dart index a0657759..f7e66bef 100644 --- a/lib/core/prefs/prefs.dart +++ b/lib/core/prefs/prefs.dart @@ -1,2 +1,2 @@ -export 'prefs_controller.dart'; -export 'prefs_state.dart'; +export 'general_prefs.dart'; +export 'misc_prefs.dart'; diff --git a/lib/core/prefs/prefs_controller.dart b/lib/core/prefs/prefs_controller.dart deleted file mode 100644 index 170469f2..00000000 --- a/lib/core/prefs/prefs_controller.dart +++ /dev/null @@ -1,75 +0,0 @@ -import 'dart:convert'; - -import 'package:hiddify/core/prefs/general_prefs.dart'; -import 'package:hiddify/core/prefs/prefs_state.dart'; -import 'package:hiddify/data/data_providers.dart'; -import 'package:hiddify/domain/clash/clash.dart'; -import 'package:hiddify/domain/connectivity/connectivity.dart'; -import 'package:hiddify/utils/utils.dart'; -import 'package:riverpod_annotation/riverpod_annotation.dart'; -import 'package:shared_preferences/shared_preferences.dart'; - -part 'prefs_controller.g.dart'; - -@Riverpod(keepAlive: true) -class PrefsController extends _$PrefsController with AppLogger { - @override - PrefsState build() { - return PrefsState( - general: _getGeneralPrefs(), - clash: _getClashPrefs(), - network: _getNetworkPrefs(), - ); - } - - SharedPreferences get _prefs => ref.read(sharedPreferencesProvider); - - static const _generalKey = "general_prefs"; - static const _overridesKey = "clash_overrides"; - static const _networkKey = "network_prefs"; - - GeneralPrefs _getGeneralPrefs() { - final persisted = _prefs.getString(_generalKey); - if (persisted == null) return const GeneralPrefs(); - return GeneralPrefs.fromJson(jsonDecode(persisted) as Map); - } - - ClashConfig _getClashPrefs() { - final persisted = _prefs.getString(_overridesKey); - if (persisted == null) return const ClashConfig(); - return ClashConfig.fromJson(jsonDecode(persisted) as Map); - } - - NetworkPrefs _getNetworkPrefs() { - final persisted = _prefs.getString(_networkKey); - if (persisted == null) return const NetworkPrefs(); - return NetworkPrefs.fromJson(jsonDecode(persisted) as Map); - } - - Future patchGeneralPrefs({bool? silentStart}) async { - final newPrefs = state.general.copyWith( - silentStart: silentStart ?? state.general.silentStart, - ); - await _prefs.setString(_generalKey, jsonEncode(newPrefs.toJson())); - state = state.copyWith(general: newPrefs); - } - - Future patchClashOverrides(ClashConfigPatch overrides) async { - final newPrefs = state.clash.patch(overrides); - await _prefs.setString(_overridesKey, jsonEncode(newPrefs.toJson())); - state = state.copyWith(clash: newPrefs); - } - - Future patchNetworkPrefs({ - bool? systemProxy, - bool? bypassPrivateNetworks, - }) async { - final newPrefs = state.network.copyWith( - systemProxy: systemProxy ?? state.network.systemProxy, - bypassPrivateNetworks: - bypassPrivateNetworks ?? state.network.bypassPrivateNetworks, - ); - await _prefs.setString(_networkKey, jsonEncode(newPrefs.toJson())); - state = state.copyWith(network: newPrefs); - } -} diff --git a/lib/core/prefs/prefs_state.dart b/lib/core/prefs/prefs_state.dart deleted file mode 100644 index 61d10858..00000000 --- a/lib/core/prefs/prefs_state.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; -import 'package:hiddify/core/prefs/general_prefs.dart'; -import 'package:hiddify/domain/clash/clash.dart'; -import 'package:hiddify/domain/connectivity/connectivity.dart'; - -part 'prefs_state.freezed.dart'; - -@freezed -class PrefsState with _$PrefsState { - const PrefsState._(); - - const factory PrefsState({ - @Default(GeneralPrefs()) GeneralPrefs general, - @Default(ClashConfig()) ClashConfig clash, - @Default(NetworkPrefs()) NetworkPrefs network, - }) = _PrefsState; -} diff --git a/lib/domain/connectivity/connectivity.dart b/lib/domain/connectivity/connectivity.dart index 1310f74d..486c9e4f 100644 --- a/lib/domain/connectivity/connectivity.dart +++ b/lib/domain/connectivity/connectivity.dart @@ -1,5 +1,4 @@ export 'connection_facade.dart'; export 'connection_failure.dart'; export 'connection_status.dart'; -export 'network_prefs.dart'; export 'traffic.dart'; diff --git a/lib/domain/connectivity/network_prefs.dart b/lib/domain/connectivity/network_prefs.dart deleted file mode 100644 index 6dbb1bb7..00000000 --- a/lib/domain/connectivity/network_prefs.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; - -part 'network_prefs.freezed.dart'; -part 'network_prefs.g.dart'; - -@freezed -class NetworkPrefs with _$NetworkPrefs { - const NetworkPrefs._(); - - const factory NetworkPrefs({ - @Default(true) bool systemProxy, - @Default(true) bool bypassPrivateNetworks, - }) = _NetworkPrefs; - - factory NetworkPrefs.fromJson(Map json) => - _$NetworkPrefsFromJson(json); -} diff --git a/lib/features/common/clash/clash_mode.dart b/lib/features/common/clash/clash_mode.dart deleted file mode 100644 index 9288e27e..00000000 --- a/lib/features/common/clash/clash_mode.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:hiddify/core/prefs/prefs.dart'; -import 'package:hiddify/data/data_providers.dart'; -import 'package:hiddify/domain/clash/clash.dart'; -import 'package:hiddify/features/common/connectivity/connectivity_controller.dart'; -import 'package:hiddify/utils/utils.dart'; -import 'package:riverpod_annotation/riverpod_annotation.dart'; - -part 'clash_mode.g.dart'; - -@Riverpod(keepAlive: true) -class ClashMode extends _$ClashMode with AppLogger { - @override - Future build() async { - final clash = ref.watch(coreFacadeProvider); - if (!await ref.watch(serviceRunningProvider.future)) { - return null; - } - ref.watch(prefsControllerProvider.select((value) => value.clash.mode)); - return clash.getConfigs().map((r) => r.mode).getOrElse( - (l) { - loggy.warning("fetching clash mode: $l"); - throw l; - }, - ).run(); - } -} diff --git a/lib/features/common/window/window_controller.dart b/lib/features/common/window/window_controller.dart index a29b0ab9..f9842c36 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(prefsControllerProvider).general.silentStart) { + if (ref.read(silentStartProvider)) { loggy.debug("silent start is enabled, hiding window"); await windowManager.hide(); } diff --git a/lib/features/proxies/model/group_with_proxies.dart b/lib/features/proxies/model/group_with_proxies.dart index c9f6bb2c..c5e586a4 100644 --- a/lib/features/proxies/model/group_with_proxies.dart +++ b/lib/features/proxies/model/group_with_proxies.dart @@ -16,7 +16,6 @@ class GroupWithProxies with _$GroupWithProxies { static Future> fromProxies( List proxies, - TunnelMode? mode, ) async { final stopWatch = Stopwatch()..start(); final res = await CombineWorker().execute( diff --git a/lib/features/proxies/notifier/proxies_notifier.dart b/lib/features/proxies/notifier/proxies_notifier.dart index 7c689af7..fd6c0540 100644 --- a/lib/features/proxies/notifier/proxies_notifier.dart +++ b/lib/features/proxies/notifier/proxies_notifier.dart @@ -4,7 +4,6 @@ import 'package:fpdart/fpdart.dart'; import 'package:hiddify/data/data_providers.dart'; import 'package:hiddify/domain/clash/clash.dart'; import 'package:hiddify/domain/core_service_failure.dart'; -import 'package:hiddify/features/common/clash/clash_mode.dart'; import 'package:hiddify/features/common/connectivity/connectivity_controller.dart'; import 'package:hiddify/features/proxies/model/model.dart'; import 'package:hiddify/utils/utils.dart'; @@ -20,11 +19,10 @@ class ProxiesNotifier extends _$ProxiesNotifier with AppLogger { if (!await ref.watch(serviceRunningProvider.future)) { throw const CoreServiceNotRunning(); } - final mode = await ref.watch(clashModeProvider.future); return _clash.getProxies().flatMap( (proxies) { return TaskEither( - () async => right(await GroupWithProxies.fromProxies(proxies, mode)), + () async => right(await GroupWithProxies.fromProxies(proxies)), ); }, ).getOrElse((l) { diff --git a/lib/features/settings/widgets/general_setting_tiles.dart b/lib/features/settings/widgets/general_setting_tiles.dart index 85f40824..725a097b 100644 --- a/lib/features/settings/widgets/general_setting_tiles.dart +++ b/lib/features/settings/widgets/general_setting_tiles.dart @@ -3,7 +3,7 @@ import 'package:flutter_localized_locales/flutter_localized_locales.dart'; import 'package:go_router/go_router.dart'; import 'package:hiddify/core/core_providers.dart'; import 'package:hiddify/core/locale/locale.dart'; -import 'package:hiddify/core/prefs/prefs.dart'; +import 'package:hiddify/core/prefs/general_prefs.dart'; import 'package:hiddify/core/theme/theme.dart'; import 'package:hiddify/features/settings/widgets/theme_mode_switch_button.dart'; import 'package:hiddify/services/service_providers.dart'; @@ -18,9 +18,6 @@ class AppearanceSettingTiles extends HookConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final t = ref.watch(translationsProvider); - final general = - ref.watch(prefsControllerProvider.select((value) => value.general)); - final locale = ref.watch(localeControllerProvider); final theme = ref.watch(themeControllerProvider); @@ -98,11 +95,9 @@ class AppearanceSettingTiles extends HookConsumerWidget { if (PlatformUtils.isDesktop) ...[ SwitchListTile( title: Text(t.settings.general.silentStart.titleCase), - value: general.silentStart, - onChanged: (value) { - ref - .read(prefsControllerProvider.notifier) - .patchGeneralPrefs(silentStart: value); + value: ref.watch(silentStartProvider), + onChanged: (value) async { + await ref.read(silentStartProvider.notifier).update(value); }, ), ListTile( diff --git a/lib/features/system_tray/controller/system_tray_controller.dart b/lib/features/system_tray/controller/system_tray_controller.dart index 35184fcb..284d2e66 100644 --- a/lib/features/system_tray/controller/system_tray_controller.dart +++ b/lib/features/system_tray/controller/system_tray_controller.dart @@ -1,9 +1,5 @@ -import 'package:fpdart/fpdart.dart'; import 'package:hiddify/core/core_providers.dart'; -import 'package:hiddify/core/prefs/prefs.dart'; -import 'package:hiddify/domain/clash/clash.dart'; import 'package:hiddify/domain/connectivity/connectivity.dart'; -import 'package:hiddify/features/common/clash/clash_mode.dart'; import 'package:hiddify/features/common/connectivity/connectivity_controller.dart'; import 'package:hiddify/features/common/window/window_controller.dart'; import 'package:hiddify/gen/assets.gen.dart'; @@ -26,19 +22,14 @@ class SystemTrayController extends _$SystemTrayController } final connection = await ref.watch(connectivityControllerProvider.future); - final mode = - ref.watch(clashModeProvider.select((value) => value.valueOrNull)); loggy.debug('updating system tray'); - await _updateTray(connection, mode); + await _updateTray(connection); } bool _initialized = false; - Future _updateTray( - ConnectionStatus connection, - TunnelMode? mode, - ) async { + Future _updateTray(ConnectionStatus connection) async { final t = ref.watch(translationsProvider); final trayMenu = Menu( items: [ @@ -46,16 +37,6 @@ class SystemTrayController extends _$SystemTrayController label: t.tray.dashboard, onClick: handleClickShowApp, ), - if (mode != null) ...[ - MenuItem.separator(), - ...TunnelMode.values.map( - (e) => MenuItem.checkbox( - label: e.name, - checked: e == mode, - onClick: (mi) => handleClickModeItem(e, mi), - ), - ), - ], MenuItem.separator(), MenuItem.checkbox( label: t.tray.systemProxy, @@ -89,15 +70,6 @@ class SystemTrayController extends _$SystemTrayController await ref.read(windowControllerProvider.notifier).show(); } - Future handleClickModeItem( - TunnelMode mode, - MenuItem menuItem, - ) async { - return ref - .read(prefsControllerProvider.notifier) - .patchClashOverrides(ClashConfigPatch(mode: some(mode))); - } - Future handleClickSetAsSystemProxy(MenuItem menuItem) async { return ref.read(connectivityControllerProvider.notifier).toggleConnection(); }