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 - Fix WebSocket contemporary connection calls while disconnecting
✅ Added
- Export `StreamAttachmentFileUploader`.
🔄 Changed
- Deprecated `StreamChatClient.attachmentFileUploader`,
Use `StreamChatClient.attachmentFileUploaderProvider` instead.
## 4.3.0 ## 4.3.0
🐞 Fixed 🐞 Fixed
@@ -3,7 +3,6 @@ import 'dart:math';
import 'package:collection/collection.dart' import 'package:collection/collection.dart'
show IterableExtension, ListEquality; show IterableExtension, ListEquality;
import 'package:dio/dio.dart';
import 'package:rxdart/rxdart.dart'; import 'package:rxdart/rxdart.dart';
import 'package:stream_chat/src/client/retry_queue.dart'; import 'package:stream_chat/src/client/retry_queue.dart';
import 'package:stream_chat/src/core/util/utils.dart'; import 'package:stream_chat/src/core/util/utils.dart';
@@ -70,8 +70,15 @@ class StreamChatClient {
Duration receiveTimeout = const Duration(seconds: 6), Duration receiveTimeout = const Duration(seconds: 6),
StreamChatApi? chatApi, StreamChatApi? chatApi,
WebSocket? ws, 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'); logger.info('Initiating new StreamChatClient');
final options = StreamHttpClientOptions( final options = StreamHttpClientOptions(
@@ -81,13 +88,23 @@ class StreamChatClient {
headers: {'X-Stream-Client': defaultUserAgent}, 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 ?? _chatApi = chatApi ??
StreamChatApi( StreamChatApi(
apiKey, apiKey,
options: options, options: options,
tokenManager: _tokenManager, tokenManager: _tokenManager,
connectionIdManager: _connectionIdManager, connectionIdManager: _connectionIdManager,
attachmentFileUploader: attachmentFileUploader, attachmentFileUploaderProvider: fileUploaderProvider,
logger: detachedLogger('🕸️'), 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/http/stream_http_client.dart';
import 'package:stream_chat/src/core/models/attachment_file.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 /// Class responsible for uploading images and files to a given channel
abstract class AttachmentFileUploader { abstract class AttachmentFileUploader {
/// Uploads a [image] to the given channel. /// Uploads a [image] to the given channel.
@@ -22,9 +22,10 @@ class StreamChatApi {
StreamHttpClientOptions? options, StreamHttpClientOptions? options,
TokenManager? tokenManager, TokenManager? tokenManager,
ConnectionIdManager? connectionIdManager, ConnectionIdManager? connectionIdManager,
AttachmentFileUploader? attachmentFileUploader, AttachmentFileUploaderProvider? attachmentFileUploaderProvider,
Logger? logger, Logger? logger,
}) : _fileUploader = attachmentFileUploader, }) : _fileUploaderProvider =
attachmentFileUploaderProvider ?? StreamAttachmentFileUploader.new,
_client = client ?? _client = client ??
StreamHttpClient( StreamHttpClient(
apiKey, apiKey,
@@ -35,6 +36,7 @@ class StreamChatApi {
); );
final StreamHttpClient _client; final StreamHttpClient _client;
final AttachmentFileUploaderProvider _fileUploaderProvider;
UserApi? _user; UserApi? _user;
@@ -75,5 +77,5 @@ class StreamChatApi {
/// Class responsible for uploading images and files to a given channel /// Class responsible for uploading images and files to a given channel
AttachmentFileUploader get fileUploader => AttachmentFileUploader get fileUploader =>
_fileUploader ??= StreamAttachmentFileUploader(_client); _fileUploader ??= _fileUploaderProvider.call(_client);
} }
+3 -3
View File
@@ -1,6 +1,7 @@
library stream_chat; library stream_chat;
export 'package:async/async.dart'; export 'package:async/async.dart';
export 'package:dio/src/cancel_token.dart';
export 'package:dio/src/dio_error.dart'; export 'package:dio/src/dio_error.dart';
export 'package:dio/src/multipart_file.dart'; export 'package:dio/src/multipart_file.dart';
export 'package:dio/src/options.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:rate_limiter/rate_limiter.dart';
export 'package:uuid/uuid.dart'; export 'package:uuid/uuid.dart';
export './src/core/api/attachment_file_uploader.dart' 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/requests.dart'; export './src/core/api/requests.dart';
export './src/core/api/responses.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/requests.dart'; export 'src/core/api/requests.dart';
export 'src/core/api/responses.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/error/error.dart';
export 'src/core/models/action.dart'; export 'src/core/models/action.dart';
export 'src/core/models/attachment.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/guest_api.dart';
import 'package:stream_chat/src/core/api/message_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/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/api/user_api.dart';
import 'package:stream_chat/src/core/http/token.dart'; import 'package:stream_chat/src/core/http/token.dart';
import 'package:stream_chat/src/core/http/token_manager.dart'; import 'package:stream_chat/src/core/http/token_manager.dart';