fix: intro page bug and fakepacket delay bug
This commit is contained in:
@@ -154,7 +154,7 @@ class IntroRoute extends GoRouteData {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Page<void> buildPage(BuildContext context, GoRouterState state) {
|
Page<void> buildPage(BuildContext context, GoRouterState state) {
|
||||||
return const MaterialPage(
|
return MaterialPage(
|
||||||
fullscreenDialog: true,
|
fullscreenDialog: true,
|
||||||
name: name,
|
name: name,
|
||||||
child: IntroPage(),
|
child: IntroPage(),
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ class WarpOptionsTiles extends HookConsumerWidget {
|
|||||||
if (warpNoiseDelay == null) return;
|
if (warpNoiseDelay == null) return;
|
||||||
await onChange(
|
await onChange(
|
||||||
ConfigOptionPatch(
|
ConfigOptionPatch(
|
||||||
warpNoise:
|
warpNoiseDelay:
|
||||||
OptionalRange.tryParse(warpNoiseDelay, allowEmpty: true),
|
OptionalRange.tryParse(warpNoiseDelay, allowEmpty: true),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
|
import 'package:hiddify/core/http_client/dio_http_client.dart';
|
||||||
import 'package:timezone_to_country/timezone_to_country.dart';
|
import 'package:timezone_to_country/timezone_to_country.dart';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -15,19 +16,22 @@ import 'package:hiddify/features/common/general_pref_tiles.dart';
|
|||||||
import 'package:hiddify/gen/assets.gen.dart';
|
import 'package:hiddify/gen/assets.gen.dart';
|
||||||
import 'package:hiddify/utils/utils.dart';
|
import 'package:hiddify/utils/utils.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:http/http.dart' as http;
|
|
||||||
import 'package:sliver_tools/sliver_tools.dart';
|
import 'package:sliver_tools/sliver_tools.dart';
|
||||||
|
|
||||||
class IntroPage extends HookConsumerWidget with PresLogger {
|
class IntroPage extends HookConsumerWidget with PresLogger {
|
||||||
const IntroPage({super.key});
|
bool locationInfoLoaded = false;
|
||||||
|
IntroPage({super.key});
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final t = ref.watch(translationsProvider);
|
final t = ref.watch(translationsProvider);
|
||||||
|
|
||||||
final isStarting = useState(false);
|
final isStarting = useState(false);
|
||||||
autoSelectRegion(ref)
|
if (!locationInfoLoaded) {
|
||||||
.then((value) => loggy.debug("Auto Region selection finished!"));
|
autoSelectRegion(ref)
|
||||||
|
.then((value) => loggy.debug("Auto Region selection finished!"));
|
||||||
|
locationInfoLoaded = true;
|
||||||
|
}
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
child: CustomScrollView(
|
child: CustomScrollView(
|
||||||
@@ -132,16 +136,25 @@ class IntroPage extends HookConsumerWidget with PresLogger {
|
|||||||
.changeLocale(regionLocale.locale);
|
.changeLocale(regionLocale.locale);
|
||||||
return;
|
return;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
loggy.warning('Could not get the local country code based on timezone');
|
loggy.warning(
|
||||||
|
'Could not get the local country code based on timezone',
|
||||||
|
e,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final response = await http.get(Uri.parse('https://api.ip.sb/json/'));
|
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",
|
||||||
|
debug: true);
|
||||||
|
final response =
|
||||||
|
await client.get<Map<String, dynamic>>('https://api.ip.sb/geoip/');
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
final jsonData = jsonDecode(response.body);
|
final jsonData = response.data!;
|
||||||
final regionLocale =
|
final regionLocale =
|
||||||
_getRegionLocale(jsonData['country']?.toString() ?? "");
|
_getRegionLocale(jsonData['country_code']?.toString() ?? "");
|
||||||
|
|
||||||
loggy.debug(
|
loggy.debug(
|
||||||
'Region: ${regionLocale.region} Locale: ${regionLocale.locale}',
|
'Region: ${regionLocale.region} Locale: ${regionLocale.locale}',
|
||||||
@@ -170,6 +183,10 @@ class IntroPage extends HookConsumerWidget with PresLogger {
|
|||||||
return RegionLocale(Region.ru, AppLocale.ru);
|
return RegionLocale(Region.ru, AppLocale.ru);
|
||||||
case "AF":
|
case "AF":
|
||||||
return RegionLocale(Region.af, AppLocale.fa);
|
return RegionLocale(Region.af, AppLocale.fa);
|
||||||
|
case "BR":
|
||||||
|
return RegionLocale(Region.other, AppLocale.ptBr);
|
||||||
|
case "TR":
|
||||||
|
return RegionLocale(Region.other, AppLocale.tr);
|
||||||
default:
|
default:
|
||||||
return RegionLocale(Region.other, AppLocale.en);
|
return RegionLocale(Region.other, AppLocale.en);
|
||||||
}
|
}
|
||||||
|
|||||||
2
libcore
2
libcore
Submodule libcore updated: a50b0d4da8...48297a74ae
Reference in New Issue
Block a user