feat: add support for external interceptors.
Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
@@ -73,6 +73,7 @@ class StreamChatClient {
|
||||
WebSocket? ws,
|
||||
AttachmentFileUploaderProvider attachmentFileUploaderProvider =
|
||||
StreamAttachmentFileUploader.new,
|
||||
Iterable<Interceptor>? chatApiInterceptors,
|
||||
}) {
|
||||
logger.info('Initiating new StreamChatClient');
|
||||
|
||||
@@ -91,6 +92,7 @@ class StreamChatClient {
|
||||
connectionIdManager: _connectionIdManager,
|
||||
attachmentFileUploaderProvider: attachmentFileUploaderProvider,
|
||||
logger: detachedLogger('🕸️'),
|
||||
interceptors: chatApiInterceptors,
|
||||
);
|
||||
|
||||
_ws = ws ??
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:stream_chat/src/core/api/attachment_file_uploader.dart';
|
||||
import 'package:stream_chat/src/core/api/call_api.dart';
|
||||
@@ -14,7 +15,7 @@ import 'package:stream_chat/src/core/http/token_manager.dart';
|
||||
|
||||
export 'device_api.dart' show PushProvider;
|
||||
|
||||
/// ApiClient that wraps every other specific api
|
||||
/// Api_client that wraps every other specific api
|
||||
class StreamChatApi {
|
||||
/// Initialize a new stream chat api
|
||||
StreamChatApi(
|
||||
@@ -26,6 +27,7 @@ class StreamChatApi {
|
||||
AttachmentFileUploaderProvider attachmentFileUploaderProvider =
|
||||
StreamAttachmentFileUploader.new,
|
||||
Logger? logger,
|
||||
Iterable<Interceptor>? interceptors,
|
||||
}) : _fileUploaderProvider = attachmentFileUploaderProvider,
|
||||
_client = client ??
|
||||
StreamHttpClient(
|
||||
@@ -34,6 +36,7 @@ class StreamChatApi {
|
||||
tokenManager: tokenManager,
|
||||
connectionIdManager: connectionIdManager,
|
||||
logger: logger,
|
||||
interceptors: interceptors,
|
||||
);
|
||||
|
||||
final StreamHttpClient _client;
|
||||
|
||||
@@ -25,6 +25,7 @@ class StreamHttpClient {
|
||||
TokenManager? tokenManager,
|
||||
ConnectionIdManager? connectionIdManager,
|
||||
Logger? logger,
|
||||
Iterable<Interceptor>? interceptors,
|
||||
}) : _options = options ?? const StreamHttpClientOptions(),
|
||||
httpClient = dio ?? Dio() {
|
||||
httpClient
|
||||
@@ -45,20 +46,25 @@ class StreamHttpClient {
|
||||
if (tokenManager != null) AuthInterceptor(this, tokenManager),
|
||||
if (connectionIdManager != null)
|
||||
ConnectionIdInterceptor(connectionIdManager),
|
||||
if (logger != null && logger.level != Level.OFF)
|
||||
LoggingInterceptor(
|
||||
requestHeader: true,
|
||||
logPrint: (step, message) {
|
||||
switch (step) {
|
||||
case InterceptStep.request:
|
||||
return logger.info(message);
|
||||
case InterceptStep.response:
|
||||
return logger.info(message);
|
||||
case InterceptStep.error:
|
||||
return logger.severe(message);
|
||||
}
|
||||
},
|
||||
),
|
||||
...interceptors ??
|
||||
[
|
||||
// Add a default logging interceptor if no interceptors are
|
||||
// provided.
|
||||
if (logger != null && logger.level != Level.OFF)
|
||||
LoggingInterceptor(
|
||||
requestHeader: true,
|
||||
logPrint: (step, message) {
|
||||
switch (step) {
|
||||
case InterceptStep.request:
|
||||
return logger.info(message);
|
||||
case InterceptStep.response:
|
||||
return logger.info(message);
|
||||
case InterceptStep.error:
|
||||
return logger.severe(message);
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user