feat(llc): add support for AttachmentFileUploaderProvider. (#1246)

* feat(llc): add support for `AttachmentFileUploaderProvider`.

Signed-off-by: xsahil03x <[email protected]>

* chore(llc): update CHANGELOG.md

Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
Sahil Kumar
2022-07-06 14:43:15 +02:00
committed by GitHub
parent a37bf2bde4
commit dd47db04dd
7 changed files with 42 additions and 11 deletions
+9
View File
@@ -4,6 +4,15 @@
- Fix WebSocket contemporary connection calls while disconnecting
✅ Added
- Export `StreamAttachmentFileUploader`.
🔄 Changed
- Deprecated `StreamChatClient.attachmentFileUploader`,
Use `StreamChatClient.attachmentFileUploaderProvider` instead.
## 4.3.0
🐞 Fixed
@@ -3,7 +3,6 @@ import 'dart:math';
import 'package:collection/collection.dart'
show IterableExtension, ListEquality;
import 'package:dio/dio.dart';
import 'package:rxdart/rxdart.dart';
import 'package:stream_chat/src/client/retry_queue.dart';
import 'package:stream_chat/src/core/util/utils.dart';
@@ -70,8 +70,15 @@ class StreamChatClient {
Duration receiveTimeout = const Duration(seconds: 6),
StreamChatApi? chatApi,
WebSocket? ws,
AttachmentFileUploader? attachmentFileUploader,
}) {
@Deprecated('Use [attachmentFileUploaderProvider] instead')
AttachmentFileUploader? attachmentFileUploader,
AttachmentFileUploaderProvider? attachmentFileUploaderProvider,
}) : assert(
attachmentFileUploader == null ||
attachmentFileUploaderProvider == null,
'You can only use one of [attachmentFileUploader] '
'or [attachmentFileUploaderProvider]',
) {
logger.info('Initiating new StreamChatClient');
final options = StreamHttpClientOptions(
@@ -81,13 +88,23 @@ class StreamChatClient {
headers: {'X-Stream-Client': defaultUserAgent},
);
// TODO: simplify this once we remove the deprecated field.
final AttachmentFileUploaderProvider fileUploaderProvider;
if (attachmentFileUploaderProvider != null) {
fileUploaderProvider = attachmentFileUploaderProvider;
} else if (attachmentFileUploader != null) {
fileUploaderProvider = (httpClient) => attachmentFileUploader;
} else {
fileUploaderProvider = StreamAttachmentFileUploader.new;
}
_chatApi = chatApi ??
StreamChatApi(
apiKey,
options: options,
tokenManager: _tokenManager,
connectionIdManager: _connectionIdManager,
attachmentFileUploader: attachmentFileUploader,
attachmentFileUploaderProvider: fileUploaderProvider,
logger: detachedLogger('🕸️'),
);
@@ -3,6 +3,11 @@ import 'package:stream_chat/src/core/api/responses.dart';
import 'package:stream_chat/src/core/http/stream_http_client.dart';
import 'package:stream_chat/src/core/models/attachment_file.dart';
/// Signature for a function which provides instance of [AttachmentFileUploader]
typedef AttachmentFileUploaderProvider = AttachmentFileUploader Function(
StreamHttpClient httpClient,
);
/// Class responsible for uploading images and files to a given channel
abstract class AttachmentFileUploader {
/// Uploads a [image] to the given channel.
@@ -22,9 +22,10 @@ class StreamChatApi {
StreamHttpClientOptions? options,
TokenManager? tokenManager,
ConnectionIdManager? connectionIdManager,
AttachmentFileUploader? attachmentFileUploader,
AttachmentFileUploaderProvider? attachmentFileUploaderProvider,
Logger? logger,
}) : _fileUploader = attachmentFileUploader,
}) : _fileUploaderProvider =
attachmentFileUploaderProvider ?? StreamAttachmentFileUploader.new,
_client = client ??
StreamHttpClient(
apiKey,
@@ -35,6 +36,7 @@ class StreamChatApi {
);
final StreamHttpClient _client;
final AttachmentFileUploaderProvider _fileUploaderProvider;
UserApi? _user;
@@ -75,5 +77,5 @@ class StreamChatApi {
/// Class responsible for uploading images and files to a given channel
AttachmentFileUploader get fileUploader =>
_fileUploader ??= StreamAttachmentFileUploader(_client);
_fileUploader ??= _fileUploaderProvider.call(_client);
}
+3 -3
View File
@@ -1,6 +1,7 @@
library stream_chat;
export 'package:async/async.dart';
export 'package:dio/src/cancel_token.dart';
export 'package:dio/src/dio_error.dart';
export 'package:dio/src/multipart_file.dart';
export 'package:dio/src/options.dart';
@@ -9,8 +10,7 @@ export 'package:logging/logging.dart' show Logger, Level, LogRecord;
export 'package:rate_limiter/rate_limiter.dart';
export 'package:uuid/uuid.dart';
export './src/core/api/attachment_file_uploader.dart'
show AttachmentFileUploader;
export './src/core/api/attachment_file_uploader.dart';
export './src/core/api/requests.dart';
export './src/core/api/requests.dart';
export './src/core/api/responses.dart';
@@ -44,7 +44,7 @@ export 'src/core/api/attachment_file_uploader.dart' show AttachmentFileUploader;
export 'src/core/api/requests.dart';
export 'src/core/api/requests.dart';
export 'src/core/api/responses.dart';
export 'src/core/api/stream_chat_api.dart' show PushProvider;
export 'src/core/api/stream_chat_api.dart';
export 'src/core/error/error.dart';
export 'src/core/models/action.dart';
export 'src/core/models/attachment.dart';
-1
View File
@@ -8,7 +8,6 @@ import 'package:stream_chat/src/core/api/general_api.dart';
import 'package:stream_chat/src/core/api/guest_api.dart';
import 'package:stream_chat/src/core/api/message_api.dart';
import 'package:stream_chat/src/core/api/moderation_api.dart';
import 'package:stream_chat/src/core/api/stream_chat_api.dart';
import 'package:stream_chat/src/core/api/user_api.dart';
import 'package:stream_chat/src/core/http/token.dart';
import 'package:stream_chat/src/core/http/token_manager.dart';