From c61ea483ba8f90966cedc8d6d0b6c27a833b03e4 Mon Sep 17 00:00:00 2001 From: Zack Pollard Date: Thu, 22 May 2025 16:35:24 +0100 Subject: [PATCH] fix: mobile user agent set to immich_platform_version (#18478) * fix: mobile user agent * refactor: typo in MapService --- mobile/.fvmrc | 2 +- mobile/.vscode/settings.json | 2 +- .../lib/providers/map/map_service.provider.dart | 2 +- .../providers/map/map_service.provider.g.dart | Bin 999 -> 999 bytes mobile/lib/services/api.service.dart | 7 +++++++ mobile/lib/services/map.service.dart | 13 +++++++++++-- mobile/lib/utils/user_agent.dart | 15 +++++++++++++++ 7 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 mobile/lib/utils/user_agent.dart diff --git a/mobile/.fvmrc b/mobile/.fvmrc index 07470f9ca..b987073ac 100644 --- a/mobile/.fvmrc +++ b/mobile/.fvmrc @@ -1,3 +1,3 @@ { "flutter": "3.29.3" -} +} \ No newline at end of file diff --git a/mobile/.vscode/settings.json b/mobile/.vscode/settings.json index ceaf9a6ab..9c5244f09 100644 --- a/mobile/.vscode/settings.json +++ b/mobile/.vscode/settings.json @@ -1,5 +1,5 @@ { - "dart.flutterSdkPath": ".fvm/versions/3.24.3", + "dart.flutterSdkPath": ".fvm/versions/3.29.3", "search.exclude": { "**/.fvm": true }, diff --git a/mobile/lib/providers/map/map_service.provider.dart b/mobile/lib/providers/map/map_service.provider.dart index 0d998c517..4ae199789 100644 --- a/mobile/lib/providers/map/map_service.provider.dart +++ b/mobile/lib/providers/map/map_service.provider.dart @@ -6,4 +6,4 @@ import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'map_service.provider.g.dart'; @riverpod -MapSerivce mapService(Ref ref) => MapSerivce(ref.watch(apiServiceProvider)); +MapService mapService(Ref ref) => MapService(ref.watch(apiServiceProvider)); diff --git a/mobile/lib/providers/map/map_service.provider.g.dart b/mobile/lib/providers/map/map_service.provider.g.dart index 70e44da621dce58e163250e6ba9ac777f0c30a1c..0bb5094c615f376896d3246738c5fa32c43c4e09 100644 GIT binary patch delta 67 zcmaFP{+xY-5~D_1TCzo&u|<-(k(q&ov5Bcsl4VMok+E57im8RAfw6_TrLl>HrG@!q VFUDM^vdqmp88aDy^kfz0!vL2r6KMbd delta 67 zcmaFP{+xY-5~GHBl95?ba*C0$VQPx0xsgR;vZ-NOs)3 _setUserAgentHeader() async { + final userAgent = await getUserAgentString(); + _apiClient.addDefaultHeader('User-Agent', userAgent); + } + Future resolveAndSetEndpoint(String serverUrl) async { final endpoint = await resolveEndpoint(serverUrl); setEndpoint(endpoint); diff --git a/mobile/lib/services/map.service.dart b/mobile/lib/services/map.service.dart index 26a074641..2d236f77e 100644 --- a/mobile/lib/services/map.service.dart +++ b/mobile/lib/services/map.service.dart @@ -2,13 +2,22 @@ import 'package:immich_mobile/mixins/error_logger.mixin.dart'; import 'package:immich_mobile/models/map/map_marker.model.dart'; import 'package:immich_mobile/services/api.service.dart'; import 'package:logging/logging.dart'; +import 'package:maplibre_gl/maplibre_gl.dart'; +import 'package:immich_mobile/utils/user_agent.dart'; -class MapSerivce with ErrorLoggerMixin { +class MapService with ErrorLoggerMixin { final ApiService _apiService; @override final logger = Logger("MapService"); - MapSerivce(this._apiService); + MapService(this._apiService) { + _setMapUserAgentHeader(); + } + + Future _setMapUserAgentHeader() async { + final userAgent = await getUserAgentString(); + setHttpHeaders({'User-Agent': userAgent}); + } Future> getMapMarkers({ bool? isFavorite, diff --git a/mobile/lib/utils/user_agent.dart b/mobile/lib/utils/user_agent.dart new file mode 100644 index 000000000..232bcaec3 --- /dev/null +++ b/mobile/lib/utils/user_agent.dart @@ -0,0 +1,15 @@ +import 'dart:io' show Platform; +import 'package:package_info_plus/package_info_plus.dart'; + +Future getUserAgentString() async { + final packageInfo = await PackageInfo.fromPlatform(); + String platform; + if (Platform.isAndroid) { + platform = 'Android'; + } else if (Platform.isIOS) { + platform = 'iOS'; + } else { + platform = 'Unknown'; + } + return 'Immich_${platform}_${packageInfo.version}'; +}