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 70e44da62..0bb5094c6 100644 Binary files a/mobile/lib/providers/map/map_service.provider.g.dart and b/mobile/lib/providers/map/map_service.provider.g.dart differ diff --git a/mobile/lib/services/api.service.dart b/mobile/lib/services/api.service.dart index 92b077ef5..24bdccc04 100644 --- a/mobile/lib/services/api.service.dart +++ b/mobile/lib/services/api.service.dart @@ -10,6 +10,7 @@ import 'package:immich_mobile/entities/store.entity.dart'; import 'package:immich_mobile/utils/url_helper.dart'; import 'package:logging/logging.dart'; import 'package:openapi/api.dart'; +import 'package:immich_mobile/utils/user_agent.dart'; class ApiService implements Authentication { late ApiClient _apiClient; @@ -48,6 +49,7 @@ class ApiService implements Authentication { setEndpoint(String endpoint) { _apiClient = ApiClient(basePath: endpoint, authentication: this); + _setUserAgentHeader(); if (_accessToken != null) { setAccessToken(_accessToken!); } @@ -72,6 +74,11 @@ class ApiService implements Authentication { memoriesApi = MemoriesApi(_apiClient); } + Future _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}'; +}