update packages and fix web issues

This commit is contained in:
hiddify
2024-10-22 21:10:17 +02:00
parent 10bc427c21
commit 7612604d28
26 changed files with 13708 additions and 366 deletions
+8 -5
View File
@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 54;
objectVersion = 60;
objects = {
/* Begin PBXBuildFile section */
@@ -34,7 +34,7 @@
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
4132706C2C8A9C44003A1E9B /* HiddifyCore.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 413270682C8A9BA2003A1E9B /* HiddifyCore.xcframework */; };
4132706C2C8A9C44003A1E9B /* Libcore.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 413270682C8A9BA2003A1E9B /* Libcore.xcframework */; };
59E8864FB99B37076B22F32B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30560DB3EFDF5E86AAD00AB8 /* Pods_RunnerTests.framework */; };
68885DD72B4EF33400D214BA /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03E392B72ADDA00E000ADF15 /* NetworkExtension.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
@@ -138,7 +138,7 @@
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
413270682C8A9BA2003A1E9B /* HiddifyCore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Libcore.xcframework; path = Frameworks/Libcore.xcframework; sourceTree = "<group>"; };
413270682C8A9BA2003A1E9B /* Libcore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Libcore.xcframework; path = Frameworks/Libcore.xcframework; sourceTree = "<group>"; };
574F12C7748958784380337F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
60F1D4AAC33ACF5C8307310D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
6836D3FA2B57FDFF00A79D75 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = "<group>"; };
@@ -170,7 +170,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
4132706C2C8A9C44003A1E9B /* HiddifyCore.xcframework in Frameworks */,
4132706C2C8A9C44003A1E9B /* Libcore.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -363,7 +363,7 @@
B8133545EEE13EDD5549E6A3 /* Frameworks */ = {
isa = PBXGroup;
children = (
413270682C8A9BA2003A1E9B /* HiddifyCore.xcframework */,
413270682C8A9BA2003A1E9B /* Libcore.xcframework */,
0736954E2B1FEB3E007249BE /* mobile_scanner.xcframework */,
07A63A932B1E72FB00CAFA4D /* cupertino_http.xcframework */,
07A63A972B1E72FB00CAFA4D /* device_info_plus.xcframework */,
@@ -955,6 +955,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = M7Q8ASP66Z;
ENABLE_BITCODE = NO;
"EXCLUDED_ARCHS[sdk=iphoneos*]" = armv7;
INFOPLIST_FILE = Runner/Info.plist;
@@ -1173,6 +1174,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = M7Q8ASP66Z;
ENABLE_BITCODE = NO;
"EXCLUDED_ARCHS[sdk=iphoneos*]" = armv7;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "i386 arm64";
@@ -1220,6 +1222,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = M7Q8ASP66Z;
ENABLE_BITCODE = NO;
"EXCLUDED_ARCHS[sdk=iphoneos*]" = armv7;
INFOPLIST_FILE = Runner/Info.plist;
+25 -20
View File
@@ -32,8 +32,9 @@ Future<void> lazyBootstrap(
WidgetsBinding widgetsBinding,
Environment env,
) async {
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
if (!kIsWeb) {
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
}
LoggerController.preInit();
FlutterError.onError = Logger.logFlutterError;
WidgetsBinding.instance.platformDispatcher.onError = Logger.logPlatformDispatcherError;
@@ -123,32 +124,34 @@ Future<void> lazyBootstrap(
() => container.read(activeProfileProvider.future),
timeout: 1000,
);
await _safeInit(
"deep link service",
() => container.read(deepLinkNotifierProvider.future),
timeout: 1000,
);
await _init(
"sing-box",
() => container.read(singboxServiceProvider).init(),
);
if (PlatformUtils.isDesktop) {
if (!kIsWeb) {
await _safeInit(
"system tray",
() => container.read(systemTrayNotifierProvider.future),
"deep link service",
() => container.read(deepLinkNotifierProvider.future),
timeout: 1000,
);
}
if (Platform.isAndroid) {
await _safeInit(
"android display mode",
() async {
await FlutterDisplayMode.setHighRefreshRate();
},
);
}
if (PlatformUtils.isDesktop) {
await _safeInit(
"system tray",
() => container.read(systemTrayNotifierProvider.future),
timeout: 1000,
);
}
if (Platform.isAndroid) {
await _safeInit(
"android display mode",
() async {
await FlutterDisplayMode.setHighRefreshRate();
},
);
}
}
Logger.bootstrap.info("bootstrap took [${stopWatch.elapsedMilliseconds}ms]");
stopWatch.stop();
@@ -161,7 +164,9 @@ Future<void> lazyBootstrap(
),
);
FlutterNativeSplash.remove();
if (!kIsWeb) {
FlutterNativeSplash.remove();
}
}
Future<T> _init<T>(
+5 -5
View File
@@ -1,7 +1,7 @@
import 'package:flutter/foundation.dart';
import 'package:hiddify/core/analytics/analytics_filter.dart';
import 'package:hiddify/core/analytics/analytics_logger.dart';
import 'package:hiddify/core/app_info/app_info_provider.dart';
// import 'package:hiddify/core/app_info/app_info_provider.dart';
import 'package:hiddify/core/logger/logger_controller.dart';
import 'package:hiddify/core/model/environment.dart';
import 'package:hiddify/core/preferences/preferences_provider.dart';
@@ -33,8 +33,8 @@ class AnalyticsController extends _$AnalyticsController with AppLogger {
await _preferences.setBool(enableAnalyticsPrefKey, true);
}
final env = ref.read(environmentProvider);
final appInfo = await ref.read(appInfoProvider.future);
// final env = ref.read(environmentProvider);
// final appInfo = await ref.read(appInfoProvider.future);
final dsn = !kDebugMode || _testCrashReport ? Environment.sentryDSN : "";
final sentryLogger = SentryLoggyIntegration();
LoggerController.instance.addPrinter("analytics", sentryLogger);
@@ -42,8 +42,8 @@ class AnalyticsController extends _$AnalyticsController with AppLogger {
await SentryFlutter.init(
(options) {
options.dsn = dsn;
options.environment = env.name;
options.dist = appInfo.release.name;
// options.environment = env.name;
// options.dist = appInfo.release.name;
options.debug = kDebugMode;
options.enableNativeCrashHandling = true;
options.enableNdkScopeSync = true;
+1 -1
View File
@@ -5,7 +5,7 @@ import 'package:hiddify/core/model/failures.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
FutureOr<SentryEvent?> sentryBeforeSend(SentryEvent event, {Hint? hint}) {
FutureOr<SentryEvent?> sentryBeforeSend(SentryEvent event, Hint hint) async {
if (!canSendEvent(event.throwable)) return null;
return event.copyWith(
user: SentryUser(email: "", username: "", ipAddress: "0.0.0.0"),
+4 -4
View File
@@ -1,5 +1,6 @@
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:hiddify/core/model/app_info_entity.dart';
import 'package:hiddify/core/model/environment.dart';
import 'package:package_info_plus/package_info_plus.dart';
@@ -8,8 +9,7 @@ import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'app_info_provider.g.dart';
@Riverpod(keepAlive: true)
Environment environment(EnvironmentRef ref) =>
throw Exception("override environmentProvider");
Environment environment(EnvironmentRef ref) => throw Exception("override environmentProvider");
@Riverpod(keepAlive: true)
class AppInfo extends _$AppInfo {
@@ -22,8 +22,8 @@ class AppInfo extends _$AppInfo {
version: packageInfo.version,
buildNumber: packageInfo.buildNumber,
release: Release.read(),
operatingSystem: Platform.operatingSystem,
operatingSystemVersion: Platform.operatingSystemVersion,
operatingSystem: kIsWeb ? "web" : Platform.operatingSystem,
operatingSystemVersion: kIsWeb ? "web" : Platform.operatingSystemVersion,
environment: environment,
);
}
+2 -2
View File
@@ -1,6 +1,6 @@
import 'package:drift/drift.dart';
// ignore: depend_on_referenced_packages
import 'package:drift_dev/api/migrations.dart';
// import 'package:drift_dev/api/migrations.dart';
import 'package:flutter/foundation.dart';
import 'package:hiddify/core/database/connection/database_connection.dart';
import 'package:hiddify/core/database/converters/duration_converter.dart';
@@ -59,7 +59,7 @@ class AppDatabase extends _$AppDatabase with InfraLogger {
),
beforeOpen: (details) async {
if (kDebugMode) {
await validateDatabaseSchema();
// await validateDatabaseSchema();
}
},
);
@@ -1,14 +1,17 @@
import 'dart:io';
import 'package:drift/drift.dart';
import 'package:drift/native.dart';
import 'package:hiddify/core/directories/directories_provider.dart';
import 'package:path/path.dart' as p;
import 'package:drift_flutter/drift_flutter.dart';
LazyDatabase openConnection() {
return LazyDatabase(() async {
final dbDir = await AppDirectories.getDatabaseDirectory();
final file = File(p.join(dbDir.path, 'db.sqlite'));
return NativeDatabase(file);
// final dbDir = await AppDirectories.getDatabaseDirectory();
// final file = File(p.join(dbDir.path, 'db.sqlite'));
return driftDatabase(
name: "db",
web: DriftWebOptions(
sqlite3Wasm: Uri.parse('sqlite3.wasm'),
driftWorker: Uri.parse('drift_worker.js'),
));
});
}
@@ -5,6 +5,7 @@ import 'package:hiddify/core/model/directories.dart';
import 'package:hiddify/utils/custom_loggers.dart';
import 'package:path_provider/path_provider.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:flutter/foundation.dart' show kIsWeb;
part 'directories_provider.g.dart';
@@ -15,6 +16,9 @@ class AppDirectories extends _$AppDirectories with InfraLogger {
@override
Future<Directories> build() async {
final Directories dirs;
if (kIsWeb) {
return (baseDir: Directory("."), workingDir: Directory("."), tempDir: Directory("."));
}
if (Platform.isIOS) {
final paths = await _methodChannel.invokeMethod<Map>("get_paths");
loggy.debug("paths: $paths");
@@ -45,6 +49,9 @@ class AppDirectories extends _$AppDirectories with InfraLogger {
}
static Future<Directory> getDatabaseDirectory() async {
if (kIsWeb) {
return Directory(".");
}
if (Platform.isIOS || Platform.isMacOS) {
return getLibraryDirectory();
} else if (Platform.isWindows || Platform.isLinux) {
+2 -1
View File
@@ -1,10 +1,11 @@
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:hiddify/gen/fonts.gen.dart';
import 'package:hiddify/gen/translations.g.dart';
extension AppLocaleX on AppLocale {
String get preferredFontFamily => this == AppLocale.fa ? FontFamily.shabnam : (!Platform.isWindows ? "" : FontFamily.emoji);
String get preferredFontFamily => this == AppLocale.fa ? FontFamily.shabnam : (kIsWeb || !Platform.isWindows ? "" : FontFamily.emoji);
String get localeName => switch (flutterLocale.toString()) {
"en" => "English",
+3 -2
View File
@@ -3,6 +3,7 @@ import 'dart:io';
import 'package:hiddify/core/logger/custom_logger.dart';
import 'package:hiddify/utils/custom_loggers.dart';
import 'package:loggy/loggy.dart';
import 'package:flutter/foundation.dart' show kIsWeb;
class LoggerController extends LoggyPrinter with InfraLogger {
LoggerController(
@@ -24,7 +25,7 @@ class LoggerController extends LoggyPrinter with InfraLogger {
static void init(String appLogPath) {
_instance = LoggerController(
const ConsolePrinter(),
{"app": FileLogPrinter(appLogPath)},
{"app": kIsWeb ? const ConsolePrinter() : FileLogPrinter(appLogPath)},
);
Loggy.initLoggy(logPrinter: _instance);
}
@@ -33,7 +34,7 @@ class LoggerController extends LoggyPrinter with InfraLogger {
final logLevel = debugMode ? LogLevel.all : LogLevel.info;
final logToFile = debugMode || (!Platform.isAndroid && !Platform.isIOS);
if (!logToFile) _instance.removePrinter("app");
if (!logToFile || kIsWeb) _instance.removePrinter("app");
Loggy.initLoggy(
logPrinter: _instance,
+2 -2
View File
@@ -131,7 +131,7 @@ class AdaptiveMenu extends HookConsumerWidget {
hasTopBarLayer: false,
isTopBarLayerAlwaysVisible: true,
topBarTitle: Text(item.title),
mainContentSlivers: [
mainContentSliversBuilder: (context) => [
SliverList.list(children: subItems),
],
),
@@ -165,7 +165,7 @@ class AdaptiveMenu extends HookConsumerWidget {
pageListBuilder: (context) => [
SliverWoltModalSheetPage(
hasTopBarLayer: false,
mainContentSlivers: [
mainContentSliversBuilder: (context) => [
SliverList.list(children: buildSheetItems(items, 0)),
],
),
@@ -19,7 +19,14 @@ const _debugUpgrader = true;
@riverpod
Upgrader upgrader(UpgraderRef ref) => Upgrader(
appcastConfig: AppcastConfiguration(url: Constants.appCastUrl),
storeController: UpgraderStoreController(
onAndroid: () => ref.read(appInfoProvider).requireValue.release.allowCustomUpdateChecker ? UpgraderAppcastStore(appcastURL: Constants.appCastUrl) : UpgraderPlayStore(),
oniOS: () => UpgraderAppStore(),
onLinux: () => UpgraderAppcastStore(appcastURL: Constants.appCastUrl),
onWindows: () => UpgraderAppcastStore(appcastURL: Constants.appCastUrl),
onMacOS: () => UpgraderAppcastStore(appcastURL: Constants.appCastUrl),
onWeb: () => UpgraderAppcastStore(appcastURL: Constants.appCastUrl),
),
debugLogging: _debugUpgrader && kDebugMode,
durationUntilAlertAgain: const Duration(hours: 12),
messages: UpgraderMessages(
@@ -1,6 +1,6 @@
import 'package:hiddify/core/directories/directories_provider.dart';
import 'package:hiddify/features/config_option/data/config_option_data_providers.dart';
import 'package:hiddify/features/connection/data/connection_platform_source.dart';
import 'package:hiddify/features/connection/data/connection_repository.dart';
import 'package:hiddify/features/profile/data/profile_data_providers.dart';
@@ -17,7 +17,6 @@ ConnectionRepository connectionRepository(
directories: ref.watch(appDirectoriesProvider).requireValue,
configOptionRepository: ref.watch(configOptionRepositoryProvider),
singbox: ref.watch(singboxServiceProvider),
platformSource: ConnectionPlatformSourceImpl(),
profilePathResolver: ref.watch(profilePathResolverProvider),
);
}
@@ -1,69 +0,0 @@
import 'dart:async';
import 'dart:ffi';
import 'dart:io';
import 'package:hiddify/core/utils/ffi_utils.dart';
import 'package:hiddify/utils/custom_loggers.dart';
import 'package:hiddify/utils/utils.dart';
import 'package:posix/posix.dart';
import 'package:win32/win32.dart';
abstract interface class ConnectionPlatformSource {
Future<bool> checkPrivilege();
}
class ConnectionPlatformSourceImpl
with InfraLogger
implements ConnectionPlatformSource {
@override
Future<bool> checkPrivilege() async {
try {
if (Platform.isWindows) {
bool isElevated = false;
withMemory<void, Uint32>(sizeOf<Uint32>(), (phToken) {
withMemory<void, Uint32>(sizeOf<Uint32>(), (pReturnedSize) {
withMemory<void, _TokenElevation>(sizeOf<_TokenElevation>(),
(pElevation) {
if (OpenProcessToken(
GetCurrentProcess(),
TOKEN_QUERY,
phToken.cast(),
) ==
1) {
if (GetTokenInformation(
phToken.value,
TOKEN_INFORMATION_CLASS.TokenElevation,
pElevation,
sizeOf<_TokenElevation>(),
pReturnedSize,
) ==
1) {
isElevated = pElevation.ref.tokenIsElevated != 0;
}
}
if (phToken.value != 0) {
CloseHandle(phToken.value);
}
});
});
});
return isElevated;
} else if (Platform.isLinux || Platform.isMacOS) {
final euid = geteuid();
return euid == 0;
} else {
return true;
}
} catch (e) {
loggy.warning("error checking privilege", e);
return true; // return true so core handles it
}
}
}
sealed class _TokenElevation extends Struct {
/// A nonzero value if the token has elevated privileges;
/// otherwise, a zero value.
@Int32()
external int tokenIsElevated;
}
@@ -2,7 +2,7 @@ import 'package:fpdart/fpdart.dart';
import 'package:hiddify/core/model/directories.dart';
import 'package:hiddify/core/utils/exception_handler.dart';
import 'package:hiddify/features/config_option/data/config_option_repository.dart';
import 'package:hiddify/features/connection/data/connection_platform_source.dart';
import 'package:hiddify/features/connection/model/connection_failure.dart';
import 'package:hiddify/features/connection/model/connection_status.dart';
@@ -37,14 +37,13 @@ class ConnectionRepositoryImpl with ExceptionHandler, InfraLogger implements Con
ConnectionRepositoryImpl({
required this.directories,
required this.singbox,
required this.platformSource,
required this.configOptionRepository,
required this.profilePathResolver,
});
final Directories directories;
final SingboxService singbox;
final ConnectionPlatformSource platformSource;
final ConfigOptionRepository configOptionRepository;
final ProfilePathResolver profilePathResolver;
@@ -156,13 +155,13 @@ class ConnectionRepositoryImpl with ExceptionHandler, InfraLogger implements Con
await $(
TaskEither(() async {
if (options.enableTun) {
final hasPrivilege = await platformSource.checkPrivilege();
if (!hasPrivilege) {
loggy.warning("missing privileges for tun mode");
return left(const MissingPrivilege());
}
}
// if (options.enableTun) {
// final hasPrivilege = await platformSource.checkPrivilege();
// if (!hasPrivilege) {
// loggy.warning("missing privileges for tun mode");
// return left(const MissingPrivilege());
// }
// }
return right(unit);
}),
);
@@ -189,13 +188,13 @@ class ConnectionRepositoryImpl with ExceptionHandler, InfraLogger implements Con
await $(
TaskEither(() async {
if (options.enableTun) {
final hasPrivilege = await platformSource.checkPrivilege();
if (!hasPrivilege) {
loggy.warning("missing privileges for tun mode");
return left(const MissingPrivilege());
}
}
// if (options.enableTun) {
// final hasPrivilege = await platformSource.checkPrivilege();
// if (!hasPrivilege) {
// loggy.warning("missing privileges for tun mode");
// return left(const MissingPrivilege());
// }
// }
return right(unit);
}),
);
+15 -12
View File
@@ -1,3 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:fpdart/fpdart.dart';
import 'package:hiddify/core/utils/exception_handler.dart';
import 'package:hiddify/features/log/data/log_parser.dart';
@@ -26,18 +27,20 @@ class LogRepositoryImpl with ExceptionHandler, InfraLogger implements LogReposit
TaskEither<LogFailure, Unit> init() {
return exceptionHandler(
() async {
if (!await logPathResolver.directory.exists()) {
await logPathResolver.directory.create(recursive: true);
}
if (await logPathResolver.coreFile().exists()) {
await logPathResolver.coreFile().writeAsString("");
} else {
await logPathResolver.coreFile().create(recursive: true);
}
if (await logPathResolver.appFile().exists()) {
await logPathResolver.appFile().writeAsString("");
} else {
await logPathResolver.appFile().create(recursive: true);
if (!kIsWeb) {
if (!await logPathResolver.directory.exists()) {
await logPathResolver.directory.create(recursive: true);
}
if (await logPathResolver.coreFile().exists()) {
await logPathResolver.coreFile().writeAsString("");
} else {
await logPathResolver.coreFile().create(recursive: true);
}
if (await logPathResolver.appFile().exists()) {
await logPathResolver.appFile().writeAsString("");
} else {
await logPathResolver.appFile().create(recursive: true);
}
}
return right(unit);
},
@@ -14,7 +14,7 @@ import 'package:uuid/uuid.dart';
/// - url filename extension (example: `https://example.com/config.json`) -> name=`config`
/// - if none of these methods return a non-blank string, fallback to `Remote Profile`
abstract class ProfileParser {
static const infiniteTrafficThreshold = 9223372036854775807;
static const infiniteTrafficThreshold = 92233720368;
static const infiniteTimeThreshold = 92233720368;
static RemoteProfileEntity parse(
@@ -86,12 +86,12 @@ abstract class ProfileParser {
for (final v in values) v.split('=').first.trim(): num.tryParse(v.split('=').second.trim())?.toInt(),
};
if (map case {"upload": final upload?, "download": final download?, "total": var total, "expire": var expire}) {
total = (total == null || total == 0) ? infiniteTrafficThreshold : total;
final total1 = (total == null || total == 0) ? infiniteTrafficThreshold : total;
expire = (expire == null || expire == 0) ? infiniteTimeThreshold : expire;
return SubscriptionInfo(
upload: upload,
download: download,
total: total,
total: total1,
expire: DateTime.fromMillisecondsSinceEpoch(expire * 1000),
);
}
@@ -2,6 +2,7 @@ import 'dart:io';
import 'package:dio/dio.dart';
import 'package:drift/drift.dart';
import 'package:flutter/foundation.dart';
import 'package:fpdart/fpdart.dart';
import 'package:hiddify/core/database/app_database.dart';
import 'package:hiddify/core/http_client/dio_http_client.dart';
@@ -86,9 +87,12 @@ class ProfileRepositoryImpl with ExceptionHandler, InfraLogger implements Profil
TaskEither<ProfileFailure, Unit> init() {
return exceptionHandler(
() async {
if (!await profilePathResolver.directory.exists()) {
await profilePathResolver.directory.create(recursive: true);
if (!kIsWeb) {
if (!await profilePathResolver.directory.exists()) {
await profilePathResolver.directory.create(recursive: true);
}
}
return right(unit);
},
ProfileUnexpectedFailure.new,
+12 -12
View File
@@ -1,5 +1,6 @@
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hiddify/core/router/router.dart';
@@ -17,20 +18,19 @@ class ShortcutWrapper extends HookConsumerWidget {
shortcuts: {
// Android TV D-pad select support
LogicalKeySet(LogicalKeyboardKey.select): const ActivateIntent(),
if (!kIsWeb) ...{
if (Platform.isLinux) ...{
// quit app using Control+Q on Linux
const SingleActivator(LogicalKeyboardKey.keyQ, control: true): QuitAppIntent(),
},
if (Platform.isMacOS) ...{
// close window using Command+W on macOS
const SingleActivator(LogicalKeyboardKey.keyW, meta: true): CloseWindowIntent(),
if (Platform.isLinux) ...{
// quit app using Control+Q on Linux
const SingleActivator(LogicalKeyboardKey.keyQ, control: true): QuitAppIntent(),
// open settings using Command+, on macOS
const SingleActivator(LogicalKeyboardKey.comma, meta: true): OpenSettingsIntent(),
},
},
if (Platform.isMacOS) ...{
// close window using Command+W on macOS
const SingleActivator(LogicalKeyboardKey.keyW, meta: true): CloseWindowIntent(),
// open settings using Command+, on macOS
const SingleActivator(LogicalKeyboardKey.comma, meta: true): OpenSettingsIntent(),
},
// try adding profile using Command+V and Control+V
const SingleActivator(LogicalKeyboardKey.keyV, meta: true): PasteIntent(),
const SingleActivator(LogicalKeyboardKey.keyV, control: true): PasteIntent(),
+3 -2
View File
@@ -1,6 +1,7 @@
import 'dart:io';
import 'package:flutter/foundation.dart';
abstract class PlatformUtils {
static bool get isDesktop =>
Platform.isLinux || Platform.isWindows || Platform.isMacOS;
static bool get isDesktop => !kIsWeb && (Platform.isLinux || Platform.isWindows || Platform.isMacOS);
}
+224 -163
View File
@@ -5,26 +5,31 @@ packages:
dependency: transitive
description:
name: _fe_analyzer_shared
sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7"
sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834
url: "https://pub.dev"
source: hosted
version: "67.0.0"
version: "72.0.0"
_macros:
dependency: transitive
description: dart
source: sdk
version: "0.3.2"
accessibility_tools:
dependency: "direct main"
description:
name: accessibility_tools
sha256: deca88d9f181ad6fdd12df9c5fa952c763264da14336ca1c0e4124525725b174
sha256: ae082866ddc7d4b06d7344f20f551d71302c80070d1e6c5f112f1d09b98de95c
url: "https://pub.dev"
source: hosted
version: "1.0.1"
version: "2.2.3"
analyzer:
dependency: transitive
description:
name: analyzer
sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d"
sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139
url: "https://pub.dev"
source: hosted
version: "6.4.1"
version: "6.7.0"
analyzer_plugin:
dependency: transitive
description:
@@ -37,10 +42,10 @@ packages:
dependency: transitive
description:
name: ansicolor
sha256: "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880"
sha256: "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f"
url: "https://pub.dev"
source: hosted
version: "2.0.2"
version: "2.0.3"
archive:
dependency: transitive
description:
@@ -53,10 +58,10 @@ packages:
dependency: transitive
description:
name: args
sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
url: "https://pub.dev"
source: hosted
version: "2.5.0"
version: "2.6.0"
async:
dependency: transitive
description:
@@ -73,6 +78,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "5.7.0"
bazel_worker:
dependency: transitive
description:
name: bazel_worker
sha256: "4eef19cc486c289e4b06c69d0f6f3192e85cc93c25d4d15d02afb205e388d2f0"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
boolean_selector:
dependency: transitive
description:
@@ -105,6 +118,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.0.2"
build_modules:
dependency: transitive
description:
name: build_modules
sha256: "403ba034d94f1a0f26362fe14fd83e9ff33644f5cbe879982920e3d209650b43"
url: "https://pub.dev"
source: hosted
version: "5.0.9"
build_resolvers:
dependency: transitive
description:
@@ -117,18 +138,26 @@ packages:
dependency: "direct dev"
description:
name: build_runner
sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7"
sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
url: "https://pub.dev"
source: hosted
version: "2.4.11"
version: "2.4.13"
build_runner_core:
dependency: transitive
description:
name: build_runner_core
sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe
sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0
url: "https://pub.dev"
source: hosted
version: "7.3.1"
version: "7.3.2"
build_web_compilers:
dependency: "direct dev"
description:
name: build_web_compilers
sha256: e8d818410cc8b4dc96c4960ce0ab84fe3f2b0ca6576cc130fd7277b56eba9d68
url: "https://pub.dev"
source: hosted
version: "4.0.11"
built_collection:
dependency: transitive
description:
@@ -230,10 +259,10 @@ packages:
dependency: transitive
description:
name: convert
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
url: "https://pub.dev"
source: hosted
version: "3.1.1"
version: "3.1.2"
cross_file:
dependency: transitive
description:
@@ -246,10 +275,10 @@ packages:
dependency: transitive
description:
name: crypto
sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27
sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
version: "3.0.6"
csslib:
dependency: transitive
description:
@@ -286,34 +315,34 @@ packages:
dependency: transitive
description:
name: custom_lint_core
sha256: a85e8f78f4c52f6c63cdaf8c872eb573db0231dcdf3c3a5906d493c1f8bc20e6
sha256: "4ddbbdaa774265de44c97054dcec058a83d9081d071785ece601e348c18c267d"
url: "https://pub.dev"
source: hosted
version: "0.6.3"
version: "0.6.5"
dart_mappable:
dependency: "direct main"
description:
name: dart_mappable
sha256: "47269caf2060533c29b823ff7fa9706502355ffcb61e7f2a374e3a0fb2f2c3f0"
sha256: f69a961ae8589724ebb542e588f228ae844c5f78028899cbe2cc718977c1b382
url: "https://pub.dev"
source: hosted
version: "4.2.2"
version: "4.3.0"
dart_mappable_builder:
dependency: "direct dev"
description:
name: dart_mappable_builder
sha256: ab5cf9086862d3fceb9773e945b5f95cc5471a28c782a4fc451bd400a4e0c64e
sha256: "04a6e7117382f8a8689b3e363bee6c3de8c9ea4332e664148fe01bd576eb1126"
url: "https://pub.dev"
source: hosted
version: "4.2.3"
version: "4.3.0"
dart_style:
dependency: transitive
description:
name: dart_style
sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9"
sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
url: "https://pub.dev"
source: hosted
version: "2.3.6"
version: "2.3.7"
dartx:
dependency: "direct main"
description:
@@ -334,18 +363,18 @@ packages:
dependency: "direct dev"
description:
name: dependency_validator
sha256: f727a5627aa405965fab4aef4f468e50a9b632ba0737fd2f98c932fec6d712b9
sha256: "81b5dc4cc34a1c05d2fa24aa8d658cb8f048ca23e63d5aaec420200190f1c4b0"
url: "https://pub.dev"
source: hosted
version: "3.2.3"
version: "4.1.1"
device_info_plus:
dependency: transitive
description:
name: device_info_plus
sha256: "77f757b789ff68e4eaf9c56d1752309bd9f7ad557cb105b938a7f8eb89e59110"
sha256: c4af09051b4f0508f6c1dc0a5c085bf014d5c9a4a0678ce1799c2b4d716387a0
url: "https://pub.dev"
source: hosted
version: "9.1.2"
version: "11.1.0"
device_info_plus_platform_interface:
dependency: transitive
description:
@@ -358,10 +387,10 @@ packages:
dependency: "direct main"
description:
name: dio
sha256: e17f6b3097b8c51b72c74c9f071a605c47bcc8893839bd66732457a5ebe73714
sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260"
url: "https://pub.dev"
source: hosted
version: "5.5.0+1"
version: "5.7.0"
dio_smart_retry:
dependency: "direct main"
description:
@@ -374,26 +403,34 @@ packages:
dependency: transitive
description:
name: dio_web_adapter
sha256: "36c5b2d79eb17cdae41e974b7a8284fec631651d2a6f39a8a2ff22327e90aeac"
sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
version: "2.0.0"
drift:
dependency: "direct main"
description:
name: drift
sha256: "4e0ffee40d23f0b809e6cff1ad202886f51d629649073ed42d9cd1d194ea943e"
sha256: df027d168a2985a2e9da900adeba2ab0136f0d84436592cf3cd5135f82c8579c
url: "https://pub.dev"
source: hosted
version: "2.19.1+1"
version: "2.21.0"
drift_dev:
dependency: "direct dev"
description:
name: drift_dev
sha256: ac7647c6cedca99724ca300cff9181f6dd799428f8ed71f94159ed0528eaec26
sha256: "27bab15e7869b69259663590381180117873b9b273a1ea9ebb21bb73133d1233"
url: "https://pub.dev"
source: hosted
version: "2.19.1"
version: "2.21.0"
drift_flutter:
dependency: "direct main"
description:
name: drift_flutter
sha256: fec503e9d408f36bb345f9f6d24bc9d62b7b5f970db49760253d9e8d3acd48d5
url: "https://pub.dev"
source: hosted
version: "0.2.1"
dynamic_color:
dependency: "direct main"
description:
@@ -422,42 +459,42 @@ packages:
dependency: "direct main"
description:
name: ffi
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.3"
ffigen:
dependency: "direct dev"
description:
name: ffigen
sha256: d3e76c2ad48a4e7f93a29a162006f00eba46ce7c08194a77bb5c5e97d1b5ff0a
sha256: "585a852fefda1b796322b45b433e602daae58f92dd8d918b2497db02f1cabf7c"
url: "https://pub.dev"
source: hosted
version: "8.0.2"
version: "14.0.1"
file:
dependency: transitive
description:
name: file
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
url: "https://pub.dev"
source: hosted
version: "6.1.4"
version: "7.0.1"
fixnum:
dependency: "direct main"
description:
name: fixnum
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
url: "https://pub.dev"
source: hosted
version: "1.1.0"
version: "1.1.1"
fluentui_system_icons:
dependency: "direct main"
description:
name: fluentui_system_icons
sha256: af92e0abc8a4060ffdcae2ad31a050cd242bf9eff121769b9cfb11fe05d08d6c
sha256: "0ff2d03ca3b388c41750abbe6214dbf455b57c215c489155c97989b0a9d3f78d"
url: "https://pub.dev"
source: hosted
version: "1.1.252"
version: "1.1.260"
flutter:
dependency: "direct main"
description: flutter
@@ -467,10 +504,10 @@ packages:
dependency: "direct main"
description:
name: flutter_adaptive_scaffold
sha256: a464b74540401cade07af0ae84d19f210534cac67651a150fb413507040b74f6
sha256: "8c515a2cb8abb3a567f8e77f10b33f47bb6fcadfe31f62364e0aca36280cdf93"
url: "https://pub.dev"
source: hosted
version: "0.1.12"
version: "0.3.1"
flutter_animate:
dependency: "direct main"
description:
@@ -500,18 +537,18 @@ packages:
dependency: transitive
description:
name: flutter_gen_core
sha256: d8e828ad015a8511624491b78ad8e3f86edb7993528b1613aefbb4ad95947795
sha256: "46ecf0e317413dd065547887c43f93f55e9653e83eb98dc13dd07d40dd225325"
url: "https://pub.dev"
source: hosted
version: "5.6.0"
version: "5.8.0"
flutter_gen_runner:
dependency: "direct dev"
description:
name: flutter_gen_runner
sha256: "931b03f77c164df0a4815aac0efc619a6ac8ec4cada55025119fca4894dada90"
sha256: "77f0a02fc30d9fcf2549fe874eb3fde091435724904bcbb1af60aa40cbfab1f4"
url: "https://pub.dev"
source: hosted
version: "5.6.0"
version: "5.8.0"
flutter_hooks:
dependency: "direct main"
description:
@@ -593,10 +630,10 @@ packages:
dependency: "direct main"
description:
name: flutter_native_splash
sha256: aa06fec78de2190f3db4319dd60fdc8d12b2626e93ef9828633928c2dcaea840
sha256: ee5c9bd2b74ea8676442fd4ab876b5d41681df49276488854d6c81a5377c0ef1
url: "https://pub.dev"
source: hosted
version: "2.4.1"
version: "2.4.2"
flutter_platform_widgets:
dependency: "direct main"
description:
@@ -609,18 +646,18 @@ packages:
dependency: transitive
description:
name: flutter_riverpod
sha256: "0f1974eff5bbe774bf1d870e406fc6f29e3d6f1c46bd9c58e7172ff68a785d7d"
sha256: "6eda4e247774474c715a0805a2fb8e3cd55fbae4ead641e063c95b4bd5f3b317"
url: "https://pub.dev"
source: hosted
version: "2.5.1"
version: "2.6.0"
flutter_shaders:
dependency: transitive
description:
name: flutter_shaders
sha256: "02750b545c01ff4d8e9bbe8f27a7731aa3778402506c67daa1de7f5fc3f4befe"
sha256: "34794acadd8275d971e02df03afee3dee0f98dbfb8c4837082ad0034f612a3e2"
url: "https://pub.dev"
source: hosted
version: "0.1.2"
version: "0.1.3"
flutter_svg:
dependency: "direct main"
description:
@@ -630,7 +667,7 @@ packages:
source: hosted
version: "2.0.10+1"
flutter_test:
dependency: "direct dev"
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
@@ -667,10 +704,10 @@ packages:
dependency: "direct dev"
description:
name: freezed
sha256: a434911f643466d78462625df76fd9eb13e57348ff43fe1f77bbe909522c67a1
sha256: "44c19278dd9d89292cf46e97dc0c1e52ce03275f40a97c5a348e802a924bf40e"
url: "https://pub.dev"
source: hosted
version: "2.5.2"
version: "2.5.7"
freezed_annotation:
dependency: "direct main"
description:
@@ -715,10 +752,10 @@ packages:
dependency: "direct main"
description:
name: go_router
sha256: b465e99ce64ba75e61c8c0ce3d87b66d8ac07f0b35d0a7e0263fcfc10f99e836
sha256: "6f1b756f6e863259a99135ff3c95026c3cdca17d10ebef2bba2261a25ddc8bbc"
url: "https://pub.dev"
source: hosted
version: "13.2.5"
version: "14.3.0"
go_router_builder:
dependency: "direct dev"
description:
@@ -755,10 +792,10 @@ packages:
dependency: "direct main"
description:
name: grpc
sha256: e93ee3bce45c134bf44e9728119102358c7cd69de7832d9a874e2e74eb8cab40
sha256: "5b99b7a420937d4361ece68b798c9af8e04b5bc128a7859f2a4be87427694813"
url: "https://pub.dev"
source: hosted
version: "3.2.4"
version: "4.0.1"
hashcodes:
dependency: transitive
description:
@@ -771,10 +808,10 @@ packages:
dependency: "direct main"
description:
name: hooks_riverpod
sha256: "45b2030a18bcd6dbd680c2c91bc3b33e3fe7c323e3acb5ecec93a613e2fbaa8a"
sha256: "8010a5abaa625a98358d9bce14b56f63dacdb4ec8637544da3bfd0ae184a9ae6"
url: "https://pub.dev"
source: hosted
version: "2.5.1"
version: "2.6.0"
html:
dependency: transitive
description:
@@ -844,18 +881,18 @@ packages:
dependency: transitive
description:
name: image
sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8"
sha256: f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d
url: "https://pub.dev"
source: hosted
version: "4.2.0"
version: "4.3.0"
image_size_getter:
dependency: transitive
description:
name: image_size_getter
sha256: f98c4246144e9b968899d2dfde69091e22a539bb64bc9b0bea51505fbb490e57
sha256: "0511799498340b70993d2dfb34b55a2247b5b801d75a6cdd4543acfcafdb12b0"
url: "https://pub.dev"
source: hosted
version: "2.1.3"
version: "2.2.0"
in_app_review:
dependency: "direct main"
description:
@@ -948,10 +985,10 @@ packages:
dependency: "direct main"
description:
name: launch_at_startup
sha256: "93fc5638e088290004fae358bae691486673d469957d461d9dae5b12248593eb"
sha256: "1f8a75520913d1038630049e6c44a2575a23ffd28cc8b14fdf37401d1d21de84"
url: "https://pub.dev"
source: hosted
version: "0.2.2"
version: "0.3.1"
leak_tracker:
dependency: transitive
description:
@@ -988,10 +1025,10 @@ packages:
dependency: transitive
description:
name: logging
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.3.0"
loggy:
dependency: "direct main"
description:
@@ -1000,6 +1037,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.3"
macros:
dependency: transitive
description:
name: macros
sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
url: "https://pub.dev"
source: hosted
version: "0.1.2-main.4"
matcher:
dependency: transitive
description:
@@ -1044,18 +1089,18 @@ packages:
dependency: transitive
description:
name: mime
sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2"
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
url: "https://pub.dev"
source: hosted
version: "1.0.5"
version: "2.0.0"
mobile_scanner:
dependency: "direct main"
description:
name: mobile_scanner
sha256: b8c0e9afcfd52534f85ec666f3d52156f560b5e6c25b1e3d4fe2087763607926
sha256: e93461298494a3e5475dd2b41068012823b8fe2caf8d47ba545faca2aa3767d6
url: "https://pub.dev"
source: hosted
version: "5.1.1"
version: "6.0.1"
neat_periodic_task:
dependency: "direct main"
description:
@@ -1068,10 +1113,10 @@ packages:
dependency: transitive
description:
name: os_detect
sha256: faf3bcf39515e64da8ff76b2f2805b20a6ff47ae515393e535f8579ff91d6b7f
sha256: e704fb99aa30b2b9a284d87a28eef9ba262f68c25c963d5eb932f54cad07784f
url: "https://pub.dev"
source: hosted
version: "2.0.1"
version: "2.0.2"
package_config:
dependency: transitive
description:
@@ -1084,18 +1129,18 @@ packages:
dependency: "direct main"
description:
name: package_info_plus
sha256: "88bc797f44a94814f2213db1c9bd5badebafdfb8290ca9f78d4b9ee2a3db4d79"
sha256: df3eb3e0aed5c1107bb0fdb80a8e82e778114958b1c5ac5644fb1ac9cae8a998
url: "https://pub.dev"
source: hosted
version: "5.0.1"
version: "8.1.0"
package_info_plus_platform_interface:
dependency: transitive
description:
name: package_info_plus_platform_interface
sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
sha256: ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66
url: "https://pub.dev"
source: hosted
version: "2.0.1"
version: "3.0.1"
path:
dependency: "direct main"
description:
@@ -1124,10 +1169,10 @@ packages:
dependency: transitive
description:
name: path_provider_android
sha256: "490539678396d4c3c0b06efdaab75ae60675c3e0c66f72bc04c2e2c1e0e2abeb"
sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a
url: "https://pub.dev"
source: hosted
version: "2.2.9"
version: "2.2.12"
path_provider_foundation:
dependency: transitive
description:
@@ -1188,10 +1233,10 @@ packages:
dependency: transitive
description:
name: platform
sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65"
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
url: "https://pub.dev"
source: hosted
version: "3.1.5"
version: "3.1.6"
plugin_platform_interface:
dependency: transitive
description:
@@ -1364,10 +1409,10 @@ packages:
dependency: transitive
description:
name: quiver
sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47
sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2
url: "https://pub.dev"
source: hosted
version: "3.2.1"
version: "3.2.2"
rational:
dependency: transitive
description:
@@ -1404,34 +1449,34 @@ packages:
dependency: transitive
description:
name: riverpod
sha256: f21b32ffd26a36555e501b04f4a5dca43ed59e16343f1a30c13632b2351dfa4d
sha256: bd6e656a764e3d27f211975626e0c4f9b8d06ab16acf3c7ba7a8061e09744c75
url: "https://pub.dev"
source: hosted
version: "2.5.1"
version: "2.6.0"
riverpod_analyzer_utils:
dependency: transitive
description:
name: riverpod_analyzer_utils
sha256: "8b71f03fc47ae27d13769496a1746332df4cec43918aeba9aff1e232783a780f"
sha256: ac28d7bc678471ec986b42d88e5a0893513382ff7542c7ac9634463b044ac72c
url: "https://pub.dev"
source: hosted
version: "0.5.1"
version: "0.5.4"
riverpod_annotation:
dependency: "direct main"
description:
name: riverpod_annotation
sha256: e5e796c0eba4030c704e9dae1b834a6541814963292839dcf9638d53eba84f5c
sha256: "1e61f8e7fc360f75e3520bbb35d22213ef542dc0de574cf90d639a358965d743"
url: "https://pub.dev"
source: hosted
version: "2.3.5"
version: "2.6.0"
riverpod_generator:
dependency: "direct dev"
description:
name: riverpod_generator
sha256: d451608bf17a372025fc36058863737636625dfdb7e3cbf6142e0dfeb366ab22
sha256: "63311e361ffc578d655dfc31b48dfa4ed3bc76fd06f9be845e9bf97c5c11a429"
url: "https://pub.dev"
source: hosted
version: "2.4.0"
version: "2.4.3"
rxdart:
dependency: "direct main"
description:
@@ -1440,6 +1485,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.28.0"
scratch_space:
dependency: transitive
description:
name: scratch_space
sha256: "8510fbff458d733a58fc427057d1ac86303b376d609d6e1bc43f240aad9aa445"
url: "https://pub.dev"
source: hosted
version: "1.0.2"
screen_retriever:
dependency: transitive
description:
@@ -1452,66 +1505,66 @@ packages:
dependency: transitive
description:
name: sentry
sha256: "57514bc72d441ffdc463f498d6886aa586a2494fa467a1eb9d649c28010d7ee3"
sha256: "033287044a6644a93498969449d57c37907e56f5cedb17b88a3ff20a882261dd"
url: "https://pub.dev"
source: hosted
version: "7.20.2"
version: "8.9.0"
sentry_dart_plugin:
dependency: "direct main"
description:
name: sentry_dart_plugin
sha256: e81fa3e0ffabd04fdcfbfecd6468d4a342f02ab33edca09708c61bcd2be42b7d
sha256: "699990cfee67174bcdf3bc2de7af9b75045f0e523fed1317c9e077a287aaeec4"
url: "https://pub.dev"
source: hosted
version: "1.7.1"
version: "2.1.0"
sentry_flutter:
dependency: "direct main"
description:
name: sentry_flutter
sha256: "9723d58470ca43a360681ddd26abb71ca7b815f706bc8d3747afd054cf639ded"
sha256: "3780b5a0bb6afd476857cfbc6c7444d969c29a4d9bd1aa5b6960aa76c65b737a"
url: "https://pub.dev"
source: hosted
version: "7.20.2"
version: "8.9.0"
share_plus:
dependency: "direct main"
description:
name: share_plus
sha256: "3ef39599b00059db0990ca2e30fca0a29d8b37aae924d60063f8e0184cf20900"
sha256: "334fcdf0ef9c0df0e3b428faebcac9568f35c747d59831474b2fc56e156d244e"
url: "https://pub.dev"
source: hosted
version: "7.2.2"
version: "10.1.0"
share_plus_platform_interface:
dependency: transitive
description:
name: share_plus_platform_interface
sha256: "251eb156a8b5fa9ce033747d73535bf53911071f8d3b6f4f0b578505ce0d4496"
sha256: c57c0bbfec7142e3a0f55633be504b796af72e60e3c791b44d5a017b985f7a48
url: "https://pub.dev"
source: hosted
version: "3.4.0"
version: "5.0.1"
shared_preferences:
dependency: "direct main"
description:
name: shared_preferences
sha256: c272f9cabca5a81adc9b0894381e9c1def363e980f960fa903c604c471b22f68
sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051"
url: "https://pub.dev"
source: hosted
version: "2.3.1"
version: "2.3.2"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
sha256: a7e8467e9181cef109f601e3f65765685786c1a738a83d7fbbde377589c0d974
sha256: "3b9febd815c9ca29c9e3520d50ec32f49157711e143b7a4ca039eb87e8ade5ab"
url: "https://pub.dev"
source: hosted
version: "2.3.1"
version: "2.3.3"
shared_preferences_foundation:
dependency: transitive
description:
name: shared_preferences_foundation
sha256: "776786cff96324851b656777648f36ac772d88bc4c669acff97b7fce5de3c849"
sha256: "07e050c7cd39bad516f8d64c455f04508d09df104be326d8c02551590a0d513d"
url: "https://pub.dev"
source: hosted
version: "2.5.1"
version: "2.5.3"
shared_preferences_linux:
dependency: transitive
description:
@@ -1585,26 +1638,26 @@ packages:
dependency: "direct main"
description:
name: slang
sha256: f68f6d6709890f85efabfb0318e9d694be2ebdd333e57fe5cb50eee449e4e3ab
sha256: a466773de768eb95bdf681e0a92e7c8010d44bb247b62130426c83ece33aeaed
url: "https://pub.dev"
source: hosted
version: "3.31.1"
version: "3.32.0"
slang_build_runner:
dependency: "direct dev"
description:
name: slang_build_runner
sha256: "6e60160e8000b91824c47221b20d9642e7408287a5a21837ecefc75270197586"
sha256: b2e0c63f3c801a4aa70b4ca43173893d6eb7d5a421fc9d97ad983527397631b3
url: "https://pub.dev"
source: hosted
version: "3.31.0"
version: "3.32.0"
slang_flutter:
dependency: "direct main"
description:
name: slang_flutter
sha256: f8400292be49c11697d94af58d7f7d054c91af759f41ffe71e4e5413871ffc62
sha256: "1a98e878673996902fa5ef0b61ce5c245e41e4d25640d18af061c6aab917b0c7"
url: "https://pub.dev"
source: hosted
version: "3.31.0"
version: "3.32.0"
sliver_tools:
dependency: "direct main"
description:
@@ -1637,6 +1690,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.3.4"
source_maps:
dependency: transitive
description:
name: source_maps
sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703"
url: "https://pub.dev"
source: hosted
version: "0.10.12"
source_span:
dependency: transitive
description:
@@ -1657,26 +1718,26 @@ packages:
dependency: transitive
description:
name: sqlite3
sha256: fde692580bee3379374af1f624eb3e113ab2865ecb161dbe2d8ac2de9735dbdb
sha256: "45f168ae2213201b54e09429ed0c593dc2c88c924a1488d6f9c523a255d567cb"
url: "https://pub.dev"
source: hosted
version: "2.4.5"
version: "2.4.6"
sqlite3_flutter_libs:
dependency: "direct main"
description:
name: sqlite3_flutter_libs
sha256: "62bbb4073edbcdf53f40c80775f33eea01d301b7b81417e5b3fb7395416258c1"
sha256: ccd29dd6cf6fb9351fa07cd6f92895809adbf0779c1d986acf5e3d53b3250e33
url: "https://pub.dev"
source: hosted
version: "0.5.24"
version: "0.5.25"
sqlparser:
dependency: transitive
description:
name: sqlparser
sha256: "3be52b4968fc2f098ba735863404756d2fe3ea0729cf006a5b5612618f74ca04"
sha256: c5f63dff8677407ddcddfa4744c176ea6dc44286c47ba9e69e76d8071398034d
url: "https://pub.dev"
source: hosted
version: "0.37.1"
version: "0.39.1"
stack_trace:
dependency: transitive
description:
@@ -1785,18 +1846,18 @@ packages:
dependency: "direct main"
description:
name: toastification
sha256: "1e01495fe00b8fddce8a7f1da5e4775cd003763698e8363d7122bea4168a395e"
sha256: "4d97fbfa463dfe83691044cba9f37cb185a79bb9205cfecb655fa1f6be126a13"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "2.3.0"
tray_manager:
dependency: "direct main"
description:
name: tray_manager
sha256: c9a63fd88bd3546287a7eb8ccc978d707eef82c775397af17dda3a4f4c039e64
sha256: bdc3ac6c36f3d12d871459e4a9822705ce5a1165a17fa837103bc842719bf3f7
url: "https://pub.dev"
source: hosted
version: "0.2.3"
version: "0.2.4"
type_plus:
dependency: transitive
description:
@@ -1809,10 +1870,10 @@ packages:
dependency: transitive
description:
name: typed_data
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
url: "https://pub.dev"
source: hosted
version: "1.3.2"
version: "1.4.0"
universal_io:
dependency: transitive
description:
@@ -1825,26 +1886,26 @@ packages:
dependency: "direct main"
description:
name: upgrader
sha256: "0c5fe8101b9d3017aebcb5175b49c382699725ffcf477afbe93fc3351491f6e8"
sha256: "9b907a8c956dbf3f2d0430d16134e27543cba98eab31f19a2240ab1c4d920506"
url: "https://pub.dev"
source: hosted
version: "9.0.0"
version: "11.3.0"
url_launcher:
dependency: "direct main"
description:
name: url_launcher
sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3"
sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603"
url: "https://pub.dev"
source: hosted
version: "6.3.0"
version: "6.3.1"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
sha256: "94d8ad05f44c6d4e2ffe5567ab4d741b82d62e3c8e288cc1fcea45965edf47c9"
sha256: "8fc3bae0b68c02c47c5c86fa8bfa74471d42687b0eded01b78de87872db745e2"
url: "https://pub.dev"
source: hosted
version: "6.3.8"
version: "6.3.12"
url_launcher_ios:
dependency: transitive
description:
@@ -1865,10 +1926,10 @@ packages:
dependency: transitive
description:
name: url_launcher_macos
sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de"
sha256: "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672"
url: "https://pub.dev"
source: hosted
version: "3.2.0"
version: "3.2.1"
url_launcher_platform_interface:
dependency: transitive
description:
@@ -1889,18 +1950,18 @@ packages:
dependency: transitive
description:
name: url_launcher_windows
sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185"
sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4"
url: "https://pub.dev"
source: hosted
version: "3.1.2"
version: "3.1.3"
uuid:
dependency: "direct main"
description:
name: uuid
sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90"
sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
url: "https://pub.dev"
source: hosted
version: "4.4.2"
version: "4.5.1"
vclibs:
dependency: "direct main"
description:
@@ -1966,13 +2027,13 @@ packages:
source: hosted
version: "1.1.0"
web:
dependency: "direct overridden"
dependency: transitive
description:
name: web
sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
url: "https://pub.dev"
source: hosted
version: "1.0.0"
version: "1.1.0"
web_socket:
dependency: transitive
description:
@@ -1990,45 +2051,45 @@ packages:
source: hosted
version: "3.0.1"
win32:
dependency: "direct main"
dependency: transitive
description:
name: win32
sha256: "015002c060f1ae9f41a818f2d5640389cc05283e368be19dc8d77cecb43c40c9"
sha256: "2735daae5150e8b1dfeb3eb0544b4d3af0061e9e82cef063adcd583bdae4306a"
url: "https://pub.dev"
source: hosted
version: "5.5.3"
version: "5.7.0"
win32_registry:
dependency: transitive
description:
name: win32_registry
sha256: "723b7f851e5724c55409bb3d5a32b203b3afe8587eaf5dafb93a5fed8ecda0d6"
sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852"
url: "https://pub.dev"
source: hosted
version: "1.1.4"
version: "1.1.5"
window_manager:
dependency: "direct main"
description:
name: window_manager
sha256: "8699323b30da4cdbe2aa2e7c9de567a6abd8a97d9a5c850a3c86dcd0b34bbfbf"
sha256: ab8b2a7f97543d3db2b506c9d875e637149d48ee0c6a5cb5f5fd6e0dac463792
url: "https://pub.dev"
source: hosted
version: "0.3.9"
version: "0.4.2"
wolt_modal_sheet:
dependency: "direct main"
description:
name: wolt_modal_sheet
sha256: "0a04f1a11bbeeb4847bdea17707ab68fffaaa656a5ce75323939647952d696c4"
sha256: "2695dadd87e25604f0d9d64fae3696f4e053dcb7983a71e4494bb94b5bf3b67b"
url: "https://pub.dev"
source: hosted
version: "0.4.1"
version: "0.9.3"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
url: "https://pub.dev"
source: hosted
version: "1.0.4"
version: "1.1.0"
xml:
dependency: transitive
description:
@@ -2054,5 +2115,5 @@ packages:
source: hosted
version: "2.2.1"
sdks:
dart: ">=3.4.0 <4.0.0"
flutter: ">=3.24.0"
dart: ">=3.5.0 <3.7.0"
flutter: ">=3.24.3"
+32 -31
View File
@@ -5,7 +5,7 @@ version: 2.5.6+20506
environment:
sdk: ">=3.3.0 <4.0.0"
flutter: ">=3.24.0 <=3.24.3"
flutter: "^3.24.3"
dependencies:
flutter:
@@ -33,54 +33,56 @@ dependencies:
flutter_hooks: ^0.20.5
riverpod_annotation: ^2.3.4
rxdart: ^0.28.0
drift: ^2.16.0
sqlite3_flutter_libs: ^0.5.24
drift: ^2.21.0
drift_flutter: ^0.2.1
shared_preferences: ^2.2.2
dio: ^5.4.1
ffi: ^2.1.2
path_provider: ^2.1.1
mobile_scanner: ^5.1.1
mobile_scanner: ^6.0.1
protocol_handler: ^0.2.0
flutter_native_splash: ^2.3.10
share_plus: ^7.2.2
window_manager: ^0.3.8
share_plus: ^10.1.0
window_manager: ^0.4.2
tray_manager: ^0.2.1
package_info_plus: ^5.0.1
package_info_plus: ^8.1.0
url_launcher: ^6.2.5
vclibs: ^0.1.2
launch_at_startup: ^0.2.2
sentry_flutter: ^7.16.1
sentry_dart_plugin: ^1.7.1
launch_at_startup: ^0.3.1
sentry_flutter: ^8.9.0
sentry_dart_plugin: ^2.1.0
sqlite3_flutter_libs: ^0.5.25
combine: ^0.5.7
path: ^1.8.3
path: ^1.9.0
loggy: ^2.0.3
flutter_loggy: ^2.0.2
meta: ^1.10.0
meta: ^1.15.0
dartx: ^1.2.0
uuid: ^4.3.3
tint: ^2.0.1
accessibility_tools: ^1.0.1
accessibility_tools: ^2.2.3
neat_periodic_task: ^2.0.1
watcher: ^1.1.0
go_router: ^13.2.0
go_router: ^14.3.0
flutter_animate: ^4.5.0
flutter_svg: ^2.0.10+1
gap: ^3.0.1
percent_indicator: ^4.2.3
sliver_tools: ^0.2.12
flutter_adaptive_scaffold: ^0.1.8
flutter_adaptive_scaffold: ^0.3.1
upgrader: ^9.0.0
toastification: ^1.2.1
upgrader: ^11.3.0
toastification: ^2.3.0
version: ^3.0.2
posix: ^6.0.1
win32: ^5.2.0
qr_flutter: ^4.1.0
flutter_displaymode: ^0.6.0
flutter_loggy_dio: ^3.0.1
flutter_loggy_dio: ^3.1.0
dio_smart_retry: ^6.0.0
cupertino_http: ^1.3.0
wolt_modal_sheet: ^0.4.1
wolt_modal_sheet: ^0.9.3
dart_mappable: ^4.2.1
fluentui_system_icons: ^1.1.229
http: ^1.2.0
@@ -95,7 +97,7 @@ dependencies:
circle_flags:
git: https://github.com/hiddify-com/flutter_circle_flags.git
fixnum: ^1.1.0
grpc: ^3.2.2
grpc: ^4.0.1
protobuf: ^3.0.0
dynamic_color: ^1.7.0
@@ -104,24 +106,23 @@ dependencies:
simple_icons: ^10.1.3
basic_utils: 5.7.0
dev_dependencies:
flutter_test:
sdk: flutter
# flutter_test:
# sdk: flutter
lint: ^2.3.0
build_runner: ^2.4.8
build_web_compilers: ^4.0.11
build_runner: ^2.4.13
json_serializable: ^6.7.1
freezed: ^2.4.7
riverpod_generator: ^2.3.11
drift_dev: ^2.16.0
ffigen: ^8.0.2
riverpod_generator: ^2.4.3
drift_dev: ^2.21.0
ffigen: ^14.0.1
slang_build_runner: ^3.30.0
flutter_gen_runner: ^5.4.0
go_router_builder: ^2.4.1
dependency_validator: ^3.2.3
dependency_validator: ^4.1.1
dart_mappable_builder: ^4.2.1
# google_protobuf: ^3.20.1;
dependency_overrides:
# drift & package_info_plus are not compatible
web: ^1.0.0
flutter:
uses-material-design: true
+13319
View File
File diff suppressed because one or more lines are too long
BIN
View File
Binary file not shown.
@@ -9,7 +9,6 @@
#include <dynamic_color/dynamic_color_plugin_c_api.h>
#include <protocol_handler_windows/protocol_handler_windows_plugin_c_api.h>
#include <screen_retriever/screen_retriever_plugin.h>
#include <sentry_flutter/sentry_flutter_plugin.h>
#include <share_plus/share_plus_windows_plugin_c_api.h>
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
#include <tray_manager/tray_manager_plugin.h>
@@ -24,8 +23,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("ProtocolHandlerWindowsPluginCApi"));
ScreenRetrieverPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("ScreenRetrieverPlugin"));
SentryFlutterPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("SentryFlutterPlugin"));
SharePlusWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
Sqlite3FlutterLibsPluginRegisterWithRegistrar(
+1 -1
View File
@@ -6,7 +6,6 @@ list(APPEND FLUTTER_PLUGIN_LIST
dynamic_color
protocol_handler_windows
screen_retriever
sentry_flutter
share_plus
sqlite3_flutter_libs
tray_manager
@@ -16,6 +15,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST
sentry_flutter
)
set(PLUGIN_BUNDLED_LIBRARIES)