From b03d8cba99057cb2591349f80e8c00bef0279b65 Mon Sep 17 00:00:00 2001 From: problematicconsumer Date: Wed, 6 Sep 2023 21:03:43 +0330 Subject: [PATCH] Fix general issues --- lib/bootstrap.dart | 8 ----- lib/core/app/app_view.dart | 3 +- lib/core/core_providers.dart | 2 +- lib/data/local/dao/profiles_dao.dart | 2 +- lib/data/local/database.dart | 3 +- lib/domain/profiles/profile.dart | 2 +- .../widgets/empty_profiles_home_body.dart | 4 +-- lib/utils/pref_notifier.dart | 34 +++++++++++-------- pubspec.lock | 16 ++++----- pubspec.yaml | 8 ++--- 10 files changed, 40 insertions(+), 42 deletions(-) diff --git a/lib/bootstrap.dart b/lib/bootstrap.dart index 9f7a3fe6..0e841d75 100644 --- a/lib/bootstrap.dart +++ b/lib/bootstrap.dart @@ -17,7 +17,6 @@ import 'package:hiddify/utils/utils.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:loggy/loggy.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:stack_trace/stack_trace.dart' as stack_trace; import 'package:window_manager/window_manager.dart'; final _loggy = Loggy('bootstrap'); @@ -26,13 +25,6 @@ final _stopWatch = Stopwatch(); Future lazyBootstrap(WidgetsBinding widgetsBinding) async { _stopWatch.start(); - // temporary solution: https://github.com/rrousselGit/riverpod/issues/1874 - FlutterError.demangleStackTrace = (StackTrace stack) { - if (stack is stack_trace.Trace) return stack.vmTrace; - if (stack is stack_trace.Chain) return stack.toTrace().vmTrace; - return stack; - }; - FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding); if (PlatformUtils.isDesktop) await windowManager.ensureInitialized(); diff --git a/lib/core/app/app_view.dart b/lib/core/app/app_view.dart index df3d0063..27554541 100644 --- a/lib/core/app/app_view.dart +++ b/lib/core/app/app_view.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter_animate/flutter_animate.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:hiddify/core/core_providers.dart'; import 'package:hiddify/core/prefs/prefs.dart'; @@ -29,6 +28,6 @@ class AppView extends HookConsumerWidget with PresLogger { theme: theme.light(), darkTheme: theme.dark(), title: 'Hiddify Next', - ).animate().fadeIn(); + ); } } diff --git a/lib/core/core_providers.dart b/lib/core/core_providers.dart index aa8ccce1..dfe91c72 100644 --- a/lib/core/core_providers.dart +++ b/lib/core/core_providers.dart @@ -7,7 +7,7 @@ part 'core_providers.g.dart'; TranslationsEn translations(TranslationsRef ref) => ref.watch(localeProvider).translations(); -@riverpod +@Riverpod(keepAlive: true) AppTheme theme(ThemeRef ref) => AppTheme( ref.watch(themeModeProvider), ref.watch(trueBlackThemeProvider), diff --git a/lib/data/local/dao/profiles_dao.dart b/lib/data/local/dao/profiles_dao.dart index 3b6a62d3..d6cefced 100644 --- a/lib/data/local/dao/profiles_dao.dart +++ b/lib/data/local/dao/profiles_dao.dart @@ -10,7 +10,7 @@ part 'profiles_dao.g.dart'; Map orderMap = { SortMode.ascending: OrderingMode.asc, - SortMode.descending: OrderingMode.desc + SortMode.descending: OrderingMode.desc, }; @DriftAccessor(tables: [ProfileEntries]) diff --git a/lib/data/local/database.dart b/lib/data/local/database.dart index 17abc549..7cd1c3d5 100644 --- a/lib/data/local/database.dart +++ b/lib/data/local/database.dart @@ -2,7 +2,8 @@ import 'dart:io'; import 'package:drift/drift.dart'; import 'package:drift/native.dart'; -import 'package:hiddify/data/local/dao/dao.dart'; +// import 'package:hiddify/data/local/dao/dao.dart'; +import 'package:hiddify/data/local/dao/profiles_dao.dart'; // TODO https://github.com/simolus3/drift/issues/2589 import 'package:hiddify/data/local/tables.dart'; import 'package:hiddify/data/local/type_converters.dart'; import 'package:hiddify/services/files_editor_service.dart'; diff --git a/lib/domain/profiles/profile.dart b/lib/domain/profiles/profile.dart index 8b5a4af1..d19e975f 100644 --- a/lib/domain/profiles/profile.dart +++ b/lib/domain/profiles/profile.dart @@ -129,7 +129,7 @@ class SubscriptionInfo with _$SubscriptionInfo { final values = header.split(';'); final map = { for (final v in values) - v.split('=').first: int.tryParse(v.split('=').second) + v.split('=').first: int.tryParse(v.split('=').second), }; return SubscriptionInfo.fromJson(map); } diff --git a/lib/features/home/widgets/empty_profiles_home_body.dart b/lib/features/home/widgets/empty_profiles_home_body.dart index 16215d62..3ce7069b 100644 --- a/lib/features/home/widgets/empty_profiles_home_body.dart +++ b/lib/features/home/widgets/empty_profiles_home_body.dart @@ -23,7 +23,7 @@ class EmptyProfilesHomeBody extends HookConsumerWidget { onPressed: () => const AddProfileRoute().push(context), icon: const Icon(Icons.add), label: Text(t.profile.add.buttonText.titleCase), - ) + ), ], ), ); @@ -47,7 +47,7 @@ class EmptyActiveProfileHomeBody extends HookConsumerWidget { OutlinedButton( onPressed: () => const ProfilesRoute().push(context), child: Text(t.profile.overviewPageTitle.titleCase), - ) + ), ], ), ); diff --git a/lib/utils/pref_notifier.dart b/lib/utils/pref_notifier.dart index d85d8f42..cd03f92b 100644 --- a/lib/utils/pref_notifier.dart +++ b/lib/utils/pref_notifier.dart @@ -95,26 +95,32 @@ mixin _Prefs implements LoggerMixin { /// Updates the value asynchronously. Future update(T value) async { - if (mapTo != null && mapFrom != null) { - await prefs.setString(key, mapTo!(value)); - } else { - switch (value) { - case String _: - await prefs.setString(key, value); - case bool _: - await prefs.setBool(key, value); - case int _: - await prefs.setInt(key, value); - case double _: - await prefs.setDouble(key, value); - case List _: - await prefs.setStringList(key, value); + loggy.debug("updating preference [$key] to [$value]"); + try { + if (mapTo != null && mapFrom != null) { + await prefs.setString(key, mapTo!(value)); + } else { + switch (value) { + case String _: + await prefs.setString(key, value); + case bool _: + await prefs.setBool(key, value); + case int _: + await prefs.setInt(key, value); + case double _: + await prefs.setDouble(key, value); + case List _: + await prefs.setStringList(key, value); + } } + } catch (e) { + loggy.warning("error updating preference[$key]: $e"); } } T getValue() { try { + loggy.debug("getting persisted preference [$key]"); if (mapTo != null && mapFrom != null) { final persisted = prefs.getString(key); return persisted != null ? mapFrom!(persisted) : defaultValue; diff --git a/pubspec.lock b/pubspec.lock index b9b95c7a..32154480 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -593,10 +593,10 @@ packages: dependency: "direct main" description: name: hooks_riverpod - sha256: ad7b877c3687e38764633d221a1f65491bc7a540e724101e9a404a84db2a4276 + sha256: "04a8a526db4c04139f6e5d318ef5079832daa1327a485ad391faf1b6bb203960" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.3.10" hotreloader: dependency: transitive description: @@ -993,26 +993,26 @@ packages: dependency: "direct main" description: name: riverpod_annotation - sha256: "6294fe7e7d1875f32bdf04c8fce7620e718070273703097847df8f3bf16995ea" + sha256: fefc51f8888839a597abe3c813c764404c85c0100a0676d242f358cc92bf5e23 url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.1.4" riverpod_generator: dependency: "direct dev" description: name: riverpod_generator - sha256: d132b1ccb476e60f99989caa6ba9b1c4d88409806c93d880d1633c60c382454d + sha256: "3cbeb22926bb70c9c250fd0ed061b3086729404b0e4e89e209f46ef5393ccba4" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.1" riverpod_lint: dependency: "direct dev" description: name: riverpod_lint - sha256: "74123a5f0a8e809ab80078dbc02061ecf02e09647a2c3231c87b7342bcf8d399" + sha256: a26fbbd4b948c1a009264418bd6f9b153be75317ac61a2c37ed3920af2e135e4 url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.0.3" rxdart: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index f8e96a56..4a982040 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -27,9 +27,9 @@ dependencies: json_annotation: ^4.8.1 # state management - hooks_riverpod: ^2.4.0 + hooks_riverpod: 2.3.10 flutter_hooks: ^0.20.1 - riverpod_annotation: ^2.1.5 + riverpod_annotation: 2.1.4 rxdart: ^0.27.7 # persistence @@ -84,14 +84,14 @@ dev_dependencies: build_runner: ^2.4.6 json_serializable: ^6.7.1 freezed: ^2.4.2 - riverpod_generator: ^2.3.2 + riverpod_generator: 2.3.1 drift_dev: ^2.11.1 ffigen: ^8.0.2 slang_build_runner: ^3.23.0 flutter_gen_runner: ^5.3.1 go_router_builder: ^2.3.1 custom_lint: ^0.5.3 - riverpod_lint: ^2.0.4 + riverpod_lint: 2.0.3 icons_launcher: ^2.1.3 dependency_overrides: