Change initialization and logging

This commit is contained in:
problematicconsumer
2023-12-22 14:16:24 +03:30
parent defca7de5e
commit 6219663a4c
22 changed files with 409 additions and 277 deletions

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:hiddify/core/analytics/analytics_controller.dart';
import 'package:hiddify/core/localization/locale_extensions.dart';
import 'package:hiddify/core/localization/locale_preferences.dart';
import 'package:hiddify/core/localization/translations.dart';
@@ -103,7 +104,7 @@ class EnableAnalyticsPrefTile extends HookConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) {
final t = ref.watch(translationsProvider);
final autoReport = ref.watch(enableAnalyticsProvider);
final autoReport = ref.watch(analyticsControllerProvider);
return SwitchListTile(
title: Text(t.settings.general.enableAnalytics),
@@ -117,7 +118,15 @@ class EnableAnalyticsPrefTile extends HookConsumerWidget {
if (onChanged != null) {
return onChanged!(value);
}
return ref.read(enableAnalyticsProvider.notifier).update(value);
if (autoReport) {
await ref
.read(analyticsControllerProvider.notifier)
.disableAnalytics();
} else {
await ref
.read(analyticsControllerProvider.notifier)
.enableAnalytics();
}
},
);
}

View File

@@ -1,9 +1,9 @@
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/geo_asset/data/geo_asset_data_providers.dart';
import 'package:hiddify/features/profile/data/profile_data_providers.dart';
import 'package:hiddify/services/service_providers.dart';
import 'package:hiddify/singbox/service/singbox_service_provider.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -14,7 +14,7 @@ ConnectionRepository connectionRepository(
ConnectionRepositoryRef ref,
) {
return ConnectionRepositoryImpl(
directories: ref.watch(filesEditorServiceProvider).dirs,
directories: ref.watch(appDirectoriesProvider).requireValue,
configOptionRepository: ref.watch(configOptionRepositoryProvider),
singbox: ref.watch(singboxServiceProvider),
platformSource: ConnectionPlatformSourceImpl(),

View File

@@ -1,9 +1,9 @@
import 'package:hiddify/core/database/database_provider.dart';
import 'package:hiddify/core/directories/directories_provider.dart';
import 'package:hiddify/core/http_client/http_client_provider.dart';
import 'package:hiddify/features/geo_asset/data/geo_asset_data_source.dart';
import 'package:hiddify/features/geo_asset/data/geo_asset_path_resolver.dart';
import 'package:hiddify/features/geo_asset/data/geo_asset_repository.dart';
import 'package:hiddify/services/service_providers.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'geo_asset_data_providers.g.dart';
@@ -27,6 +27,6 @@ GeoAssetDataSource geoAssetDataSource(GeoAssetDataSourceRef ref) {
@Riverpod(keepAlive: true)
GeoAssetPathResolver geoAssetPathResolver(GeoAssetPathResolverRef ref) {
return GeoAssetPathResolver(
ref.watch(filesEditorServiceProvider).dirs.workingDir,
ref.watch(appDirectoriesProvider).requireValue.workingDir,
);
}

View File

@@ -2,6 +2,7 @@ import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:gap/gap.dart';
import 'package:hiddify/core/analytics/analytics_controller.dart';
import 'package:hiddify/core/localization/translations.dart';
import 'package:hiddify/core/model/constants.dart';
import 'package:hiddify/core/preferences/general_preferences.dart';
@@ -9,7 +10,6 @@ import 'package:hiddify/features/common/general_pref_tiles.dart';
import 'package:hiddify/gen/assets.gen.dart';
import 'package:hiddify/utils/utils.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'package:sliver_tools/sliver_tools.dart';
class IntroPage extends HookConsumerWidget with PresLogger {
@@ -73,10 +73,12 @@ class IntroPage extends HookConsumerWidget with PresLogger {
onPressed: () async {
if (isStarting.value) return;
isStarting.value = true;
if (!ref.read(enableAnalyticsProvider)) {
if (!ref.read(analyticsControllerProvider)) {
loggy.info("disabling analytics per user request");
try {
await Sentry.close();
await ref
.read(analyticsControllerProvider.notifier)
.disableAnalytics();
} catch (error, stackTrace) {
loggy.error(
"could not disable analytics",

View File

@@ -1,6 +1,6 @@
import 'package:hiddify/core/directories/directories_provider.dart';
import 'package:hiddify/features/log/data/log_path_resolver.dart';
import 'package:hiddify/features/log/data/log_repository.dart';
import 'package:hiddify/services/service_providers.dart';
import 'package:hiddify/singbox/service/singbox_service_provider.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -19,6 +19,6 @@ Future<LogRepository> logRepository(LogRepositoryRef ref) async {
@Riverpod(keepAlive: true)
LogPathResolver logPathResolver(LogPathResolverRef ref) {
return LogPathResolver(
ref.watch(filesEditorServiceProvider).dirs.workingDir,
ref.watch(appDirectoriesProvider).requireValue.workingDir,
);
}

View File

@@ -1,9 +1,9 @@
import 'package:hiddify/core/database/database_provider.dart';
import 'package:hiddify/core/directories/directories_provider.dart';
import 'package:hiddify/core/http_client/http_client_provider.dart';
import 'package:hiddify/features/profile/data/profile_data_source.dart';
import 'package:hiddify/features/profile/data/profile_path_resolver.dart';
import 'package:hiddify/features/profile/data/profile_repository.dart';
import 'package:hiddify/services/service_providers.dart';
import 'package:hiddify/singbox/service/singbox_service_provider.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -29,6 +29,6 @@ ProfileDataSource profileDataSource(ProfileDataSourceRef ref) {
@Riverpod(keepAlive: true)
ProfilePathResolver profilePathResolver(ProfilePathResolverRef ref) {
return ProfilePathResolver(
ref.watch(filesEditorServiceProvider).dirs.workingDir,
ref.watch(appDirectoriesProvider).requireValue.workingDir,
);
}

View File

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:gap/gap.dart';
import 'package:hiddify/core/app_info/app_info_provider.dart';
import 'package:hiddify/core/directories/directories_provider.dart';
import 'package:hiddify/core/localization/translations.dart';
import 'package:hiddify/core/model/constants.dart';
import 'package:hiddify/core/model/failures.dart';
@@ -10,7 +11,6 @@ import 'package:hiddify/features/app_update/notifier/app_update_state.dart';
import 'package:hiddify/features/app_update/widget/new_version_dialog.dart';
import 'package:hiddify/features/common/nested_app_bar.dart';
import 'package:hiddify/gen/assets.gen.dart';
import 'package:hiddify/services/service_providers.dart';
import 'package:hiddify/utils/utils.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
@@ -65,7 +65,8 @@ class AboutPage extends HookConsumerWidget {
title: Text(t.settings.general.openWorkingDir),
trailing: const Icon(Icons.arrow_outward_outlined),
onTap: () async {
final path = ref.read(filesEditorServiceProvider).workingDir.uri;
final path =
ref.watch(appDirectoriesProvider).requireValue.workingDir.uri;
await UriUtils.tryLaunch(path);
},
),

View File

@@ -23,28 +23,7 @@ class GeneralSettingTiles extends HookConsumerWidget {
return Column(
children: [
const LocalePrefTile(),
EnableAnalyticsPrefTile(
onChanged: (value) async {
await showDialog<bool>(
context: context,
builder: (context) {
return AlertDialog(
title: Text(t.settings.general.enableAnalytics),
content: Text(t.settings.requiresRestartMsg),
actions: [
TextButton(
onPressed: () => context.pop(true),
child: Text(
MaterialLocalizations.of(context).okButtonLabel,
),
),
],
);
},
);
return ref.read(enableAnalyticsProvider.notifier).update(value);
},
),
const EnableAnalyticsPrefTile(),
ListTile(
title: Text(t.settings.general.themeMode),
subtitle: Text(themeMode.present(t)),