refactor
This commit is contained in:
@@ -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<Map<String, dynamic>>('https://api.ip.sb/geoip/');
|
||||
final response = await client.get<Map<String, dynamic>>('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}');
|
||||
}
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
2
libcore
2
libcore
Submodule libcore updated: e725eb3611...40164efff8
Reference in New Issue
Block a user