This commit is contained in:
hiddify
2024-01-06 18:35:10 +03:30
10 changed files with 55 additions and 37 deletions

View File

@@ -1,5 +1,19 @@
# Changelog # Changelog
## [0.13.5.dev] - 2023-1-6
### New Features and Improvements
- Updated sing-box to version 1.7.8
- Improved TLS Fragmentation. [PR#12](https://github.com/hiddify/hiddify-sing-box/pull/12) by [Kyōchikutō | キョウチクトウ](https://github.com/kyochikuto)
- Improved v2ray config parser
- Added cancel button on new profile modal
- Changed default Connection Test URL
### Bug Fixes
- Fixed Android service mode
- Fixed QR code scanner not scanning deep links
## [0.13.4.dev] - 2023-1-4 ## [0.13.4.dev] - 2023-1-4
@@ -197,6 +211,7 @@
- Fixed localization mistakes in Russian. [PR#95](https://github.com/hiddify/hiddify-next/pull/95) by [solokot](https://github.com/solokot) - Fixed localization mistakes in Russian. [PR#95](https://github.com/hiddify/hiddify-next/pull/95) by [solokot](https://github.com/solokot)
- Fixed localization mistakes in Russian. [PR#74](https://github.com/hiddify/hiddify-next/pull/74) by [Elshad Guseynov](https://github.com/lifeindarkside) - Fixed localization mistakes in Russian. [PR#74](https://github.com/hiddify/hiddify-next/pull/74) by [Elshad Guseynov](https://github.com/lifeindarkside)
[0.13.5.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.5.dev
[0.13.4.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.4.dev [0.13.4.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.4.dev
[0.13.3.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.3.dev [0.13.3.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.3.dev
[0.13.2.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.2.dev [0.13.2.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.2.dev

View File

@@ -17,13 +17,13 @@ import 'package:hiddify/core/preferences/preferences_migration.dart';
import 'package:hiddify/core/preferences/preferences_provider.dart'; import 'package:hiddify/core/preferences/preferences_provider.dart';
import 'package:hiddify/features/app/widget/app.dart'; import 'package:hiddify/features/app/widget/app.dart';
import 'package:hiddify/features/auto_start/notifier/auto_start_notifier.dart'; import 'package:hiddify/features/auto_start/notifier/auto_start_notifier.dart';
import 'package:hiddify/features/deep_link/notifier/deep_link_notifier.dart';
import 'package:hiddify/features/geo_asset/data/geo_asset_data_providers.dart'; import 'package:hiddify/features/geo_asset/data/geo_asset_data_providers.dart';
import 'package:hiddify/features/log/data/log_data_providers.dart'; import 'package:hiddify/features/log/data/log_data_providers.dart';
import 'package:hiddify/features/profile/data/profile_data_providers.dart'; import 'package:hiddify/features/profile/data/profile_data_providers.dart';
import 'package:hiddify/features/profile/notifier/active_profile_notifier.dart'; import 'package:hiddify/features/profile/notifier/active_profile_notifier.dart';
import 'package:hiddify/features/system_tray/notifier/system_tray_notifier.dart'; import 'package:hiddify/features/system_tray/notifier/system_tray_notifier.dart';
import 'package:hiddify/features/window/notifier/window_notifier.dart'; import 'package:hiddify/features/window/notifier/window_notifier.dart';
import 'package:hiddify/services/deep_link_service.dart';
import 'package:hiddify/singbox/service/singbox_service_provider.dart'; import 'package:hiddify/singbox/service/singbox_service_provider.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';
@@ -144,7 +144,7 @@ Future<void> lazyBootstrap(
); );
await _safeInit( await _safeInit(
"deep link service", "deep link service",
() => container.read(deepLinkServiceProvider.future), () => container.read(deepLinkNotifierProvider.future),
timeout: 1000, timeout: 1000,
); );

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:hiddify/core/preferences/general_preferences.dart'; import 'package:hiddify/core/preferences/general_preferences.dart';
import 'package:hiddify/core/router/routes.dart'; import 'package:hiddify/core/router/routes.dart';
import 'package:hiddify/services/deep_link_service.dart'; import 'package:hiddify/features/deep_link/notifier/deep_link_notifier.dart';
import 'package:hiddify/utils/utils.dart'; import 'package:hiddify/utils/utils.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sentry_flutter/sentry_flutter.dart';
@@ -21,7 +21,7 @@ final GlobalKey<NavigatorState> rootNavigatorKey = GlobalKey<NavigatorState>();
GoRouter router(RouterRef ref) { GoRouter router(RouterRef ref) {
final notifier = ref.watch(routerListenableProvider.notifier); final notifier = ref.watch(routerListenableProvider.notifier);
final deepLink = ref.listen( final deepLink = ref.listen(
deepLinkServiceProvider, deepLinkNotifierProvider,
(_, next) async { (_, next) async {
if (next case AsyncData(value: final link?)) { if (next case AsyncData(value: final link?)) {
await ref.state.push(AddProfileRoute(url: link.url).location); await ref.state.push(AddProfileRoute(url: link.url).location);

View File

@@ -12,9 +12,9 @@ import 'package:hiddify/core/theme/theme_preferences.dart';
import 'package:hiddify/features/app_update/notifier/app_update_notifier.dart'; import 'package:hiddify/features/app_update/notifier/app_update_notifier.dart';
import 'package:hiddify/features/connection/widget/connection_wrapper.dart'; import 'package:hiddify/features/connection/widget/connection_wrapper.dart';
import 'package:hiddify/features/profile/notifier/profiles_update_notifier.dart'; import 'package:hiddify/features/profile/notifier/profiles_update_notifier.dart';
import 'package:hiddify/features/shortcut/shortcut_wrapper.dart';
import 'package:hiddify/features/system_tray/widget/system_tray_wrapper.dart'; import 'package:hiddify/features/system_tray/widget/system_tray_wrapper.dart';
import 'package:hiddify/features/window/widget/window_wrapper.dart'; import 'package:hiddify/features/window/widget/window_wrapper.dart';
import 'package:hiddify/features/wrapper/shortcut/shortcut_wrapper.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:upgrader/upgrader.dart'; import 'package:upgrader/upgrader.dart';

View File

@@ -77,11 +77,17 @@ class QRCodeScannerScreen extends HookConsumerWidget with PresLogger {
MobileScanner( MobileScanner(
controller: controller, controller: controller,
onDetect: (capture) { onDetect: (capture) {
final data = capture.barcodes.first; final rawData = capture.barcodes.first.rawValue;
if (context.mounted && data.type == BarcodeType.url) { loggy.debug('captured raw: [$rawData]');
loggy.debug('captured raw: [${data.rawValue}]'); if (rawData != null) {
loggy.debug('captured url: [${data.url?.url}]'); final uri = Uri.tryParse(rawData);
Navigator.of(context, rootNavigator: true).pop(data.url?.url); if (context.mounted && uri != null) {
loggy.debug('captured url: [$uri]');
Navigator.of(context, rootNavigator: true)
.pop(uri.toString());
}
} else {
loggy.warning("unable to capture");
} }
}, },
errorBuilder: (_, error, __) { errorBuilder: (_, error, __) {

View File

@@ -4,17 +4,16 @@ import 'package:hiddify/utils/utils.dart';
import 'package:protocol_handler/protocol_handler.dart'; import 'package:protocol_handler/protocol_handler.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'deep_link_service.g.dart'; part 'deep_link_notifier.g.dart';
typedef NewProfileLink = ({String? url, String? name}); typedef NewProfileLink = ({String? url, String? name});
@Riverpod(keepAlive: true) @Riverpod(keepAlive: true)
class DeepLinkService extends _$DeepLinkService class DeepLinkNotifier extends _$DeepLinkNotifier
with ProtocolListener, InfraLogger { with ProtocolListener, InfraLogger {
@override @override
Future<NewProfileLink?> build() async { Future<NewProfileLink?> build() async {
if (Platform.isLinux) return null; if (Platform.isLinux) return null;
loggy.debug("initializing");
for (final protocol in LinkParser.protocols) { for (final protocol in LinkParser.protocols) {
await protocolHandler.register(protocol); await protocolHandler.register(protocol);
} }

Submodule libcore updated: 29c6413bce...a6ef8d65b6

View File

@@ -329,6 +329,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.3.3" version: "2.3.3"
dependency_validator:
dependency: "direct dev"
description:
name: dependency_validator
sha256: f727a5627aa405965fab4aef4f468e50a9b632ba0737fd2f98c932fec6d712b9
url: "https://pub.dev"
source: hosted
version: "3.2.3"
device_info_plus: device_info_plus:
dependency: transitive dependency: transitive
description: description:
@@ -1102,7 +1110,7 @@ packages:
source: hosted source: hosted
version: "4.1.0" version: "4.1.0"
retry: retry:
dependency: "direct main" dependency: transitive
description: description:
name: retry name: retry
sha256: "822e118d5b3aafed083109c72d5f484c6dc66707885e07c0fbcb8b986bba7efc" sha256: "822e118d5b3aafed083109c72d5f484c6dc66707885e07c0fbcb8b986bba7efc"
@@ -1458,14 +1466,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.3" version: "2.1.3"
timeago:
dependency: "direct main"
description:
name: timeago
sha256: c44b80cbc6b44627c00d76960f2af571f6f50e5dbedef4d9215d455e4335165b
url: "https://pub.dev"
source: hosted
version: "3.6.0"
timing: timing:
dependency: transitive dependency: transitive
description: description:
@@ -1667,7 +1667,7 @@ packages:
source: hosted source: hosted
version: "0.3.0" version: "0.3.0"
web_socket_channel: web_socket_channel:
dependency: "direct main" dependency: transitive
description: description:
name: web_socket_channel name: web_socket_channel
sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b

View File

@@ -1,7 +1,7 @@
name: hiddify name: hiddify
description: Cross Platform Multi Protocol Proxy Frontend. description: Cross Platform Multi Protocol Proxy Frontend.
publish_to: "none" publish_to: "none"
version: 0.13.4+1340 version: 0.13.5+1350
environment: environment:
sdk: ">=3.2.0 <4.0.0" sdk: ">=3.2.0 <4.0.0"
@@ -15,27 +15,25 @@ dependencies:
intl: ^0.18.1 intl: ^0.18.1
slang: ^3.28.0 slang: ^3.28.0
slang_flutter: ^3.28.0 slang_flutter: ^3.28.0
timeago: ^3.6.0
fpdart: ^1.1.0 fpdart: ^1.1.0
freezed_annotation: ^2.4.1 freezed_annotation: ^2.4.1
json_annotation: ^4.8.1 json_annotation: ^4.8.1
hooks_riverpod: ^2.4.9 hooks_riverpod: ^2.4.9
flutter_hooks: ^0.20.3 flutter_hooks: ^0.20.4
riverpod_annotation: ^2.3.3 riverpod_annotation: ^2.3.3
rxdart: ^0.27.7 rxdart: ^0.27.7
drift: ^2.14.1 drift: ^2.14.1
sqlite3_flutter_libs: ^0.5.18 sqlite3_flutter_libs: ^0.5.18
shared_preferences: ^2.2.2 shared_preferences: ^2.2.2
dio: ^5.4.0 dio: ^5.4.0
web_socket_channel: ^2.4.0
ffi: ^2.1.0 ffi: ^2.1.0
path_provider: ^2.1.1 path_provider: ^2.1.1
mobile_scanner: ^3.5.5 mobile_scanner: ^3.5.5
protocol_handler: ^0.1.6 protocol_handler: ^0.1.6
flutter_native_splash: ^2.3.8 flutter_native_splash: ^2.3.9
share_plus: ^7.2.1 share_plus: ^7.2.1
window_manager: ^0.3.7 window_manager: ^0.3.7
tray_manager: ^0.2.0 tray_manager: ^0.2.1
package_info_plus: ^5.0.1 package_info_plus: ^5.0.1
url_launcher: ^6.2.2 url_launcher: ^6.2.2
vclibs: ^0.1.0 vclibs: ^0.1.0
@@ -52,24 +50,23 @@ dependencies:
tint: ^2.0.1 tint: ^2.0.1
accessibility_tools: ^1.0.1 accessibility_tools: ^1.0.1
neat_periodic_task: ^2.0.1 neat_periodic_task: ^2.0.1
retry: ^3.1.2
watcher: ^1.1.0 watcher: ^1.1.0
go_router: ^13.0.0 go_router: ^13.0.1
flex_color_scheme: ^7.3.1 flex_color_scheme: ^7.3.1
flutter_animate: ^4.3.0 flutter_animate: ^4.3.0
flutter_svg: ^2.0.9 flutter_svg: ^2.0.9
gap: ^3.0.1 gap: ^3.0.1
percent_indicator: ^4.2.3 percent_indicator: ^4.2.3
sliver_tools: ^0.2.12 sliver_tools: ^0.2.12
flutter_adaptive_scaffold: ^0.1.7+1 flutter_adaptive_scaffold: ^0.1.7+2
humanizer: ^2.2.0 humanizer: ^2.2.0
upgrader: ^8.4.0 upgrader: ^8.4.0
toastification: ^1.1.0 toastification: ^1.1.0
version: ^3.0.2 version: ^3.0.2
posix: ^6.0.1 posix: ^6.0.1
win32: ^5.1.1 win32: ^5.2.0
qr_flutter: ^4.1.0 qr_flutter: ^4.1.0
native_dio_adapter: ^1.2.0 native_dio_adapter: ^1.3.0
flutter_displaymode: ^0.6.0 flutter_displaymode: ^0.6.0
windows_single_instance: ^1.0.1 windows_single_instance: ^1.0.1
flutter_loggy_dio: ^3.0.1 flutter_loggy_dio: ^3.0.1
@@ -86,11 +83,12 @@ dev_dependencies:
drift_dev: ^2.14.1 drift_dev: ^2.14.1
ffigen: ^8.0.2 ffigen: ^8.0.2
slang_build_runner: ^3.28.0 slang_build_runner: ^3.28.0
flutter_gen_runner: ^5.3.2 flutter_gen_runner: ^5.4.0
go_router_builder: ^2.4.0 go_router_builder: ^2.4.1
custom_lint: ^0.5.7 custom_lint: ^0.5.7
riverpod_lint: ^2.3.7 riverpod_lint: ^2.3.7
icons_launcher: ^2.1.6 icons_launcher: ^2.1.6
dependency_validator: ^3.2.3
flutter: flutter:
uses-material-design: true uses-material-design: true