1
1
import 'dart:convert' ;
2
2
import 'dart:io' ;
3
3
4
+ import 'package:device_info_plus/device_info_plus.dart' ;
4
5
import 'package:http/http.dart' as http;
6
+ import 'package:package_info_plus/package_info_plus.dart' ;
5
7
6
8
import '../log.dart' ;
7
9
import '../model/localizations.dart' ;
@@ -69,8 +71,24 @@ class ApiConnection {
69
71
}
70
72
}
71
73
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 )' ;
74
92
}
75
93
76
94
final http.Client _client;
@@ -84,7 +102,7 @@ class ApiConnection {
84
102
assert (debugLog ("${request .method } ${request .url }" ));
85
103
86
104
addAuth (request);
87
- addUserAgent (request);
105
+ await addUserAgent (request);
88
106
89
107
final http.StreamedResponse response;
90
108
try {
0 commit comments