1
- // ignore_for_file: unnecessary_getters_setters
2
-
3
1
import 'dart:async' ;
4
2
5
3
import 'package:dio/dio.dart' ;
@@ -14,6 +12,7 @@ import 'package:stream_chat/src/core/api/stream_chat_api.dart';
14
12
import 'package:stream_chat/src/core/error/error.dart' ;
15
13
import 'package:stream_chat/src/core/http/connection_id_manager.dart' ;
16
14
import 'package:stream_chat/src/core/http/stream_http_client.dart' ;
15
+ import 'package:stream_chat/src/core/http/system_environment_manager.dart' ;
17
16
import 'package:stream_chat/src/core/http/token.dart' ;
18
17
import 'package:stream_chat/src/core/http/token_manager.dart' ;
19
18
import 'package:stream_chat/src/core/models/attachment_file.dart' ;
@@ -27,10 +26,10 @@ import 'package:stream_chat/src/core/models/poll.dart';
27
26
import 'package:stream_chat/src/core/models/poll_option.dart' ;
28
27
import 'package:stream_chat/src/core/models/poll_vote.dart' ;
29
28
import 'package:stream_chat/src/core/models/user.dart' ;
30
- import 'package:stream_chat/src/core/platform_detector/platform_detector.dart' ;
31
29
import 'package:stream_chat/src/core/util/utils.dart' ;
32
30
import 'package:stream_chat/src/db/chat_persistence_client.dart' ;
33
31
import 'package:stream_chat/src/event_type.dart' ;
32
+ import 'package:stream_chat/src/system_environment.dart' ;
34
33
import 'package:stream_chat/src/ws/connection_status.dart' ;
35
34
import 'package:stream_chat/src/ws/websocket.dart' ;
36
35
import 'package:stream_chat/version.dart' ;
@@ -85,7 +84,6 @@ class StreamChatClient {
85
84
baseUrl: baseURL,
86
85
connectTimeout: connectTimeout,
87
86
receiveTimeout: receiveTimeout,
88
- headers: {'X-Stream-Client' : defaultUserAgent},
89
87
);
90
88
91
89
_chatApi = chatApi ??
@@ -94,6 +92,7 @@ class StreamChatClient {
94
92
options: options,
95
93
tokenManager: _tokenManager,
96
94
connectionIdManager: _connectionIdManager,
95
+ systemEnvironmentManager: _systemEnvironmentManager,
97
96
attachmentFileUploaderProvider: attachmentFileUploaderProvider,
98
97
logger: detachedLogger ('🕸️' ),
99
98
interceptors: chatApiInterceptors,
@@ -105,11 +104,9 @@ class StreamChatClient {
105
104
apiKey: apiKey,
106
105
baseUrl: baseWsUrl ?? options.baseUrl,
107
106
tokenManager: _tokenManager,
107
+ systemEnvironmentManager: _systemEnvironmentManager,
108
108
handler: handleEvent,
109
109
logger: detachedLogger ('🔌' ),
110
- queryParameters: {
111
- 'X-Stream-Client' : '$defaultUserAgent -$packageVersion ' ,
112
- },
113
110
);
114
111
115
112
_retryPolicy = retryPolicy ??
@@ -130,10 +127,31 @@ class StreamChatClient {
130
127
131
128
final _tokenManager = TokenManager ();
132
129
final _connectionIdManager = ConnectionIdManager ();
130
+ static final _systemEnvironmentManager = SystemEnvironmentManager ();
131
+
132
+ /// Updates the system environment information used by the client.
133
+ ///
134
+ /// It allows you to set environment-specific information that will be
135
+ /// included in API requests, such as the application name, platform details,
136
+ /// and version information.
137
+ ///
138
+ /// Example:
139
+ /// ```dart
140
+ /// client.updateSystemEnvironment(
141
+ /// SystemEnvironment(
142
+ /// name: 'my_app',
143
+ /// version: '1.0.0',
144
+ /// ),
145
+ /// );
146
+ /// ```
147
+ ///
148
+ /// See [SystemEnvironment] for more information on the available fields.
149
+ void updateSystemEnvironment (SystemEnvironment environment) {
150
+ _systemEnvironmentManager.updateEnvironment (environment);
151
+ }
133
152
134
153
/// Default user agent for all requests
135
- static String defaultUserAgent =
136
- 'stream-chat-dart-client-${CurrentPlatform .name }' ;
154
+ static String defaultUserAgent = _systemEnvironmentManager.userAgent;
137
155
138
156
/// Additional headers for all requests
139
157
static Map <String , Object ?> additionalHeaders = {};
0 commit comments