diff --git a/lib/features/intro/widget/intro_page.dart b/lib/features/intro/widget/intro_page.dart index 2c880276..f838100d 100644 --- a/lib/features/intro/widget/intro_page.dart +++ b/lib/features/intro/widget/intro_page.dart @@ -10,6 +10,7 @@ import 'package:hiddify/core/model/constants.dart'; import 'package:hiddify/core/model/region.dart'; import 'package:hiddify/core/preferences/general_preferences.dart'; import 'package:hiddify/features/common/general_pref_tiles.dart'; +import 'package:hiddify/features/config_option/data/config_option_repository.dart'; import 'package:hiddify/gen/assets.gen.dart'; import 'package:hiddify/utils/utils.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -19,18 +20,23 @@ import 'package:timezone_to_country/timezone_to_country.dart'; class IntroPage extends HookConsumerWidget with PresLogger { IntroPage({super.key}); - bool locationInfoLoaded = false; + final locationInfoLoaded = useState(false); @override Widget build(BuildContext context, WidgetRef ref) { final t = ref.watch(translationsProvider); final isStarting = useState(false); - if (!locationInfoLoaded) { - autoSelectRegion(ref) - .then((value) => loggy.debug("Auto Region selection finished!")); - locationInfoLoaded = true; - } + useEffect( + () { + if (!locationInfoLoaded.value) { + autoSelectRegion(ref).then((value) => loggy.debug("Auto Region selection finished!")); + locationInfoLoaded.value = true; + } + return null; + }, + [], + ); return Scaffold( body: SafeArea( child: CustomScrollView( @@ -83,14 +89,10 @@ class IntroPage extends HookConsumerWidget with PresLogger { onPressed: () async { if (isStarting.value) return; isStarting.value = true; - if (!ref - .read(analyticsControllerProvider) - .requireValue) { + if (!ref.read(analyticsControllerProvider).requireValue) { loggy.info("disabling analytics per user request"); try { - await ref - .read(analyticsControllerProvider.notifier) - .disableAnalytics(); + await ref.read(analyticsControllerProvider.notifier).disableAnalytics(); } catch (error, stackTrace) { loggy.error( "could not disable analytics", @@ -99,9 +101,7 @@ class IntroPage extends HookConsumerWidget with PresLogger { ); } } - await ref - .read(Preferences.introCompleted.notifier) - .update(true); + await ref.read(Preferences.introCompleted.notifier).update(true); }, child: isStarting.value ? LinearProgressIndicator( @@ -127,10 +127,8 @@ class IntroPage extends HookConsumerWidget with PresLogger { loggy.debug( 'Timezone Region: ${regionLocale.region} Locale: ${regionLocale.locale}', ); - await ref.read(Preferences.region.notifier).update(regionLocale.region); - await ref - .read(localePreferencesProvider.notifier) - .changeLocale(regionLocale.locale); + await ref.read(ConfigOptions.region.notifier).update(regionLocale.region); + await ref.read(localePreferencesProvider.notifier).changeLocale(regionLocale.locale); return; } catch (e) { loggy.warning( @@ -142,25 +140,20 @@ class IntroPage extends HookConsumerWidget with PresLogger { try { final DioHttpClient client = DioHttpClient( timeout: const Duration(seconds: 2), - userAgent: - "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0", + userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0", debug: true, ); - final response = - await client.get>('https://api.ip.sb/geoip/'); + final response = await client.get>('https://api.ip.sb/geoip/'); if (response.statusCode == 200) { final jsonData = response.data!; - final regionLocale = - _getRegionLocale(jsonData['country_code']?.toString() ?? ""); + final regionLocale = _getRegionLocale(jsonData['country_code']?.toString() ?? ""); loggy.debug( 'Region: ${regionLocale.region} Locale: ${regionLocale.locale}', ); - await ref.read(Preferences.region.notifier).update(regionLocale.region); - await ref - .read(localePreferencesProvider.notifier) - .changeLocale(regionLocale.locale); + await ref.read(ConfigOptions.region.notifier).update(regionLocale.region); + await ref.read(localePreferencesProvider.notifier).changeLocale(regionLocale.locale); } else { loggy.warning('Request failed with status: ${response.statusCode}'); } diff --git a/lib/features/profile/add/add_profile_modal.dart b/lib/features/profile/add/add_profile_modal.dart index b6cd0d6a..8cdb4e21 100644 --- a/lib/features/profile/add/add_profile_modal.dart +++ b/lib/features/profile/add/add_profile_modal.dart @@ -10,12 +10,11 @@ import 'package:hiddify/core/preferences/preferences_provider.dart'; import 'package:hiddify/core/router/router.dart'; import 'package:hiddify/features/common/qr_code_scanner_screen.dart'; import 'package:hiddify/features/config_option/notifier/warp_option_notifier.dart'; -import 'package:hiddify/features/config_option/overview/config_options_page.dart'; + import 'package:hiddify/features/config_option/overview/warp_options_widgets.dart'; import 'package:hiddify/features/profile/notifier/profile_notifier.dart'; import 'package:hiddify/utils/utils.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:shared_preferences/shared_preferences.dart'; class AddProfileModal extends HookConsumerWidget { const AddProfileModal({ diff --git a/lib/features/proxy/overview/proxies_overview_notifier.dart b/lib/features/proxy/overview/proxies_overview_notifier.dart index d4f96ee8..b9282341 100644 --- a/lib/features/proxy/overview/proxies_overview_notifier.dart +++ b/lib/features/proxy/overview/proxies_overview_notifier.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:dartx/dartx.dart'; -import 'package:fpdart/fpdart.dart'; + import 'package:hiddify/core/haptic/haptic_service.dart'; import 'package:hiddify/core/localization/translations.dart'; import 'package:hiddify/core/preferences/preferences_provider.dart'; @@ -128,10 +128,7 @@ class ProxiesOverviewNotifier extends _$ProxiesOverviewNotifier with AppLogger { ); if (state case AsyncData(value: final outbounds)) { await ref.read(hapticServiceProvider.notifier).lightImpact(); - await ref - .read(proxyRepositoryProvider) - .selectProxy(groupTag, outboundTag) - .getOrElse((err) { + await ref.read(proxyRepositoryProvider).selectProxy(groupTag, outboundTag).getOrElse((err) { loggy.warning("error selecting outbound", err); throw err; }).run(); @@ -149,10 +146,7 @@ class ProxiesOverviewNotifier extends _$ProxiesOverviewNotifier with AppLogger { loggy.debug("testing group: [$groupTag]"); if (state case AsyncData()) { await ref.read(hapticServiceProvider.notifier).lightImpact(); - await ref - .read(proxyRepositoryProvider) - .urlTest(groupTag) - .getOrElse((err) { + await ref.read(proxyRepositoryProvider).urlTest(groupTag).getOrElse((err) { loggy.error("error testing group", err); throw err; }).run(); diff --git a/lib/features/proxy/widget/proxy_tile.dart b/lib/features/proxy/widget/proxy_tile.dart index 134f6f04..3c4b4963 100644 --- a/lib/features/proxy/widget/proxy_tile.dart +++ b/lib/features/proxy/widget/proxy_tile.dart @@ -1,9 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:hiddify/core/localization/locale_extensions.dart'; -import 'package:hiddify/gen/fonts.gen.dart'; import 'package:hiddify/features/proxy/model/proxy_entity.dart'; +import 'package:hiddify/gen/fonts.gen.dart'; import 'package:hiddify/utils/custom_loggers.dart'; -import 'package:hiddify/utils/text_utils.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; class ProxyTile extends HookConsumerWidget with PresLogger { @@ -81,16 +79,8 @@ class ProxyTile extends HookConsumerWidget with PresLogger { Color delayColor(BuildContext context, int delay) { if (Theme.of(context).brightness == Brightness.dark) { - return switch (delay) { - < 800 => Colors.lightGreen, - < 1500 => Colors.orange, - _ => Colors.redAccent - }; + return switch (delay) { < 800 => Colors.lightGreen, < 1500 => Colors.orange, _ => Colors.redAccent }; } - return switch (delay) { - < 800 => Colors.green, - < 1500 => Colors.deepOrangeAccent, - _ => Colors.red - }; + return switch (delay) { < 800 => Colors.green, < 1500 => Colors.deepOrangeAccent, _ => Colors.red }; } } diff --git a/lib/utils/text_utils.dart b/lib/utils/text_utils.dart index 4b129e54..c441996b 100644 --- a/lib/utils/text_utils.dart +++ b/lib/utils/text_utils.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:hiddify/gen/fonts.gen.dart'; import 'package:intl/intl.dart' as intl; extension TextAlignX on BuildContext { @@ -16,9 +15,7 @@ extension TextAlignX on BuildContext { extension StringX on String { TextDirection get textDirection { - return intl.Bidi.detectRtlDirectionality(this) - ? TextDirection.rtl - : TextDirection.ltr; + return intl.Bidi.detectRtlDirectionality(this) ? TextDirection.rtl : TextDirection.ltr; } } diff --git a/libcore b/libcore index e725eb36..40164eff 160000 --- a/libcore +++ b/libcore @@ -1 +1 @@ -Subproject commit e725eb36113f25ce2652e84701ed8decd429ea82 +Subproject commit 40164efff80bb8f2943e5f7df488930c7da288d4