This commit is contained in:
hiddify-com
2024-07-04 21:06:08 +02:00
parent c6d34e7455
commit e19a208d78
6 changed files with 31 additions and 58 deletions

View File

@@ -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}');
}

View File

@@ -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({

View File

@@ -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();

View File

@@ -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 };
}
}