Skip to content

Commit f58d439

Browse files
committed
core: Determine User-Agent using package_info_plus package
1 parent 431015a commit f58d439

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

lib/api/core.dart

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import 'dart:convert';
22
import 'dart:io';
33

4+
import 'package:device_info_plus/device_info_plus.dart';
45
import 'package:http/http.dart' as http;
6+
import 'package:package_info_plus/package_info_plus.dart';
57

68
import '../log.dart';
79
import '../model/localizations.dart';
@@ -69,8 +71,24 @@ class ApiConnection {
6971
}
7072
}
7173

72-
void addUserAgent(http.BaseRequest request) {
73-
request.headers['User-Agent'] = 'ZulipMobile/?.?.? (Android 14)';
74+
Future<void> addUserAgent(http.BaseRequest request) async {
75+
final packageInfo = await PackageInfo.fromPlatform();
76+
final String applicationVersion = packageInfo.version;
77+
final String systemName;
78+
final String systemVersion;
79+
final deviceInfo = await DeviceInfoPlugin().deviceInfo;
80+
switch (deviceInfo) {
81+
case IosDeviceInfo():
82+
systemName = deviceInfo.systemName;
83+
systemVersion = deviceInfo.systemVersion;
84+
case AndroidDeviceInfo():
85+
systemName = "Android";
86+
systemVersion = deviceInfo.version.release;
87+
default:
88+
systemName = "Desktop";
89+
systemVersion = "?";
90+
}
91+
request.headers['User-Agent'] = 'ZulipMobile/$applicationVersion ($systemName $systemVersion)';
7492
}
7593

7694
final http.Client _client;
@@ -84,7 +102,7 @@ class ApiConnection {
84102
assert(debugLog("${request.method} ${request.url}"));
85103

86104
addAuth(request);
87-
addUserAgent(request);
105+
await addUserAgent(request);
88106

89107
final http.StreamedResponse response;
90108
try {

0 commit comments

Comments
 (0)