diff --git a/lib/bootstrap.dart b/lib/bootstrap.dart index 8b865fb3..0fff71b3 100644 --- a/lib/bootstrap.dart +++ b/lib/bootstrap.dart @@ -48,9 +48,7 @@ Future lazyBootstrap(WidgetsBinding widgetsBinding) async { await filesEditor.init(); initLoggers(container.read, debug); - _loggy.info( - "os: ${Platform.operatingSystem}(${Platform.operatingSystemVersion})", - ); + await container.read(runtimeDetailsServiceProvider).init(); _loggy.info("basic setup took [${_stopWatch.elapsedMilliseconds}]ms"); final silentStart = diff --git a/lib/data/data_providers.dart b/lib/data/data_providers.dart index d1e23cba..94057a07 100644 --- a/lib/data/data_providers.dart +++ b/lib/data/data_providers.dart @@ -23,7 +23,13 @@ SharedPreferences sharedPreferences(SharedPreferencesRef ref) => // TODO: set options for dio @Riverpod(keepAlive: true) -Dio dio(DioRef ref) => Dio(); +Dio dio(DioRef ref) => Dio( + BaseOptions( + headers: { + "User-Agent": ref.watch(runtimeDetailsServiceProvider).userAgent, + }, + ), + ); @Riverpod(keepAlive: true) ProfilesDao profilesDao(ProfilesDaoRef ref) => ProfilesDao( diff --git a/lib/services/runtime_details_service.dart b/lib/services/runtime_details_service.dart new file mode 100644 index 00000000..dc70fc6e --- /dev/null +++ b/lib/services/runtime_details_service.dart @@ -0,0 +1,24 @@ +import 'dart:io'; + +import 'package:hiddify/utils/utils.dart'; +import 'package:package_info_plus/package_info_plus.dart'; + +class RuntimeDetailsService with InfraLogger { + late final PackageInfo _packageInfo; + + String get appVersion => _packageInfo.version; + String get buildNumber => _packageInfo.buildNumber; + + late final String operatingSystem = Platform.operatingSystem; + late final String userAgent; + + Future init() async { + loggy.debug("initializing"); + _packageInfo = await PackageInfo.fromPlatform(); + userAgent = "HiddifyNext/$appVersion ($operatingSystem)"; + + loggy.info( + "os: [$operatingSystem](${Platform.operatingSystemVersion}), processor count [${Platform.numberOfProcessors}]", + ); + } +} diff --git a/lib/services/service_providers.dart b/lib/services/service_providers.dart index 31e38388..774b4c66 100644 --- a/lib/services/service_providers.dart +++ b/lib/services/service_providers.dart @@ -1,6 +1,7 @@ import 'package:hiddify/services/connectivity/connectivity.dart'; import 'package:hiddify/services/files_editor_service.dart'; import 'package:hiddify/services/notification/notification.dart'; +import 'package:hiddify/services/runtime_details_service.dart'; import 'package:hiddify/services/singbox/singbox_service.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; @@ -14,6 +15,10 @@ NotificationService notificationService(NotificationServiceRef ref) => FilesEditorService filesEditorService(FilesEditorServiceRef ref) => FilesEditorService(); +@Riverpod(keepAlive: true) +RuntimeDetailsService runtimeDetailsService(RuntimeDetailsServiceRef ref) => + RuntimeDetailsService(); + @Riverpod(keepAlive: true) SingboxService singboxService(SingboxServiceRef ref) => SingboxService();